|
|
function BigInteger(e,t,n){null!=e&&("number"==typeof e?this.fromNumber(e,t,n):null==t&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function nbi(){return new BigInteger(null)}function am1(e,t,n,i,a,o){for(;--o>=0;){var r=t*this[e++]+n[i]+a;a=Math.floor(r/67108864),n[i++]=67108863&r}return a}function am2(e,t,n,i,a,o){for(var r=32767&t,s=t>>15;--o>=0;){var l=32767&this[e],c=this[e++]>>15,d=s*l+c*r;l=r*l+((32767&d)<<15)+n[i]+(1073741823&a),a=(l>>>30)+(d>>>15)+s*c+(a>>>30),n[i++]=1073741823&l}return a}function am3(e,t,n,i,a,o){for(var r=16383&t,s=t>>14;--o>=0;){var l=16383&this[e],c=this[e++]>>14,d=s*l+c*r;l=r*l+((16383&d)<<14)+n[i]+a,a=(l>>28)+(d>>14)+s*c,n[i++]=268435455&l}return a}function int2char(e){return BI_RM.charAt(e)}function intAt(e,t){var n=BI_RC[e.charCodeAt(t)];return null==n?-1:n}function bnpCopyTo(e){for(var t=this.t-1;t>=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s}function bnpFromInt(e){this.t=1,this.s=0>e?-1:0,e>0?this[0]=e:-1>e?this[0]=e+this.DV:this.t=0}function nbv(e){var t=nbi();return t.fromInt(e),t}function bnpFromString(e,t,n){var i;if(16==t)i=4;else if(8==t)i=3;else if(256==t)i=8;else if(2==t)i=1;else if(32==t)i=5;else{if(4!=t)return void this.fromRadix(e,t);i=2}this.t=0,this.s=0;for(var a=e.length,o=!1,r=0;--a>=0;){var s=8==i?255&e[a]:intAt(e,a);0>s?"-"==e.charAt(a)&&(o=!0):(o=!1,0==r?this[this.t++]=s:r+i>this.DB?(this[this.t-1]|=(s&(1<<this.DB-r)-1)<<r,this[this.t++]=s>>this.DB-r):this[this.t-1]|=s<<r,r+=i,r>=this.DB&&(r-=this.DB))}8==i&&0!=(128&e[0])&&n&&(this.s=-1,r>0&&(this[this.t-1]|=(1<<this.DB-r)-1<<r)),this.clamp(),o&&BigInteger.ZERO.subTo(this,this)}function bnpClamp(){for(var e=this.s&this.DM;this.t>0&&this[this.t-1]==e;)--this.t}function bnToString(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var n,i=(1<<t)-1,a=!1,o="",r=this.t,s=this.DB-r*this.DB%t;if(r-->0)for(s<this.DB&&(n=this[r]>>s)>0&&(a=!0,o=int2char(n));r>=0;)t>s?(n=(this[r]&(1<<s)-1)<<t-s,n|=this[--r]>>(s+=this.DB-t)):(n=this[r]>>(s-=t)&i,0>=s&&(s+=this.DB,--r)),n>0&&(a=!0),a&&(o+=int2char(n));return a?o:"0"}function bnNegate(){var e=nbi();return BigInteger.ZERO.subTo(this,e),e}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(e){var t=this.s-e.s;if(0!=t)return t;var n=this.t;if(t=n-e.t,0!=t)return this.s<0?-t:t;for(;--n>=0;)if(0!=(t=this[n]-e[n]))return t;return 0}function nbits(e){var t,n=1;return 0!=(t=e>>>16)&&(e=t,n+=16),0!=(t=e>>8)&&(e=t,n+=8),0!=(t=e>>4)&&(e=t,n+=4),0!=(t=e>>2)&&(e=t,n+=2),0!=(t=e>>1)&&(e=t,n+=1),n}function bnBitLength(){return this.t<=0?0:this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(e,t){var n;for(n=this.t-1;n>=0;--n)t[n+e]=this[n];for(n=e-1;n>=0;--n)t[n]=0;t.t=this.t+e,t.s=this.s}function bnpDRShiftTo(e,t){for(var n=e;n<this.t;++n)t[n-e]=this[n];t.t=Math.max(this.t-e,0),t.s=this.s}function bnpLShiftTo(e,t){var n,i=e%this.DB,a=this.DB-i,o=(1<<a)-1,r=Math.floor(e/this.DB),s=this.s<<i&this.DM;for(n=this.t-1;n>=0;--n)t[n+r+1]=this[n]>>a|s,s=(this[n]&o)<<i;for(n=r-1;n>=0;--n)t[n]=0;t[r]=s,t.t=this.t+r+1,t.s=this.s,t.clamp()}function bnpRShiftTo(e,t){t.s=this.s;var n=Math.floor(e/this.DB);if(n>=this.t)return void(t.t=0);var i=e%this.DB,a=this.DB-i,o=(1<<i)-1;t[0]=this[n]>>i;for(var r=n+1;r<this.t;++r)t[r-n-1]|=(this[r]&o)<<a,t[r-n]=this[r]>>i;i>0&&(t[this.t-n-1]|=(this.s&o)<<a),t.t=this.t-n,t.clamp()}function bnpSubTo(e,t){for(var n=0,i=0,a=Math.min(e.t,this.t);a>n;)i+=this[n]-e[n],t[n++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i-=e.s;n<this.t;)i+=this[n],t[n++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;n<e.t;)i-=e[n],t[n++]=i&this.DM,i>>=this.DB;i-=e.s}t.s=0>i?-1:0,-1>i?t[n++]=this.DV+i:i>0&&(t[n++]=i),t.t=n,t.clamp()}function bnpMultiplyTo(e,t){var n=this.abs(),i=e.abs(),a=n.t;for(t.t=a+i.t;--a>=0;)t[a]=0;for(a=0;a<i.t;++a)t[a+n.t]=n.am(0,i[a],t,a,0,n.t);t.s=0,t.clamp(),this.s!=e.s&&BigInteger.ZERO.subTo(t,t)}function bnpSquareTo(e){for(var t=this.abs(),n=e.t=2*t.t;--n>=0;)e[n]=0;for(n=0;n<t.t-1;++n){var i=t.am(n,t[n],e,2*n,0,1);(e[n+t.t]+=t.am(n+1,2*t[n],e,2*n+1,i,t.t-n-1))>=t.DV&&(e[n+t.t]-=t.DV,e[n+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(n,t[n],e,2*n,0,1)),e.s=0,e.clamp()}function bnpDivRemTo(e,t,n){var i=e.abs();if(!(i.t<=0)){var a=this.abs();if(a.t<i.t)return null!=t&&t.fromInt(0),void(null!=n&&this.copyTo(n));null==n&&(n=nbi());var o=nbi(),r=this.s,s=e.s,l=this.DB-nbits(i[i.t-1]);l>0?(i.lShiftTo(l,o),a.lShiftTo(l,n)):(i.copyTo(o),a.copyTo(n));var c=o.t,d=o[c-1];if(0!=d){var u=d*(1<<this.F1)+(c>1?o[c-2]>>this.F2:0),p=this.FV/u,m=(1<<this.F1)/u,h=1<<this.F2,f=n.t,g=f-c,_=null==t?nbi():t;for(o.dlShiftTo(g,_),n.compareTo(_)>=0&&(n[n.t++]=1,n.subTo(_,n)),BigInteger.ONE.dlShiftTo(c,_),_.subTo(o,o);o.t<c;)o[o.t++]=0;for(;--g>=0;){var y=n[--f]==d?this.DM:Math.floor(n[f]*p+(n[f-1]+h)*m);if((n[f]+=o.am(0,y,n,g,0,c))<y)for(o.dlShiftTo(g,_),n.subTo(_,n);n[f]<--y;)n.subTo(_,n)}null!=t&&(n.drShiftTo(c,t),r!=s&&BigInteger.ZERO.subTo(t,t)),n.t=c,n.clamp(),l>0&&n.rShiftTo(l,n),0>r&&BigInteger.ZERO.subTo(n,n)}}}function bnMod(e){var t=nbi();return this.abs().divRemTo(e,null,t),this.s<0&&t.compareTo(BigInteger.ZERO)>0&&e.subTo(t,t),t}function Classic(e){this.m=e}function cConvert(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e}function cRevert(e){return e}function cReduce(e){e.divRemTo(this.m,null,e)}function cMulTo(e,t,n){e.multiplyTo(t,n),this.reduce(n)}function cSqrTo(e,t){e.squareTo(t),this.reduce(t)}function bnpInvDigit(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return t=t*(2-(15&e)*t)&15,t=t*(2-(255&e)*t)&255,t=t*(2-((65535&e)*t&65535))&65535,t=t*(2-e*t%this.DV)%this.DV,t>0?this.DV-t:-t}function Montgomery(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<e.DB-15)-1,this.mt2=2*e.t}function montConvert(e){var t=nbi();return e.abs().dlShiftTo(this.m.t,t),t.divRemTo(this.m,null,t),e.s<0&&t.compareTo(BigInteger.ZERO)>0&&this.m.subTo(t,t),t}function montRevert(e){var t=nbi();return e.copyTo(t),this.reduce(t),t}function montReduce(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t<this.m.t;++t){var n=32767&e[t],i=n*this.mpl+((n*this.mph+(e[t]>>15)*this.mpl&this.um)<<15)&e.DM;for(n=t+this.m.t,e[n]+=this.m.am(0,i,e,t,0,this.m.t);e[n]>=e.DV;)e[n]-=e.DV,e[++n]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)}function montSqrTo(e,t){e.squareTo(t),this.reduce(t)}function montMulTo(e,t,n){e.multiplyTo(t,n),this.reduce(n)}function bnpIsEven(){return 0==(this.t>0?1&this[0]:this.s)}function bnpExp(e,t){if(e>4294967295||1>e)return BigInteger.ONE;var n=nbi(),i=nbi(),a=t.convert(this),o=nbits(e)-1;for(a.copyTo(n);--o>=0;)if(t.sqrTo(n,i),(e&1<<o)>0)t.mulTo(i,a,n);else{var r=n;n=i,i=r}return t.revert(n)}function bnModPowInt(e,t){var n;return n=256>e||t.isEven()?new Classic(t):new Montgomery(t),this.exp(e,n)}function bnClone(){var e=nbi();return this.copyTo(e),e}function bnIntValue(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]}function bnByteValue(){return 0==this.t?this.s:this[0]<<24>>24}function bnShortValue(){return 0==this.t?this.s:this[0]<<16>>16}function bnpChunkSize(e){return Math.floor(Math.LN2*this.DB/Math.log(e))}function bnSigNum(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1}function bnpToRadix(e){if(null==e&&(e=10),0==this.signum()||2>e||e>36)return"0";var t=this.chunkSize(e),n=Math.pow(e,t),i=nbv(n),a=nbi(),o=nbi(),r="";for(this.divRemTo(i,a,o);a.signum()>0;)r=(n+o.intValue()).toString(e).substr(1)+r,a.divRemTo(i,a,o);return o.intValue().toString(e)+r}function bnpFromRadix(e,t){this.fromInt(0),null==t&&(t=10);for(var n=this.chunkSize(t),i=Math.pow(t,n),a=!1,o=0,r=0,s=0;s<e.length;++s){var l=intAt(e,s);0>l?"-"==e.charAt(s)&&0==this.signum()&&(a=!0):(r=t*r+l,++o>=n&&(this.dMultiply(i),this.dAddOffset(r,0),o=0,r=0))}o>0&&(this.dMultiply(Math.pow(t,o)),this.dAddOffset(r,0)),a&&BigInteger.ZERO.subTo(this,this)}function bnpFromNumber(e,t,n){if("number"==typeof t)if(2>e)this.fromInt(1);else for(this.fromNumber(e,n),this.testBit(e-1)||this.bitwiseTo(BigInteger.ONE.shiftLeft(e-1),op_or,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(t);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(BigInteger.ONE.shiftLeft(e-1),this);else{var i=new Array,a=7&e;i.length=(e>>3)+1,t.nextBytes(i),a>0?i[0]&=(1<<a)-1:i[0]=0,this.fromString(i,256)}}function bnToByteArray(e){var t=this.t,n=new Array;n[0]=this.s;var i,a=this.DB-t*this.DB%8,o=0;if(t-->0)for(a<this.DB&&(i=this[t]>>a)!=(this.s&this.DM)>>a&&(n[o++]=i|this.s<<this.DB-a);t>=0;)8>a?(i=(this[t]&(1<<a)-1)<<8-a,i|=this[--t]>>(a+=this.DB-8)):(i=this[t]>>(a-=8)&255,0>=a&&(a+=this.DB,--t)),e&&0!=(128&i)&&(i|=-256),0==o&&(128&this.s)!=(128&i)&&++o,(o>0||i!=this.s)&&(n[o++]=i);return n}function bnEquals(e){return 0==this.compareTo(e)}function bnMin(e){return this.compareTo(e)<0?this:e}function bnMax(e){return this.compareTo(e)>0?this:e}function bnpBitwiseTo(e,t,n){var i,a,o=Math.min(e.t,this.t);for(i=0;o>i;++i)n[i]=t(this[i],e[i]);if(e.t<this.t){for(a=e.s&this.DM,i=o;i<this.t;++i)n[i]=t(this[i],a);n.t=this.t}else{for(a=this.s&this.DM,i=o;i<e.t;++i)n[i]=t(a,e[i]);n.t=e.t}n.s=t(this.s,e.s),n.clamp()}function op_and(e,t){return e&t}function bnAnd(e){var t=nbi();return this.bitwiseTo(e,op_and,t),t}function op_or(e,t){return e|t}function bnOr(e){var t=nbi();return this.bitwiseTo(e,op_or,t),t}function op_xor(e,t){return e^t}function bnXor(e){var t=nbi();return this.bitwiseTo(e,op_xor,t),t}function op_andnot(e,t){return e&~t}function bnAndNot(e){var t=nbi();return this.bitwiseTo(e,op_andnot,t),t}function bnNot(){for(var e=nbi(),t=0;t<this.t;++t)e[t]=this.DM&~this[t];return e.t=this.t,e.s=~this.s,e}function bnShiftLeft(e){var t=nbi();return 0>e?this.rShiftTo(-e,t):this.lShiftTo(e,t),t}function bnShiftRight(e){var t=nbi();return 0>e?this.lShiftTo(-e,t):this.rShiftTo(e,t),t}function lbit(e){if(0==e)return-1;var t=0;return 0==(65535&e)&&(e>>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function bnGetLowestSetBit(){for(var e=0;e<this.t;++e)if(0!=this[e])return e*this.DB+lbit(this[e]);return this.s<0?this.t*this.DB:-1}function cbit(e){for(var t=0;0!=e;)e&=e-1,++t;return t}function bnBitCount(){for(var e=0,t=this.s&this.DM,n=0;n<this.t;++n)e+=cbit(this[n]^t);return e}function bnTestBit(e){var t=Math.floor(e/this.DB);return t>=this.t?0!=this.s:0!=(this[t]&1<<e%this.DB)}function bnpChangeBit(e,t){var n=BigInteger.ONE.shiftLeft(e);return this.bitwiseTo(n,t,n),n}function bnSetBit(e){return this.changeBit(e,op_or)}function bnClearBit(e){return this.changeBit(e,op_andnot)}function bnFlipBit(e){return this.changeBit(e,op_xor)}function bnpAddTo(e,t){for(var n=0,i=0,a=Math.min(e.t,this.t);a>n;)i+=this[n]+e[n],t[n++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i+=e.s;n<this.t;)i+=this[n],t[n++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;n<e.t;)i+=e[n],t[n++]=i&this.DM,i>>=this.DB;i+=e.s}t.s=0>i?-1:0,i>0?t[n++]=i:-1>i&&(t[n++]=this.DV+i),t.t=n,t.clamp()}function bnAdd(e){var t=nbi();return this.addTo(e,t),t}function bnSubtract(e){var t=nbi();return this.subTo(e,t),t}function bnMultiply(e){var t=nbi();return this.multiplyTo(e,t),t}function bnSquare(){var e=nbi();return this.squareTo(e),e}function bnDivide(e){var t=nbi();return this.divRemTo(e,t,null),t}function bnRemainder(e){var t=nbi();return this.divRemTo(e,null,t),t}function bnDivideAndRemainder(e){var t=nbi(),n=nbi();return this.divRemTo(e,t,n),new Array(t,n)}function bnpDMultiply(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()}function bnpDAddOffset(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}}function NullExp(){}function nNop(e){return e}function nMulTo(e,t,n){e.multiplyTo(t,n)}function nSqrTo(e,t){e.squareTo(t)}function bnPow(e){return this.exp(e,new NullExp)}function bnpMultiplyLowerTo(e,t,n){var i=Math.min(this.t+e.t,t);for(n.s=0,n.t=i;i>0;)n[--i]=0;var a;for(a=n.t-this.t;a>i;++i)n[i+this.t]=this.am(0,e[i],n,i,0,this.t);for(a=Math.min(e.t,t);a>i;++i)this.am(0,e[i],n,i,0,t-i);n.clamp()}function bnpMultiplyUpperTo(e,t,n){--t;var i=n.t=this.t+e.t-t;for(n.s=0;--i>=0;)n[i]=0;for(i=Math.max(t-this.t,0);i<e.t;++i)n[this.t+i-t]=this.am(t-i,e[i],n,0,0,this.t+i-t);n.clamp(),n.drShiftTo(1,n)}function Barrett(e){this.r2=nbi(),this.q3=nbi(),BigInteger.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}function barrettConvert(e){if(e.s<0||e.t>2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=nbi();return e.copyTo(t),this.reduce(t),t}function barrettRevert(e){return e}function barrettReduce(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)}function barrettSqrTo(e,t){e.squareTo(t),this.reduce(t)}function barrettMulTo(e,t,n){e.multiplyTo(t,n),this.reduce(n)}function bnModPow(e,t){var n,i,a=e.bitLength(),o=nbv(1);if(0>=a)return o;n=18>a?1:48>a?3:144>a?4:768>a?5:6,i=8>a?new Classic(t):t.isEven()?new Barrett(t):new Montgomery(t);var r=new Array,s=3,l=n-1,c=(1<<n)-1;if(r[1]=i.convert(this),n>1){var d=nbi();for(i.sqrTo(r[1],d);c>=s;)r[s]=nbi(),i.mulTo(d,r[s-2],r[s]),s+=2}var u,p,m=e.t-1,h=!0,f=nbi();for(a=nbits(e[m])-1;m>=0;){for(a>=l?u=e[m]>>a-l&c:(u=(e[m]&(1<<a+1)-1)<<l-a,m>0&&(u|=e[m-1]>>this.DB+a-l)),s=n;0==(1&u);)u>>=1,--s;if((a-=s)<0&&(a+=this.DB,--m),h)r[u].copyTo(o),h=!1;else{for(;s>1;)i.sqrTo(o,f),i.sqrTo(f,o),s-=2;s>0?i.sqrTo(o,f):(p=o,o=f,f=p),i.mulTo(f,r[u],o)}for(;m>=0&&0==(e[m]&1<<a);)i.sqrTo(o,f),p=o,o=f,f=p,--a<0&&(a=this.DB-1,--m)}return i.revert(o)}function bnGCD(e){var t=this.s<0?this.negate():this.clone(),n=e.s<0?e.negate():e.clone();if(t.compareTo(n)<0){var i=t;t=n,n=i}var a=t.getLowestSetBit(),o=n.getLowestSetBit();if(0>o)return t;for(o>a&&(o=a),o>0&&(t.rShiftTo(o,t),n.rShiftTo(o,n));t.signum()>0;)(a=t.getLowestSetBit())>0&&t.rShiftTo(a,t),(a=n.getLowestSetBit())>0&&n.rShiftTo(a,n),t.compareTo(n)>=0?(t.subTo(n,t),t.rShiftTo(1,t)):(n.subTo(t,n),n.rShiftTo(1,n));return o>0&&n.lShiftTo(o,n),n}function bnpModInt(e){if(0>=e)return 0;var t=this.DV%e,n=this.s<0?e-1:0;if(this.t>0)if(0==t)n=this[0]%e;else for(var i=this.t-1;i>=0;--i)n=(t*n+this[i])%e;return n}function bnModInverse(e){var t=e.isEven();if(this.isEven()&&t||0==e.signum())return BigInteger.ZERO;for(var n=e.clone(),i=this.clone(),a=nbv(1),o=nbv(0),r=nbv(0),s=nbv(1);0!=n.signum();){for(;n.isEven();)n.rShiftTo(1,n),t?(a.isEven()&&o.isEven()||(a.addTo(this,a),o.subTo(e,o)),a.rShiftTo(1,a)):o.isEven()||o.subTo(e,o),o.rShiftTo(1,o);for(;i.isEven();)i.rShiftTo(1,i),t?(r.isEven()&&s.isEven()||(r.addTo(this,r),s.subTo(e,s)),r.rShiftTo(1,r)):s.isEven()||s.subTo(e,s),s.rShiftTo(1,s);n.compareTo(i)>=0?(n.subTo(i,n),t&&a.subTo(r,a),o.subTo(s,o)):(i.subTo(n,i),t&&r.subTo(a,r),s.subTo(o,s))}return 0!=i.compareTo(BigInteger.ONE)?BigInteger.ZERO:s.compareTo(e)>=0?s.subtract(e):s.signum()<0?(s.addTo(e,s),s.signum()<0?s.add(e):s):s}function bnIsProbablePrime(e){var t,n=this.abs();if(1==n.t&&n[0]<=lowprimes[lowprimes.length-1]){for(t=0;t<lowprimes.length;++t)if(n[0]==lowprimes[t])return!0;return!1}if(n.isEven())return!1;for(t=1;t<lowprimes.length;){for(var i=lowprimes[t],a=t+1;a<lowprimes.length&&lplim>i;)i*=lowprimes[a++];for(i=n.modInt(i);a>t;)if(i%lowprimes[t++]==0)return!1}return n.millerRabin(e)}function bnpMillerRabin(e){var t=this.subtract(BigInteger.ONE),n=t.getLowestSetBit();if(0>=n)return!1;var i=t.shiftRight(n);e=e+1>>1,e>lowprimes.length&&(e=lowprimes.length);for(var a=nbi(),o=0;e>o;++o){a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);var r=a.modPow(i,this);if(0!=r.compareTo(BigInteger.ONE)&&0!=r.compareTo(t)){for(var s=1;s++<n&&0!=r.compareTo(t);)if(r=r.modPowInt(2,this),0==r.compareTo(BigInteger.ONE))return!1;if(0!=r.compareTo(t))return!1}}return!0}function rng_seed_int(e){rng_pool[rng_pptr++]^=255&e,rng_pool[rng_pptr++]^=e>>8&255,rng_pool[rng_pptr++]^=e>>16&255,rng_pool[rng_pptr++]^=e>>24&255,rng_pptr>=rng_psize&&(rng_pptr-=rng_psize)}function rng_seed_time(){rng_seed_int((new Date).getTime())}function rng_get_byte(){if(null==rng_state){for(rng_seed_time(),rng_state=prng_newstate(),rng_state.init(rng_pool),rng_pptr=0;rng_pptr<rng_pool.length;++rng_pptr)rng_pool[rng_pptr]=0;rng_pptr=0}return rng_state.next()}function rng_get_bytes(e){var t;for(t=0;t<e.length;++t)e[t]=rng_get_byte()}function SecureRandom(){}function Arcfour(){this.i=0,this.j=0,this.S=new Array}function ARC4init(e){var t,n,i;for(t=0;256>t;++t)this.S[t]=t;for(n=0,t=0;256>t;++t)n=n+this.S[t]+e[t%e.length]&255,i=this.S[t],this.S[t]=this.S[n],this.S[n]=i;this.i=0,this.j=0}function ARC4next(){var e;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,e=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=e,this.S[e+this.S[this.i]&255]}function prng_newstate(){return new Arcfour}function findPrimes(e){var t,n,i,a;for(n=new Array(e),t=0;e>t;t++)n[t]=0;for(n[0]=2,i=0;n[i]<e;){for(t=n[i]*n[i];e>t;t+=n[i])n[t]=1;for(i++,n[i]=n[i-1]+1;n[i]<e&&n[n[i]];n[i]++);}for(a=new Array(i),t=0;i>t;t++)a[t]=n[t];return a}function millerRabinInt(e,t){return mr_x1.length!=e.length&&(mr_x1=dup(e),mr_r=dup(e),mr_a=dup(e)),copyInt_(mr_a,t),millerRabin(e,mr_a)}function millerRabin(e,t){var n,i,a,o;for(mr_x1.length!=e.length&&(mr_x1=dup(e),mr_r=dup(e),mr_a=dup(e)),copy_(mr_a,t),copy_(mr_r,e),copy_(mr_x1,e),addInt_(mr_r,-1),addInt_(mr_x1,-1),a=0,n=0;n<mr_r.length;n++)for(i=1;mask>i;i<<=1)e[n]&i?(o=a<mr_r.length+bpe?a:0,n=mr_r.length,i=mask):a++;if(o&&rightShift_(mr_r,o),powMod_(mr_a,mr_r,e),!equalsInt(mr_a,1)&&!equals(mr_a,mr_x1)){for(i=1;o-1>=i&&!equals(mr_a,mr_x1);){if(squareMod_(mr_a,e),equalsInt(mr_a,1))return 0;i++}if(!equals(mr_a,mr_x1))return 0}return 1}function bitSize(e){var t,n,i;for(t=e.length-1;0==e[t]&&t>0;t--);for(n=0,i=e[t];i;i>>=1,n++);return n+=bpe*t}function expand(e,t){var n=int2bigInt(0,(e.length>t?e.length:t)*bpe,0);return copy_(n,e),n}function randTruePrime(e){var t=int2bigInt(0,e,0);return randTruePrime_(t,e),trim(t,1)}function randProbPrime(e){return e>=600?randProbPrimeRounds(e,2):e>=550?randProbPrimeRounds(e,4):e>=500?randProbPrimeRounds(e,5):e>=400?randProbPrimeRounds(e,6):e>=350?randProbPrimeRounds(e,7):e>=300?randProbPrimeRounds(e,9):e>=250?randProbPrimeRounds(e,12):e>=200?randProbPrimeRounds(e,15):e>=150?randProbPrimeRounds(e,18):e>=100?randProbPrimeRounds(e,27):randProbPrimeRounds(e,40)}function randProbPrimeRounds(e,t){var n,i,a,o;for(o=3e4,n=int2bigInt(0,e,0),0==primes.length&&(primes=findPrimes(3e4)),rpprb.length!=n.length&&(rpprb=dup(n));;){for(randBigInt_(n,e,0),n[0]|=1,a=0,i=0;i<primes.length&&primes[i]<=o;i++)if(0==modInt(n,primes[i])&&!equalsInt(n,primes[i])){a=1;break}for(i=0;t>i&&!a;i++){for(randBigInt_(rpprb,e,0);!greater(n,rpprb);)randBigInt_(rpprb,e,0);millerRabin(n,rpprb)||(a=1)}if(!a)return n}}function mod(e,t){var n=dup(e);return mod_(n,t),trim(n,1)}function addInt(e,t){var n=expand(e,e.length+1);return addInt_(n,t),trim(n,1)}function mult(e,t){var n=expand(e,e.length+t.length);return mult_(n,t),trim(n,1)}function powMod(e,t,n){var i=expand(e,n.length);return powMod_(i,trim(t,2),trim(n,2),0),trim(i,1)}function sub(e,t){var n=expand(e,e.length>t.length?e.length+1:t.length+1);return sub_(n,t),trim(n,1)}function add(e,t){var n=expand(e,e.length>t.length?e.length+1:t.length+1);return add_(n,t),trim(n,1)}function inverseMod(e,t){var n,i=expand(e,t.length);return n=inverseMod_(i,t),n?trim(i,1):null}function multMod(e,t,n){var i=expand(e,n.length);return multMod_(i,t,n),trim(i,1)}function randTruePrime_(e,t){var n,i,a,o,r,s,l,c,d,u,p;if(0==primes.length&&(primes=findPrimes(3e4)),0==pows.length)for(pows=new Array(512),r=0;512>r;r++)pows[r]=Math.pow(2,r/511-1);if(n=.1,i=20,recLimit=20,s_i2.length!=e.length&&(s_i2=dup(e),s_R=dup(e),s_n1=dup(e),s_r2=dup(e),s_d=dup(e),s_x1=dup(e),s_x2=dup(e),s_b=dup(e),s_n=dup(e),s_i=dup(e),s_rm=dup(e),s_q=dup(e),s_a=dup(e),s_aa=dup(e)),recLimit>=t){for(a=(1<<(t+2>>1))-1,copyInt_(e,0),o=1;o;)for(o=0,e[0]=1|1<<t-1|Math.floor(Math.random()*(1<<t)),r=1;r<primes.length&&(primes[r]&a)==primes[r];r++)if(0==e[0]%primes[r]){o=1;break}return void carry_(e)}if(l=n*t*t,t>2*i)for(s=1;i>=t-t*s;)s=pows[Math.floor(512*Math.random())];else s=.5;for(p=Math.floor(s*t)+1,randTruePrime_(s_q,p),copyInt_(s_i2,0),s_i2[Math.floor((t-2)/bpe)]|=1<<(t-2)%bpe,divide_(s_i2,s_q,s_i,s_rm),d=bitSize(s_i);;){for(;randBigInt_(s_R,d,0),!greater(s_i,s_R););for(addInt_(s_R,1),add_(s_R,s_i),copy_(s_n,s_q),mult_(s_n,s_R),multInt_(s_n,2),addInt_(s_n,1),copy_(s_r2,s_R),multInt_(s_r2,2),c=0,r=0;r<primes.length&&primes[r]<l;r++)if(0==modInt(s_n,primes[r])&&!equalsInt(s_n,primes[r])){c=1;break}if(c||millerRabinInt(s_n,2)||(c=1),!c){for(addInt_(s_n,-3),r=s_n.length-1;0==s_n[r]&&r>0;r--);for(u=0,w=s_n[r];w;w>>=1,u++);for(u+=bpe*r;randBigInt_(s_a,u,0),!greater(s_n,s_a););if(addInt_(s_n,3),addInt_(s_a,2),copy_(s_b,s_a),copy_(s_n1,s_n),addInt_(s_n1,-1),powMod_(s_b,s_n1,s_n),addInt_(s_b,-1),isZero(s_b)&&(copy_(s_b,s_a),powMod_(s_b,s_r2,s_n),addInt_(s_b,-1),copy_(s_aa,s_n),copy_(s_d,s_b),GCD_(s_d,s_n),equalsInt(s_d,1)))return void copy_(e,s_aa)}}}function randBigInt(e,t){var n,i;return n=Math.floor((e-1)/bpe)+2,i=int2bigInt(0,0,n),randBigInt_(i,e,t),i}function randBigInt_(e,t,n){var i,a;for(i=0;i<e.length;i++)e[i]=0;for(a=Math.floor((t-1)/bpe)+1,i=0;a>i;i++)e[i]=Math.floor(Math.random()*(1<<bpe-1));e[a-1]&=(2<<(t-1)%bpe)-1,1==n&&(e[a-1]|=1<<(t-1)%bpe)}function GCD(e,t){var n,i;return n=dup(e),i=dup(t),GCD_(n,i),n}function GCD_(e,n){var i,a,o,r,s,l,c,d,u;for(T.length!=e.length&&(T=dup(e)),u=1;u;){for(u=0,i=1;i<n.length;i++)if(n[i]){u=1;break}if(!u)break;for(i=e.length;!e[i]&&i>=0;i--);for(a=e[i],o=n[i],r=1,s=0,l=0,c=1;o+l&&o+c&&(d=Math.floor((a+r)/(o+l)),qp=Math.floor((a+s)/(o+c)),d==qp);)t=r-d*l,r=l,l=t,t=s-d*c,s=c,c=t,t=a-d*o,a=o,o=t;s?(copy_(T,e),linComb_(e,n,r,s),linComb_(n,T,c,l)):(mod_(e,n),copy_(T,e),copy_(e,n),copy_(n,T))}if(0!=n[0])for(t=modInt(e,n[0]),copyInt_(e,n[0]),n[0]=t;n[0];)e[0]%=n[0],t=e[0],e[0]=n[0],n[0]=t}function inverseMod_(e,t){var n=1+2*Math.max(e.length,t.length);if(!(1&e[0]||1&t[0]))return copyInt_(e,0),0;for(eg_u.length!=n&&(eg_u=new Array(n),eg_v=new Array(n),eg_A=new Array(n),eg_B=new Array(n),eg_C=new Array(n),eg_D=new Array(n)),copy_(eg_u,e),copy_(eg_v,t),copyInt_(eg_A,1),copyInt_(eg_B,0),copyInt_(eg_C,0),copyInt_(eg_D,1);;){for(;!(1&eg_u[0]);)halve_(eg_u),1&eg_A[0]||1&eg_B[0]?(add_(eg_A,t),halve_(eg_A),sub_(eg_B,e),halve_(eg_B)):(halve_(eg_A),halve_(eg_B));for(;!(1&eg_v[0]);)halve_(eg_v),1&eg_C[0]||1&eg_D[0]?(add_(eg_C,t),halve_(eg_C),sub_(eg_D,e),halve_(eg_D)):(halve_(eg_C),halve_(eg_D));if(greater(eg_v,eg_u)?(sub_(eg_v,eg_u),sub_(eg_C,eg_A),sub_(eg_D,eg_B)):(sub_(eg_u,eg_v),sub_(eg_A,eg_C),sub_(eg_B,eg_D)),equalsInt(eg_u,0)){for(;negative(eg_C);)add_(eg_C,t);return copy_(e,eg_C),equalsInt(eg_v,1)?1:(copyInt_(e,0),0)}}}function inverseModInt(e,t){for(var n=1,i=0;;){if(1==e)return n;if(0==e)return 0;if(i-=n*Math.floor(t/e),t%=e,1==t)return i;if(0==t)return 0;n-=i*Math.floor(e/t),e%=t}}function inverseModInt_(e,t){return inverseModInt(e,t)}function eGCD_(e,t,n,i,a){var o=0,r=Math.max(e.length,t.length);for(eg_u.length!=r&&(eg_u=new Array(r),eg_A=new Array(r),eg_B=new Array(r),eg_C=new Array(r),eg_D=new Array(r));!(1&e[0]||1&t[0]);)halve_(e),halve_(t),o++;for(copy_(eg_u,e),copy_(n,t),copyInt_(eg_A,1),copyInt_(eg_B,0),copyInt_(eg_C,0),copyInt_(eg_D,1);;){for(;!(1&eg_u[0]);)halve_(eg_u),1&eg_A[0]||1&eg_B[0]?(add_(eg_A,t),halve_(eg_A),sub_(eg_B,e),halve_(eg_B)):(halve_(eg_A),halve_(eg_B));for(;!(1&n[0]);)halve_(n),1&eg_C[0]||1&eg_D[0]?(add_(eg_C,t),halve_(eg_C),sub_(eg_D,e),halve_(eg_D)):(halve_(eg_C),halve_(eg_D));if(greater(n,eg_u)?(sub_(n,eg_u),sub_(eg_C,eg_A),sub_(eg_D,eg_B)):(sub_(eg_u,n),sub_(eg_A,eg_C),sub_(eg_B,eg_D)),equalsInt(eg_u,0)){for(;negative(eg_C);)add_(eg_C,t),sub_(eg_D,e);return multInt_(eg_D,-1),copy_(i,eg_C),copy_(a,eg_D),void leftShift_(n,o)}}}function negative(e){return e[e.length-1]>>bpe-1&1}function greaterShift(e,t,n){var i,a=e.length,o=t.length;for(k=o>a+n?a+n:o,i=o-1-n;a>i&&i>=0;i++)if(e[i]>0)return 1;for(i=a-1+n;o>i;i++)if(t[i]>0)return 0;for(i=k-1;i>=n;i--){if(e[i-n]>t[i])return 1;if(e[i-n]<t[i])return 0}return 0}function greater(e,t){var n,i=e.length<t.length?e.length:t.length;for(n=e.length;n<t.length;n++)if(t[n])return 0;for(n=t.length;n<e.length;n++)if(e[n])return 1;for(n=i-1;n>=0;n--){if(e[n]>t[n])return 1;if(e[n]<t[n])return 0}return 0}function divide_(e,t,n,i){var a,o,r,s,l,c,d,u;for(copy_(i,e),o=t.length;0==t[o-1];o--);for(u=t[o-1],d=0;u;d++)u>>=1;for(d=bpe-d,leftShift_(t,d),leftShift_(i,d),a=i.length;0==i[a-1]&&a>o;a--);for(copyInt_(n,0);!greaterShift(t,i,a-o);)subShift_(i,t,a-o),n[a-o]++;for(r=a-1;r>=o;r--){for(n[r-o]=i[r]==t[o-1]?mask:Math.floor((i[r]*radix+i[r-1])/t[o-1]);l=(o>1?t[o-2]:0)*n[r-o],c=l>>bpe,l&=mask,s=c+n[r-o]*t[o-1],c=s>>bpe,s&=mask,c==i[r]?s==i[r-1]?l>(r>1?i[r-2]:0):s>i[r-1]:c>i[r];)n[r-o]--;linCombShift_(i,t,-n[r-o],r-o),negative(i)&&(addShift_(i,t,r-o),n[r-o]--)}rightShift_(t,d),rightShift_(i,d)}function carry_(e){var t,n,i,a;for(n=e.length,i=0,t=0;n>t;t++)i+=e[t],a=0,0>i&&(a=-(i>>bpe),i+=a*radix),e[t]=i&mask,i=(i>>bpe)-a}function modInt(e,t){var n,i=0;for(n=e.length-1;n>=0;n--)i=(i*radix+e[n])%t;return i}function int2bigInt(e,t,n){var i;return i=Math.ceil(t/bpe)+1,i=n>i?n:i,buff=new Array(i),copyInt_(buff,e),buff}function str2bigInt(e,t,n){var i,a,o,r,s,l=e.length;if(-1==t){for(o=new Array(0);;){for(r=new Array(o.length+1),a=0;a<o.length;a++)r[a+1]=o[a];if(r[0]=parseInt(e,10),o=r,i=e.indexOf(",",0),1>i)break;if(e=e.substring(i+1),0==e.length)break}return o.length<n?(r=new Array(n),copy_(r,o),r):o}for(o=int2bigInt(0,t*l,0),a=0;l>a&&(i=digitsStr.indexOf(e.substring(a,a+1),0),36>=t&&i>=36&&(i-=26),!(i>=t||0>i));a++)multInt_(o,t),addInt_(o,i);for(l=o.length;l>0&&!o[l-1];l--);for(l=n>l+1?n:l+1,r=new Array(l),s=l<o.length?l:o.length,a=0;s>a;a++)r[a]=o[a];for(;l>a;a++)r[a]=0;return r}function equalsInt(e,t){var n;if(e[0]!=t)return 0;for(n=1;n<e.length;n++)if(e[n])return 0;return 1}function equals(e,t){var n,i=e.length<t.length?e.length:t.length;for(n=0;i>n;n++)if(e[n]!=t[n])return 0;if(e.length>t.length){for(;n<e.length;n++)if(e[n])return 0}else for(;n<t.length;n++)if(t[n])return 0;return 1}function isZero(e){var t;for(t=0;t<e.length;t++)if(e[t])return 0;return 1}function bigInt2str(e,t){var n,i,a="";if(s6.length!=e.length?s6=dup(e):copy_(s6,e),-1==t){for(n=e.length-1;n>0;n--)a+=e[n]+",";a+=e[0]}else for(;!isZero(s6);)i=divInt_(s6,t),a=digitsStr.substring(i,i+1)+a;return 0==a.length&&(a="0"),a}function dup(e){return buff=new Array(e.length),copy_(buff,e),buff}function copy_(e,t){var n,i=e.length<t.length?e.length:t.length;for(n=0;i>n;n++)e[n]=t[n];for(n=i;n<e.length;n++)e[n]=0}function copyInt_(e,t){var n,i;for(i=t,n=0;n<e.length;n++)e[n]=i&mask,i>>=bpe}function addInt_(e,t){var n,i,a,o;for(e[0]+=t,i=e.length,a=0,n=0;i>n;n++)if(a+=e[n],o=0,0>a&&(o=-(a>>bpe),a+=o*radix),e[n]=a&mask,a=(a>>bpe)-o,!a)return}function rightShift_(e,t){var n,i=Math.floor(t/bpe);if(i){for(n=0;n<e.length-i;n++)e[n]=e[n+i];for(;n<e.length;n++)e[n]=0;t%=bpe}for(n=0;n<e.length-1;n++)e[n]=mask&(e[n+1]<<bpe-t|e[n]>>t);e[n]>>=t}function halve_(e){var t;for(t=0;t<e.length-1;t++)e[t]=mask&(e[t+1]<<bpe-1|e[t]>>1);e[t]=e[t]>>1|e[t]&radix>>1}function leftShift_(e,t){var n,i=Math.floor(t/bpe);if(i){for(n=e.length;n>=i;n--)e[n]=e[n-i];for(;n>=0;n--)e[n]=0;t%=bpe}if(t){for(n=e.length-1;n>0;n--)e[n]=mask&(e[n]<<t|e[n-1]>>bpe-t);e[n]=mask&e[n]<<t}}function multInt_(e,t){var n,i,a,o;if(t)for(i=e.length,a=0,n=0;i>n;n++)a+=e[n]*t,o=0,0>a&&(o=-(a>>bpe),a+=o*radix),e[n]=a&mask,a=(a>>bpe)-o}function divInt_(e,t){var n,i,a=0;for(n=e.length-1;n>=0;n--)i=a*radix+e[n],e[n]=Math.floor(i/t),a=i%t;return a}function linComb_(e,t,n,i){var a,o,r,s;for(r=e.length<t.length?e.length:t.length,s=e.length,o=0,a=0;r>a;a++)o+=n*e[a]+i*t[a],e[a]=o&mask,o>>=bpe;for(a=r;s>a;a++)o+=n*e[a],e[a]=o&mask,o>>=bpe}function linCombShift_(e,t,n,i){var a,o,r,s;for(r=e.length<i+t.length?e.length:i+t.length,s=e.length,o=0,a=i;r>a;a++)o+=e[a]+n*t[a-i],e[a]=o&mask,o>>=bpe;for(a=r;o&&s>a;a++)o+=e[a],e[a]=o&mask,o>>=bpe}function addShift_(e,t,n){var i,a,o,r;for(o=e.length<n+t.length?e.length:n+t.length,r=e.length,a=0,i=n;o>i;i++)a+=e[i]+t[i-n],e[i]=a&mask,a>>=bpe;for(i=o;a&&r>i;i++)a+=e[i],e[i]=a&mask,a>>=bpe}function subShift_(e,t,n){var i,a,o,r;for(o=e.length<n+t.length?e.length:n+t.length,r=e.length,a=0,i=n;o>i;i++)a+=e[i]-t[i-n],e[i]=a&mask,a>>=bpe;for(i=o;a&&r>i;i++)a+=e[i],e[i]=a&mask,a>>=bpe}function sub_(e,t){var n,i,a;for(a=e.length<t.length?e.length:t.length,i=0,n=0;a>n;n++)i+=e[n]-t[n],e[n]=i&mask,i>>=bpe;for(n=a;i&&n<e.length;n++)i+=e[n],e[n]=i&mask,i>>=bpe}function add_(e,t){var n,i,a;for(a=e.length<t.length?e.length:t.length,i=0,n=0;a>n;n++)i+=e[n]+t[n],e[n]=i&mask,i>>=bpe;for(n=a;i&&n<e.length;n++)i+=e[n],e[n]=i&mask,i>>=bpe}function mult_(e,t){var n;for(ss.length!=2*e.length&&(ss=new Array(2*e.length)),copyInt_(ss,0),n=0;n<t.length;n++)t[n]&&linCombShift_(ss,e,t[n],n);copy_(e,ss)}function mod_(e,t){s4.length!=e.length?s4=dup(e):copy_(s4,e),s5.length!=e.length&&(s5=dup(e)),divide_(s4,t,s5,e)}function multMod_(e,t,n){var i;for(s0.length!=2*e.length&&(s0=new Array(2*e.length)),copyInt_(s0,0),i=0;i<t.length;i++)t[i]&&linCombShift_(s0,e,t[i],i);mod_(s0,n),copy_(e,s0)}function squareMod_(e,t){var n,i,a,o,r;for(o=e.length;o>0&&!e[o-1];o--);for(r=o>t.length?2*o:2*t.length,s0.length!=r&&(s0=new Array(r)),copyInt_(s0,0),n=0;o>n;n++){for(a=s0[2*n]+e[n]*e[n],s0[2*n]=a&mask,a>>=bpe,i=n+1;o>i;i++)a=s0[n+i]+2*e[n]*e[i]+a,s0[n+i]=a&mask,a>>=bpe;s0[n+o]=a}mod_(s0,t),copy_(e,s0)}function trim(e,t){var n,i;for(n=e.length;n>0&&!e[n-1];n--);return i=new Array(n+t),copy_(i,e),i}function powMod_(e,t,n){var i,a,o,r;if(s7.length!=n.length&&(s7=dup(n)),0!=(1&n[0])){for(copyInt_(s7,0),o=n.length;o>0&&!n[o-1];o--);for(r=radix-inverseModInt(modInt(n,radix),radix),s7[o]=1,multMod_(e,s7,n),s3.length!=e.length?s3=dup(e):copy_(s3,e),i=t.length-1;i>0&!t[i];i--);if(0==t[i])return void copyInt_(e,1);for(a=1<<bpe-1;a&&!(t[i]&a);a>>=1);for(;;){if(!(a>>=1)){if(i--,0>i)return void mont_(e,one,n,r);a=1<<bpe-1}mont_(e,e,n,r),a&t[i]&&mont_(e,s3,n,r)}}else for(copy_(s7,e),copyInt_(e,1);!equalsInt(t,0);)1&t[0]&&multMod_(e,s7,n),divInt_(t,2),squareMod_(s7,n)}function mont_(e,t,n,i){var a,o,r,s,l,c,d=n.length,u=t.length;for(sa.length!=d&&(sa=new Array(d)),copyInt_(sa,0);d>0&&0==n[d-1];d--);for(;u>0&&0==t[u-1];u--);for(c=sa.length-1,a=0;d>a;a++){for(l=sa[0]+e[a]*t[0],s=(l&mask)*i&mask,r=l+s*n[0]>>bpe,l=e[a],o=1;u-4>o;)r+=sa[o]+s*n[o]+l*t[o],sa[o-1]=r&mask,r>>=bpe,o++,r+=sa[o]+s*n[o]+l*t[o],sa[o-1]=r&mask,r>>=bpe,o++,r+=sa[o]+s*n[o]+l*t[o],sa[o-1]=r&mask,r>>=bpe,o++,r+=sa[o]+s*n[o]+l*t[o],sa[o-1]=r&mask,r>>=bpe,o++,r+=sa[o]+s*n[o]+l*t[o],sa[o-1]=r&mask,r>>=bpe,o++;for(;u>o;)r+=sa[o]+s*n[o]+l*t[o],sa[o-1]=r&mask,r>>=bpe,o++;for(;d-4>o;)r+=sa[o]+s*n[o],sa[o-1]=r&mask,r>>=bpe,o++,r+=sa[o]+s*n[o],sa[o-1]=r&mask,r>>=bpe,o++,r+=sa[o]+s*n[o],sa[o-1]=r&mask,r>>=bpe,o++,r+=sa[o]+s*n[o],sa[o-1]=r&mask,r>>=bpe,o++,r+=sa[o]+s*n[o],sa[o-1]=r&mask,r>>=bpe,o++;for(;d>o;)r+=sa[o]+s*n[o],sa[o-1]=r&mask,r>>=bpe,o++;for(;c>o;)r+=sa[o],sa[o-1]=r&mask,r>>=bpe,o++;sa[o-1]=r&mask}greater(n,sa)||sub_(sa,n),copy_(e,sa)}function dT(){return"["+(((new Date).getTime()-_logTimer)/1e3).toFixed(3)+"]"}function checkClick(e,t){return 1==e.which&&(e.ctrlKey||e.metaKey)||2==e.which?!0:(t||e.preventDefault(),!1)}function checkDragEvent(e){if(!e||e.target&&("IMG"==e.target.tagName||"A"==e.target.tagName))return!1;if(!e.dataTransfer||!e.dataTransfer.types)return!0;for(var t=0;t<e.dataTransfer.types.length;t++)if("Files"==e.dataTransfer.types[t])return!0;return!1}function cancelEvent(e){return e=e||window.event,e&&(e=e.originalEvent||e,e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault()),!1 |
|
|
}function onCtrlEnter(e,t){$(e).on("keydown",function(e){return 13==e.keyCode&&(e.ctrlKey||e.metaKey)?(t(),cancelEvent(e)):void 0})}function onContentLoaded(e){setTimeout(e,0)}function tsNow(e){var t=+new Date+(window.tsOffset||0);return e?Math.floor(t/1e3):t}function safeReplaceObject(e,t){for(var n in e)t.hasOwnProperty(n)||"$"==n.charAt(0)||delete e[n];for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])}function listMergeSorted(e,t){e=e||[],t=t||[];for(var n=angular.copy(e),i=e.length?e[e.length-1]:4294967295,a=0;a<t.length;a++)t[a]<i&&n.push(t[a]);return n}function listUniqSorted(e){e=e||[];for(var t=[],n=!1,i=0;i<e.length;i++)e[i]!==n&&t.push(e[i]),n=e[i];return t}function templateUrl(e){return"partials/"+(Config.Mobile?"mobile":"desktop")+"/"+e+".html"}function encodeEntities(e){return e.replace(/&/g,"&").replace(/([^\#-~| |!])/g,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(/</g,"<").replace(/>/g,">")}function calcImageInBox(e,t,n,i,a){var o=n,r=i;return e/t>n/i?r=parseInt(t*n/e):(o=parseInt(e*i/t),o>n&&(r=parseInt(r*n/o),o=n)),a&&o>=e&&r>=t&&(o=e,r=t),{w:o,h:r}}function bigint(e){return new BigInteger(e.toString(16),16)}function bigStringInt(e){return new BigInteger(e,10)}function dHexDump(e){for(var t=[],n=0;n<e.length;n++)!n||n%2||t.push(n%16?n%4?" ":" ":"\n"),t.push((e[n]<16?"0":"")+e[n].toString(16));console.log(t.join(""))}function bytesToHex(e){e=e||[];for(var t=[],n=0;n<e.length;n++)t.push((e[n]<16?"0":"")+(e[n]||0).toString(16));return t.join("")}function bytesFromHex(e){var t,n=e.length,i=0,a=[];for(e.length%2&&(a.push(parseInt(e.charAt(0),16)),i++),t=i;n>t;t+=2)a.push(parseInt(e.substr(t,2),16));return a}function bytesToBase64(e){for(var t,n="",i=e.length,a=0,o=0;i>o;o++)t=o%3,a|=e[o]<<(16>>>t&24),(2===t||i-o===1)&&(n+=String.fromCharCode(uint6ToBase64(a>>>18&63),uint6ToBase64(a>>>12&63),uint6ToBase64(a>>>6&63),uint6ToBase64(63&a)),a=0);return n.replace(/A(?=A$|$)/g,"=")}function uint6ToBase64(e){return 26>e?e+65:52>e?e+71:62>e?e-4:62===e?43:63===e?47:65}function base64ToBlob(e,t){for(var n=1024,i=atob(e),a=i.length,o=Math.ceil(a/n),r=new Array(o),s=0;o>s;++s){for(var l=s*n,c=Math.min(l+n,a),d=new Array(c-l),u=l,p=0;c>u;++p,++u)d[p]=i[u].charCodeAt(0);r[s]=new Uint8Array(d)}return blobConstruct(r,t)}function dataUrlToBlob(e){var t=e.split(","),n=t[1],i=t[0].split(":")[1].split(";")[0],a=base64ToBlob(n,i);return a}function blobConstruct(e,t){var n;try{n=new Blob(e,{type:t})}catch(i){var a=new BlobBuilder;angular.forEach(e,function(e){a.append(e)}),n=a.getBlob(t)}return n}function bytesCmp(e,t){var n=e.length;if(n!=t.length)return!1;for(var i=0;n>i;i++)if(e[i]!=t[i])return!1;return!0}function bytesXor(e,t){for(var n=e.length,i=[],a=0;n>a;++a)i[a]=e[a]^t[a];return i}function bytesToWords(e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var t,n=e.length,i=[];for(t=0;n>t;t++)i[t>>>2]|=e[t]<<24-t%4*8;return new CryptoJS.lib.WordArray.init(i,n)}function bytesFromWords(e){for(var t=e.words,n=e.sigBytes,i=[],a=0;n>a;a++)i.push(t[a>>>2]>>>24-a%4*8&255);return i}function bytesFromBigInt(e,t){for(var n=e.toByteArray();!n[0]&&(!t||n.length>t);)n=n.slice(1);return n}function bytesFromLeemonBigInt(e){var t=bigInt2str(e,16);return bytesFromHex(t)}function bytesToArrayBuffer(e){return new Uint8Array(e).buffer}function convertToArrayBuffer(e){return e instanceof ArrayBuffer?e:void 0!==e.buffer&&e.buffer.byteLength==e.length*e.BYTES_PER_ELEMENT?e.buffer:bytesToArrayBuffer(e)}function convertToUint8Array(e){return void 0!==e.buffer?e:new Uint8Array(e)}function convertToByteArray(e){if(Array.isArray(e))return e;e=convertToUint8Array(e);for(var t=[],n=0,i=e.length;i>n;n++)t.push(e[n]);return t}function bytesFromArrayBuffer(e){for(var t=e.byteLength,n=new Uint8Array(e),i=[],a=0;t>a;++a)i[a]=n[a];return i}function bufferConcat(e,t){var n=e.byteLength||e.length,i=t.byteLength||t.length,a=new Uint8Array(n+i);return a.set(e instanceof ArrayBuffer?new Uint8Array(e):e,0),a.set(t instanceof ArrayBuffer?new Uint8Array(t):t,n),a.buffer}function longToInts(e){var t=bigStringInt(e).divideAndRemainder(bigint(4294967296));return[t[0].intValue(),t[1].intValue()]}function longToBytes(e){return bytesFromWords({words:longToInts(e),sigBytes:8}).reverse()}function longFromInts(e,t){return bigint(e).shiftLeft(32).add(bigint(t)).toString(10)}function intToUint(e){return e=parseInt(e),0>e&&(e+=4294967296),e}function uintToInt(e){return e>2147483647&&(e-=4294967296),e}function sha1HashSync(e){this.rushaInstance=this.rushaInstance||new Rusha(1048576);var t=rushaInstance.rawDigest(e).buffer;return t}function sha1BytesSync(e){return bytesFromArrayBuffer(sha1HashSync(e))}function rsaEncrypt(e,t){t=addPadding(t,255);var n=new BigInteger(e.modulus,16),i=new BigInteger(e.exponent,16),a=new BigInteger(t),o=a.modPowInt(i,n),r=bytesFromBigInt(o,256);return r}function addPadding(e,t){t=t||16;var n=e.byteLength||e.length,i=t-n%t;if(i>0&&t>i){var a=new Array(i);(new SecureRandom).nextBytes(a),e=e instanceof ArrayBuffer?bufferConcat(e,a):e.concat(a)}return e}function aesEncryptSync(e,t,n){e.byteLength||e.length;e=addPadding(e);var i=CryptoJS.AES.encrypt(bytesToWords(e),bytesToWords(t),{iv:bytesToWords(n),padding:CryptoJS.pad.NoPadding,mode:CryptoJS.mode.IGE}).ciphertext,a=bytesFromWords(i);return a}function aesDecryptSync(e,t,n){var i=CryptoJS.AES.decrypt({ciphertext:bytesToWords(e)},bytesToWords(t),{iv:bytesToWords(n),padding:CryptoJS.pad.NoPadding,mode:CryptoJS.mode.IGE}),a=bytesFromWords(i);return a}function gzipUncompress(e){var t=new Zlib.Gunzip(e).decompress();return t}function nextRandomInt(e){return Math.floor(Math.random()*e)}function pqPrimeFactorization(e){var t=new BigInteger(e),n=!1;try{n=pqPrimeLeemon(str2bigInt(t.toString(16),16,Math.ceil(64/bpe)+1))}catch(i){console.error("Pq leemon Exception",i)}if(n===!1&&t.bitLength()<=64)try{n=pqPrimeLong(goog.math.Long.fromString(t.toString(16),16))}catch(i){console.error("Pq long Exception",i)}return n===!1&&(n=pqPrimeBigInteger(t)),n}function pqPrimeBigInteger(e){for(var t,n=0,i=0;3>i;i++){for(var a=(15&nextRandomInt(128))+17,o=bigint(nextRandomInt(1e9)+1),r=o.clone(),s=1<<i+18,l=1;s>l;l++){++n;for(var c=o.clone(),d=o.clone(),u=bigint(a);!d.equals(BigInteger.ZERO);)d.and(BigInteger.ONE).equals(BigInteger.ZERO)||(u=u.add(c),u.compareTo(e)>0&&(u=u.subtract(e))),c=c.add(c),c.compareTo(e)>0&&(c=c.subtract(e)),d=d.shiftRight(1);o=u.clone();var p=o.compareTo(r)<0?r.subtract(o):o.subtract(r);if(t=p.gcd(e),!t.equals(BigInteger.ONE))break;0==(l&l-1)&&(r=o.clone())}if(t.compareTo(BigInteger.ONE)>0)break}var m,h,f=e.divide(t);return t.compareTo(f)>0?(m=f,h=t):(m=t,h=f),[bytesFromBigInt(m),bytesFromBigInt(h),n]}function gcdLong(e,t){for(;e.notEquals(goog.math.Long.ZERO)&&t.notEquals(goog.math.Long.ZERO);){for(;t.and(goog.math.Long.ONE).equals(goog.math.Long.ZERO);)t=t.shiftRight(1);for(;e.and(goog.math.Long.ONE).equals(goog.math.Long.ZERO);)e=e.shiftRight(1);e.compare(t)>0?e=e.subtract(t):t=t.subtract(e)}return t.equals(goog.math.Long.ZERO)?e:t}function pqPrimeLong(e){for(var t,n=0,i=0;3>i;i++){for(var a=goog.math.Long.fromInt((15&nextRandomInt(128))+17),o=goog.math.Long.fromInt(nextRandomInt(1e9)+1),r=o,s=1<<i+18,l=1;s>l;l++){++n;for(var c=o,d=o,u=a;d.notEquals(goog.math.Long.ZERO);)d.and(goog.math.Long.ONE).notEquals(goog.math.Long.ZERO)&&(u=u.add(c),u.compare(e)>0&&(u=u.subtract(e))),c=c.add(c),c.compare(e)>0&&(c=c.subtract(e)),d=d.shiftRight(1);o=u;var p=o.compare(r)<0?r.subtract(o):o.subtract(r);if(t=gcdLong(p,e),t.notEquals(goog.math.Long.ONE))break;0==(l&l-1)&&(r=o)}if(t.compare(goog.math.Long.ONE)>0)break}var m,h,f=e.div(t);return t.compare(f)>0?(m=f,h=t):(m=t,h=f),[bytesFromHex(m.toString(16)),bytesFromHex(h.toString(16)),n]}function pqPrimeLeemon(e){var t,n,i,a,o,r,s,l=64,c=Math.ceil(l/bpe)+1,d=0,u=new Array(c),p=new Array(c),m=new Array(c),o=new Array(c),h=new Array(c),f=new Array(c),g=new Array(c);for(t=0;3>t;t++){for(n=(15&nextRandomInt(128))+17,copyInt_(f,nextRandomInt(1e9)+1),copy_(g,f),a=1<<t+18,i=1;a>i;i++){for(++d,copy_(u,f),copy_(p,f),copyInt_(m,n);!isZero(p);)1&p[0]&&(add_(m,u),greater(m,e)&&sub_(m,e)),add_(u,u),greater(u,e)&&sub_(u,e),rightShift_(p,1);if(copy_(f,m),greater(f,g)?(copy_(h,f),sub_(h,g)):(copy_(h,g),sub_(h,f)),eGCD_(h,e,o,u,p),!equalsInt(o,1))break;0==(i&i-1)&©_(g,f)}if(greater(o,one))break}return divide_(e,o,f,g),greater(o,f)?(r=f,s=o):(r=o,s=f),[bytesFromLeemonBigInt(r),bytesFromLeemonBigInt(s),d]}function bytesModPow(e,t,n){try{var i=str2bigInt(bytesToHex(e),16),a=str2bigInt(bytesToHex(t),16),o=str2bigInt(bytesToHex(n),16),r=powMod(i,a,o);return bytesFromHex(bigInt2str(r,16))}catch(s){console.error("mod pow error",s)}return bytesFromBigInt(new BigInteger(e).modPow(new BigInteger(t),new BigInteger(n)))}function TLSerialization(e){return e=e||{},this.maxLength=e.startMaxLength||2048,this.offset=0,this.createBuffer(),this.mtproto=e.mtproto||!1,this}function TLDeserialization(e,t){return t=t||{},this.offset=0,this.override=t.override||{},this.buffer=e,this.intView=new Uint32Array(this.buffer),this.byteView=new Uint8Array(this.buffer),this.mtproto=t.mtproto||!1,this}!function(e){"use strict";for(var t,n,i={},a=function(){},o="memory".split(","),r="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profileEnd,time,timeEnd,trace,warn".split(",");t=o.pop();)e[t]=e[t]||i;for(;n=r.pop();)e[n]=e[n]||a}(this.console=this.console||{}),Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var n;if(null==this)throw new TypeError('"this" is null or not defined');var i=Object(this),a=i.length>>>0;if(0===a)return-1;var o=+t||0;if(1/0===Math.abs(o)&&(o=0),o>=a)return-1;for(n=Math.max(o>=0?o:a-Math.abs(o),0);a>n;){if(n in i&&i[n]===e)return n;n++}return-1}),Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),"function"!=typeof Object.create&&(Object.create=function(){var e=function(){};return function(t){if(arguments.length>1)throw Error("Second argument not supported");if("object"!=typeof t)throw TypeError("Argument must be an object");e.prototype=t;var n=new e;return e.prototype=null,n}}()),Function.prototype.bind||(Function.prototype.bind=function(e){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var t=Array.prototype.slice.call(arguments,1),n=this,i=function(){},a=function(){return n.apply(this instanceof i&&e?this:e,t.concat(Array.prototype.slice.call(arguments)))};return i.prototype=this.prototype,a.prototype=new i,a}),function(e){function t(t){i.push(t),e.postMessage(a,"*")}function n(t){if(t.source==e&&t.data==a&&(t.stopPropagation(),i.length>0)){var n=i.shift();n()}}var i=[],a="zero-timeout-message";e.addEventListener("message",n,!0);var o=e.setTimeout;e.setTimeout=function(e,n){return!n||5>=n?t(e):o(e,n)},e.setZeroTimeout=t}(this),!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(e){var t=e.length,n=at.type(e);return"function"===n||at.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function i(e,t,n){if(at.isFunction(t))return at.grep(e,function(e,i){return!!t.call(e,i,e)!==n});if(t.nodeType)return at.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(pt.test(t))return at.filter(t,e,n);t=at.filter(t,e)}return at.grep(e,function(e){return at.inArray(e,t)>=0!==n})}function a(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t=bt[e]={};return at.each(e.match(vt)||[],function(e,n){t[n]=!0}),t}function r(){ht.addEventListener?(ht.removeEventListener("DOMContentLoaded",s,!1),e.removeEventListener("load",s,!1)):(ht.detachEvent("onreadystatechange",s),e.detachEvent("onload",s))}function s(){(ht.addEventListener||"load"===event.type||"complete"===ht.readyState)&&(r(),at.ready())}function l(e,t,n){if(void 0===n&&1===e.nodeType){var i="data-"+t.replace(St,"-$1").toLowerCase();if(n=e.getAttribute(i),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:Ct.test(n)?at.parseJSON(n):n}catch(a){}at.data(e,t,n)}else n=void 0}return n}function c(e){var t;for(t in e)if(("data"!==t||!at.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function d(e,t,n,i){if(at.acceptData(e)){var a,o,r=at.expando,s=e.nodeType,l=s?at.cache:e,c=s?e[r]:e[r]&&r;if(c&&l[c]&&(i||l[c].data)||void 0!==n||"string"!=typeof t)return c||(c=s?e[r]=K.pop()||at.guid++:r),l[c]||(l[c]=s?{}:{toJSON:at.noop}),("object"==typeof t||"function"==typeof t)&&(i?l[c]=at.extend(l[c],t):l[c].data=at.extend(l[c].data,t)),o=l[c],i||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[at.camelCase(t)]=n),"string"==typeof t?(a=o[t],null==a&&(a=o[at.camelCase(t)])):a=o,a}}function u(e,t,n){if(at.acceptData(e)){var i,a,o=e.nodeType,r=o?at.cache:e,s=o?e[at.expando]:at.expando;if(r[s]){if(t&&(i=n?r[s]:r[s].data)){at.isArray(t)?t=t.concat(at.map(t,at.camelCase)):t in i?t=[t]:(t=at.camelCase(t),t=t in i?[t]:t.split(" ")),a=t.length;for(;a--;)delete i[t[a]];if(n?!c(i):!at.isEmptyObject(i))return}(n||(delete r[s].data,c(r[s])))&&(o?at.cleanData([e],!0):nt.deleteExpando||r!=r.window?delete r[s]:r[s]=null)}}}function p(){return!0}function m(){return!1}function h(){try{return ht.activeElement}catch(e){}}function f(e){var t=Ot.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function g(e,t){var n,i,a=0,o=typeof e.getElementsByTagName!==kt?e.getElementsByTagName(t||"*"):typeof e.querySelectorAll!==kt?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(i=n[a]);a++)!t||at.nodeName(i,t)?o.push(i):at.merge(o,g(i,t));return void 0===t||t&&at.nodeName(e,t)?at.merge([e],o):o}function _(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function y(e,t){return at.nodeName(e,"table")&&at.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function v(e){return e.type=(null!==at.find.attr(e,"type"))+"/"+e.type,e}function b(e){var t=Gt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function w(e,t){for(var n,i=0;null!=(n=e[i]);i++)at._data(n,"globalEval",!t||at._data(t[i],"globalEval"))}function $(e,t){if(1===t.nodeType&&at.hasData(e)){var n,i,a,o=at._data(e),r=at._data(t,o),s=o.events;if(s){delete r.handle,r.events={};for(n in s)for(i=0,a=s[n].length;a>i;i++)at.event.add(t,n,s[n][i])}r.data&&(r.data=at.extend({},r.data))}}function k(e,t){var n,i,a;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!nt.noCloneEvent&&t[at.expando]){a=at._data(t);for(i in a.events)at.removeEvent(t,i,a.handle);t.removeAttribute(at.expando)}"script"===n&&t.text!==e.text?(v(t).text=e.text,b(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),nt.html5Clone&&e.innerHTML&&!at.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Et.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 C(t,n){var i,a=at(n.createElement(t)).appendTo(n.body),o=e.getDefaultComputedStyle&&(i=e.getDefaultComputedStyle(a[0]))?i.display:at.css(a[0],"display");return a.detach(),o}function S(e){var t=ht,n=Qt[e];return n||(n=C(e,t),"none"!==n&&n||(Jt=(Jt||at("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),t=(Jt[0].contentWindow||Jt[0].contentDocument).document,t.write(),t.close(),n=C(e,t),Jt.detach()),Qt[e]=n),n}function M(e,t){return{get:function(){var n=e();return null!=n?n?void delete this.get:(this.get=t).apply(this,arguments):void 0}}}function x(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),i=t,a=mn.length;a--;)if(t=mn[a]+n,t in e)return t;return i}function A(e,t){for(var n,i,a,o=[],r=0,s=e.length;s>r;r++)i=e[r],i.style&&(o[r]=at._data(i,"olddisplay"),n=i.style.display,t?(o[r]||"none"!==n||(i.style.display=""),""===i.style.display&&At(i)&&(o[r]=at._data(i,"olddisplay",S(i.nodeName)))):(a=At(i),(n&&"none"!==n||!a)&&at._data(i,"olddisplay",a?n:at.css(i,"display"))));for(r=0;s>r;r++)i=e[r],i.style&&(t&&"none"!==i.style.display&&""!==i.style.display||(i.style.display=t?o[r]||"":"none"));return e}function T(e,t,n){var i=cn.exec(t);return i?Math.max(0,i[1]-(n||0))+(i[2]||"px"):t}function E(e,t,n,i,a){for(var o=n===(i?"border":"content")?4:"width"===t?1:0,r=0;4>o;o+=2)"margin"===n&&(r+=at.css(e,n+xt[o],!0,a)),i?("content"===n&&(r-=at.css(e,"padding"+xt[o],!0,a)),"margin"!==n&&(r-=at.css(e,"border"+xt[o]+"Width",!0,a))):(r+=at.css(e,"padding"+xt[o],!0,a),"padding"!==n&&(r+=at.css(e,"border"+xt[o]+"Width",!0,a)));return r}function I(e,t,n){var i=!0,a="width"===t?e.offsetWidth:e.offsetHeight,o=en(e),r=nt.boxSizing&&"border-box"===at.css(e,"boxSizing",!1,o);if(0>=a||null==a){if(a=tn(e,t,o),(0>a||null==a)&&(a=e.style[t]),an.test(a))return a;i=r&&(nt.boxSizingReliable()||a===e.style[t]),a=parseFloat(a)||0}return a+E(e,t,n||(r?"border":"content"),i,o)+"px"}function D(e,t,n,i,a){return new D.prototype.init(e,t,n,i,a)}function P(){return setTimeout(function(){hn=void 0}),hn=at.now()}function N(e,t){var n,i={height:e},a=0;for(t=t?1:0;4>a;a+=2-t)n=xt[a],i["margin"+n]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function L(e,t,n){for(var i,a=(bn[t]||[]).concat(bn["*"]),o=0,r=a.length;r>o;o++)if(i=a[o].call(n,t,e))return i}function O(e,t,n){var i,a,o,r,s,l,c,d,u=this,p={},m=e.style,h=e.nodeType&&At(e),f=at._data(e,"fxshow");n.queue||(s=at._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,at.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[m.overflow,m.overflowX,m.overflowY],c=at.css(e,"display"),d="none"===c?at._data(e,"olddisplay")||S(e.nodeName):c,"inline"===d&&"none"===at.css(e,"float")&&(nt.inlineBlockNeedsLayout&&"inline"!==S(e.nodeName)?m.zoom=1:m.display="inline-block")),n.overflow&&(m.overflow="hidden",nt.shrinkWrapBlocks()||u.always(function(){m.overflow=n.overflow[0],m.overflowX=n.overflow[1],m.overflowY=n.overflow[2]}));for(i in t)if(a=t[i],gn.exec(a)){if(delete t[i],o=o||"toggle"===a,a===(h?"hide":"show")){if("show"!==a||!f||void 0===f[i])continue;h=!0}p[i]=f&&f[i]||at.style(e,i)}else c=void 0;if(at.isEmptyObject(p))"inline"===("none"===c?S(e.nodeName):c)&&(m.display=c);else{f?"hidden"in f&&(h=f.hidden):f=at._data(e,"fxshow",{}),o&&(f.hidden=!h),h?at(e).show():u.done(function(){at(e).hide()}),u.done(function(){var t;at._removeData(e,"fxshow");for(t in p)at.style(e,t,p[t])});for(i in p)r=L(h?f[i]:0,i,u),i in f||(f[i]=r.start,h&&(r.end=r.start,r.start="width"===i||"height"===i?1:0))}}function U(e,t){var n,i,a,o,r;for(n in e)if(i=at.camelCase(n),a=t[i],o=e[n],at.isArray(o)&&(a=o[1],o=e[n]=o[0]),n!==i&&(e[i]=o,delete e[n]),r=at.cssHooks[i],r&&"expand"in r){o=r.expand(o),delete e[i];for(n in o)n in e||(e[n]=o[n],t[n]=a)}else t[i]=a}function B(e,t,n){var i,a,o=0,r=vn.length,s=at.Deferred().always(function(){delete l.elem}),l=function(){if(a)return!1;for(var t=hn||P(),n=Math.max(0,c.startTime+c.duration-t),i=n/c.duration||0,o=1-i,r=0,l=c.tweens.length;l>r;r++)c.tweens[r].run(o);return s.notifyWith(e,[c,o,n]),1>o&&l?n:(s.resolveWith(e,[c]),!1)},c=s.promise({elem:e,props:at.extend({},t),opts:at.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:hn||P(),duration:n.duration,tweens:[],createTween:function(t,n){var i=at.Tween(e,c.opts,t,n,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(i),i},stop:function(t){var n=0,i=t?c.tweens.length:0;if(a)return this;for(a=!0;i>n;n++)c.tweens[n].run(1);return t?s.resolveWith(e,[c,t]):s.rejectWith(e,[c,t]),this}}),d=c.props;for(U(d,c.opts.specialEasing);r>o;o++)if(i=vn[o].call(c,e,d,c.opts))return i;return at.map(d,L,c),at.isFunction(c.opts.start)&&c.opts.start.call(e,c),at.fx.timer(at.extend(l,{elem:e,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function R(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var i,a=0,o=t.toLowerCase().match(vt)||[];if(at.isFunction(n))for(;i=o[a++];)"+"===i.charAt(0)?(i=i.slice(1)||"*",(e[i]=e[i]||[]).unshift(n)):(e[i]=e[i]||[]).push(n)}}function F(e,t,n,i){function a(s){var l;return o[s]=!0,at.each(e[s]||[],function(e,s){var c=s(t,n,i);return"string"!=typeof c||r||o[c]?r?!(l=c):void 0:(t.dataTypes.unshift(c),a(c),!1)}),l}var o={},r=e===Vn;return a(t.dataTypes[0])||!o["*"]&&a("*")}function q(e,t){var n,i,a=at.ajaxSettings.flatOptions||{};for(i in t)void 0!==t[i]&&((a[i]?e:n||(n={}))[i]=t[i]);return n&&at.extend(!0,e,n),e}function H(e,t,n){for(var i,a,o,r,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===a&&(a=e.mimeType||t.getResponseHeader("Content-Type"));if(a)for(r in s)if(s[r]&&s[r].test(a)){l.unshift(r);break}if(l[0]in n)o=l[0];else{for(r in n){if(!l[0]||e.converters[r+" "+l[0]]){o=r;break}i||(i=r)}o=o||i}return o?(o!==l[0]&&l.unshift(o),n[o]):void 0}function j(e,t,n,i){var a,o,r,s,l,c={},d=e.dataTypes.slice();if(d[1])for(r in e.converters)c[r.toLowerCase()]=e.converters[r];for(o=d.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&i&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=d.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(r=c[l+" "+o]||c["* "+o],!r)for(a in c)if(s=a.split(" "),s[1]===o&&(r=c[l+" "+s[0]]||c["* "+s[0]])){r===!0?r=c[a]:c[a]!==!0&&(o=s[0],d.unshift(s[1]));break}if(r!==!0)if(r&&e["throws"])t=r(t);else try{t=r(t)}catch(u){return{state:"parsererror",error:r?u:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}function V(e,t,n,i){var a;if(at.isArray(t))at.each(t,function(t,a){n||Kn.test(e)?i(e,a):V(e+"["+("object"==typeof a?t:"")+"]",a,n,i)});else if(n||"object"!==at.type(t))i(e,t);else for(a in t)V(e+"["+a+"]",t[a],n,i)}function z(){try{return new e.XMLHttpRequest}catch(t){}}function W(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function G(e){return at.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}var K=[],X=K.slice,Z=K.concat,Y=K.push,J=K.indexOf,Q={},et=Q.toString,tt=Q.hasOwnProperty,nt={},it="1.11.1",at=function(e,t){return new at.fn.init(e,t)},ot=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,rt=/^-ms-/,st=/-([\da-z])/gi,lt=function(e,t){return t.toUpperCase()};at.fn=at.prototype={jquery:it,constructor:at,selector:"",length:0,toArray:function(){return X.call(this)},get:function(e){return null!=e?0>e?this[e+this.length]:this[e]:X.call(this)},pushStack:function(e){var t=at.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return at.each(this,e,t)},map:function(e){return this.pushStack(at.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(X.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:Y,sort:K.sort,splice:K.splice},at.extend=at.fn.extend=function(){var e,t,n,i,a,o,r=arguments[0]||{},s=1,l=arguments.length,c=!1;for("boolean"==typeof r&&(c=r,r=arguments[s]||{},s++),"object"==typeof r||at.isFunction(r)||(r={}),s===l&&(r=this,s--);l>s;s++)if(null!=(a=arguments[s]))for(i in a)e=r[i],n=a[i],r!==n&&(c&&n&&(at.isPlainObject(n)||(t=at.isArray(n)))?(t?(t=!1,o=e&&at.isArray(e)?e:[]):o=e&&at.isPlainObject(e)?e:{},r[i]=at.extend(c,o,n)):void 0!==n&&(r[i]=n));return r},at.extend({expando:"jQuery"+(it+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===at.type(e)},isArray:Array.isArray||function(e){return"array"===at.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!at.isArray(e)&&e-parseFloat(e)>=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==at.type(e)||e.nodeType||at.isWindow(e))return!1;try{if(e.constructor&&!tt.call(e,"constructor")&&!tt.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(nt.ownLast)for(t in e)return tt.call(e,t);for(t in e);return void 0===t||tt.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?Q[et.call(e)]||"object":typeof e},globalEval:function(t){t&&at.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(rt,"ms-").replace(st,lt)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,i){var a,o=0,r=e.length,s=n(e);if(i){if(s)for(;r>o&&(a=t.apply(e[o],i),a!==!1);o++);else for(o in e)if(a=t.apply(e[o],i),a===!1)break}else if(s)for(;r>o&&(a=t.call(e[o],o,e[o]),a!==!1);o++);else for(o in e)if(a=t.call(e[o],o,e[o]),a===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(ot,"")},makeArray:function(e,t){var i=t||[];return null!=e&&(n(Object(e))?at.merge(i,"string"==typeof e?[e]:e):Y.call(i,e)),i},inArray:function(e,t,n){var i;if(t){if(J)return J.call(t,e,n);for(i=t.length,n=n?0>n?Math.max(0,i+n):n:0;i>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){for(var n=+t.length,i=0,a=e.length;n>i;)e[a++]=t[i++];if(n!==n)for(;void 0!==t[i];)e[a++]=t[i++];return e.length=a,e},grep:function(e,t,n){for(var i,a=[],o=0,r=e.length,s=!n;r>o;o++)i=!t(e[o],o),i!==s&&a.push(e[o]);return a},map:function(e,t,i){var a,o=0,r=e.length,s=n(e),l=[];if(s)for(;r>o;o++)a=t(e[o],o,i),null!=a&&l.push(a);else for(o in e)a=t(e[o],o,i),null!=a&&l.push(a);return Z.apply([],l)},guid:1,proxy:function(e,t){var n,i,a;return"string"==typeof t&&(a=e[t],t=e,e=a),at.isFunction(e)?(n=X.call(arguments,2),i=function(){return e.apply(t||this,n.concat(X.call(arguments)))},i.guid=e.guid=e.guid||at.guid++,i):void 0},now:function(){return+new Date},support:nt}),at.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){Q["[object "+t+"]"]=t.toLowerCase()});var ct=function(e){function t(e,t,n,i){var a,o,r,s,l,c,u,m,h,f;if((t?t.ownerDocument||t:F)!==D&&I(t),t=t||D,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(N&&!i){if(a=yt.exec(e))if(r=a[1]){if(9===s){if(o=t.getElementById(r),!o||!o.parentNode)return n;if(o.id===r)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(r))&&B(t,o)&&o.id===r)return n.push(o),n}else{if(a[2])return Q.apply(n,t.getElementsByTagName(e)),n;if((r=a[3])&&w.getElementsByClassName&&t.getElementsByClassName)return Q.apply(n,t.getElementsByClassName(r)),n}if(w.qsa&&(!L||!L.test(e))){if(m=u=R,h=t,f=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(c=S(e),(u=t.getAttribute("id"))?m=u.replace(bt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",l=c.length;l--;)c[l]=m+p(c[l]);h=vt.test(e)&&d(t.parentNode)||t,f=c.join(",")}if(f)try{return Q.apply(n,h.querySelectorAll(f)),n}catch(g){}finally{u||t.removeAttribute("id")}}}return x(e.replace(lt,"$1"),t,n,i)}function n(){function e(n,i){return t.push(n+" ")>$.cacheLength&&delete e[t.shift()],e[n+" "]=i}var t=[];return e}function i(e){return e[R]=!0,e}function a(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),i=e.length;i--;)$.attrHandle[n[i]]=t}function r(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||K)-(~e.sourceIndex||K);if(i)return i;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return i(function(t){return t=+t,i(function(n,i){for(var a,o=e([],n.length,t),r=o.length;r--;)n[a=o[r]]&&(n[a]=!(i[a]=n[a]))})})}function d(e){return e&&typeof e.getElementsByTagName!==G&&e}function u(){}function p(e){for(var t=0,n=e.length,i="";n>t;t++)i+=e[t].value;return i}function m(e,t,n){var i=t.dir,a=n&&"parentNode"===i,o=H++;return t.first?function(t,n,o){for(;t=t[i];)if(1===t.nodeType||a)return e(t,n,o)}:function(t,n,r){var s,l,c=[q,o];if(r){for(;t=t[i];)if((1===t.nodeType||a)&&e(t,n,r))return!0}else for(;t=t[i];)if(1===t.nodeType||a){if(l=t[R]||(t[R]={}),(s=l[i])&&s[0]===q&&s[1]===o)return c[2]=s[2];if(l[i]=c,c[2]=e(t,n,r))return!0}}}function h(e){return e.length>1?function(t,n,i){for(var a=e.length;a--;)if(!e[a](t,n,i))return!1;return!0}:e[0]}function f(e,n,i){for(var a=0,o=n.length;o>a;a++)t(e,n[a],i);return i}function g(e,t,n,i,a){for(var o,r=[],s=0,l=e.length,c=null!=t;l>s;s++)(o=e[s])&&(!n||n(o,i,a))&&(r.push(o),c&&t.push(s));return r}function _(e,t,n,a,o,r){return a&&!a[R]&&(a=_(a)),o&&!o[R]&&(o=_(o,r)),i(function(i,r,s,l){var c,d,u,p=[],m=[],h=r.length,_=i||f(t||"*",s.nodeType?[s]:s,[]),y=!e||!i&&t?_:g(_,p,e,s,l),v=n?o||(i?e:h||a)?[]:r:y;if(n&&n(y,v,s,l),a)for(c=g(v,m),a(c,[],s,l),d=c.length;d--;)(u=c[d])&&(v[m[d]]=!(y[m[d]]=u));if(i){if(o||e){if(o){for(c=[],d=v.length;d--;)(u=v[d])&&c.push(y[d]=u);o(null,v=[],c,l)}for(d=v.length;d--;)(u=v[d])&&(c=o?tt.call(i,u):p[d])>-1&&(i[c]=!(r[c]=u))}}else v=g(v===r?v.splice(h,v.length):v),o?o(null,r,v,l):Q.apply(r,v)})}function y(e){for(var t,n,i,a=e.length,o=$.relative[e[0].type],r=o||$.relative[" "],s=o?1:0,l=m(function(e){return e===t},r,!0),c=m(function(e){return tt.call(t,e)>-1},r,!0),d=[function(e,n,i){return!o&&(i||n!==A)||((t=n).nodeType?l(e,n,i):c(e,n,i))}];a>s;s++)if(n=$.relative[e[s].type])d=[m(h(d),n)];else{if(n=$.filter[e[s].type].apply(null,e[s].matches),n[R]){for(i=++s;a>i&&!$.relative[e[i].type];i++);return _(s>1&&h(d),s>1&&p(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(lt,"$1"),n,i>s&&y(e.slice(s,i)),a>i&&y(e=e.slice(i)),a>i&&p(e))}d.push(n)}return h(d)}function v(e,n){var a=n.length>0,o=e.length>0,r=function(i,r,s,l,c){var d,u,p,m=0,h="0",f=i&&[],_=[],y=A,v=i||o&&$.find.TAG("*",c),b=q+=null==y?1:Math.random()||.1,w=v.length;for(c&&(A=r!==D&&r);h!==w&&null!=(d=v[h]);h++){if(o&&d){for(u=0;p=e[u++];)if(p(d,r,s)){l.push(d);break}c&&(q=b)}a&&((d=!p&&d)&&m--,i&&f.push(d))}if(m+=h,a&&h!==m){for(u=0;p=n[u++];)p(f,_,r,s);if(i){if(m>0)for(;h--;)f[h]||_[h]||(_[h]=Y.call(l));_=g(_)}Q.apply(l,_),c&&!i&&_.length>0&&m+n.length>1&&t.uniqueSort(l)}return c&&(q=b,A=y),f};return a?i(r):r}var b,w,$,k,C,S,M,x,A,T,E,I,D,P,N,L,O,U,B,R="sizzle"+-new Date,F=e.document,q=0,H=0,j=n(),V=n(),z=n(),W=function(e,t){return e===t&&(E=!0),0},G="undefined",K=1<<31,X={}.hasOwnProperty,Z=[],Y=Z.pop,J=Z.push,Q=Z.push,et=Z.slice,tt=Z.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},nt="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",it="[\\x20\\t\\r\\n\\f]",at="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ot=at.replace("w","w#"),rt="\\["+it+"*("+at+")(?:"+it+"*([*^$|!~]?=)"+it+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ot+"))|)"+it+"*\\]",st=":("+at+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+rt+")*)|.*)\\)|)",lt=new RegExp("^"+it+"+|((?:^|[^\\\\])(?:\\\\.)*)"+it+"+$","g"),ct=new RegExp("^"+it+"*,"+it+"*"),dt=new RegExp("^"+it+"*([>+~]|"+it+")"+it+"*"),ut=new RegExp("="+it+"*([^\\]'\"]*?)"+it+"*\\]","g"),pt=new RegExp(st),mt=new RegExp("^"+ot+"$"),ht={ID:new RegExp("^#("+at+")"),CLASS:new RegExp("^\\.("+at+")"),TAG:new RegExp("^("+at.replace("w","w*")+")"),ATTR:new RegExp("^"+rt),PSEUDO:new RegExp("^"+st),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+it+"*(even|odd|(([+-]|)(\\d*)n|)"+it+"*(?:([+-]|)"+it+"*(\\d+)|))"+it+"*\\)|)","i"),bool:new RegExp("^(?:"+nt+")$","i"),needsContext:new RegExp("^"+it+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+it+"*((?:-\\d)?\\d*)"+it+"*\\)|)(?=[^-]|$)","i")},ft=/^(?:input|select|textarea|button)$/i,gt=/^h\d$/i,_t=/^[^{]+\{\s*\[native \w/,yt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,vt=/[+~]/,bt=/'|\\/g,wt=new RegExp("\\\\([\\da-f]{1,6}"+it+"?|("+it+")|.)","ig"),$t=function(e,t,n){var i="0x"+t-65536; |
|
|
return i!==i||n?t:0>i?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)};try{Q.apply(Z=et.call(F.childNodes),F.childNodes),Z[F.childNodes.length].nodeType}catch(kt){Q={apply:Z.length?function(e,t){J.apply(e,et.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}w=t.support={},C=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},I=t.setDocument=function(e){var t,n=e?e.ownerDocument||e:F,i=n.defaultView;return n!==D&&9===n.nodeType&&n.documentElement?(D=n,P=n.documentElement,N=!C(n),i&&i!==i.top&&(i.addEventListener?i.addEventListener("unload",function(){I()},!1):i.attachEvent&&i.attachEvent("onunload",function(){I()})),w.attributes=a(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=a(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=_t.test(n.getElementsByClassName)&&a(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),w.getById=a(function(e){return P.appendChild(e).id=R,!n.getElementsByName||!n.getElementsByName(R).length}),w.getById?($.find.ID=function(e,t){if(typeof t.getElementById!==G&&N){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},$.filter.ID=function(e){var t=e.replace(wt,$t);return function(e){return e.getAttribute("id")===t}}):(delete $.find.ID,$.filter.ID=function(e){var t=e.replace(wt,$t);return function(e){var n=typeof e.getAttributeNode!==G&&e.getAttributeNode("id");return n&&n.value===t}}),$.find.TAG=w.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==G?t.getElementsByTagName(e):void 0}:function(e,t){var n,i=[],a=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[a++];)1===n.nodeType&&i.push(n);return i}return o},$.find.CLASS=w.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==G&&N?t.getElementsByClassName(e):void 0},O=[],L=[],(w.qsa=_t.test(n.querySelectorAll))&&(a(function(e){e.innerHTML="<select msallowclip=''><option selected=''></option></select>",e.querySelectorAll("[msallowclip^='']").length&&L.push("[*^$]="+it+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||L.push("\\["+it+"*(?:value|"+nt+")"),e.querySelectorAll(":checked").length||L.push(":checked")}),a(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&L.push("name"+it+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||L.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),L.push(",.*:")})),(w.matchesSelector=_t.test(U=P.matches||P.webkitMatchesSelector||P.mozMatchesSelector||P.oMatchesSelector||P.msMatchesSelector))&&a(function(e){w.disconnectedMatch=U.call(e,"div"),U.call(e,"[s!='']:x"),O.push("!=",st)}),L=L.length&&new RegExp(L.join("|")),O=O.length&&new RegExp(O.join("|")),t=_t.test(P.compareDocumentPosition),B=t||_t.test(P.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},W=t?function(e,t){if(e===t)return E=!0,0;var i=!e.compareDocumentPosition-!t.compareDocumentPosition;return i?i:(i=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&i||!w.sortDetached&&t.compareDocumentPosition(e)===i?e===n||e.ownerDocument===F&&B(F,e)?-1:t===n||t.ownerDocument===F&&B(F,t)?1:T?tt.call(T,e)-tt.call(T,t):0:4&i?-1:1)}:function(e,t){if(e===t)return E=!0,0;var i,a=0,o=e.parentNode,s=t.parentNode,l=[e],c=[t];if(!o||!s)return e===n?-1:t===n?1:o?-1:s?1:T?tt.call(T,e)-tt.call(T,t):0;if(o===s)return r(e,t);for(i=e;i=i.parentNode;)l.unshift(i);for(i=t;i=i.parentNode;)c.unshift(i);for(;l[a]===c[a];)a++;return a?r(l[a],c[a]):l[a]===F?-1:c[a]===F?1:0},n):D},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==D&&I(e),n=n.replace(ut,"='$1']"),!(!w.matchesSelector||!N||O&&O.test(n)||L&&L.test(n)))try{var i=U.call(e,n);if(i||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return i}catch(a){}return t(n,D,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==D&&I(e),B(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==D&&I(e);var n=$.attrHandle[t.toLowerCase()],i=n&&X.call($.attrHandle,t.toLowerCase())?n(e,t,!N):void 0;return void 0!==i?i:w.attributes||!N?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],i=0,a=0;if(E=!w.detectDuplicates,T=!w.sortStable&&e.slice(0),e.sort(W),E){for(;t=e[a++];)t===e[a]&&(i=n.push(a));for(;i--;)e.splice(n[i],1)}return T=null,e},k=t.getText=function(e){var t,n="",i=0,a=e.nodeType;if(a){if(1===a||9===a||11===a){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=k(e)}else if(3===a||4===a)return e.nodeValue}else for(;t=e[i++];)n+=k(t);return n},$=t.selectors={cacheLength:50,createPseudo:i,match:ht,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(wt,$t),e[3]=(e[3]||e[4]||e[5]||"").replace(wt,$t),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return ht.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&pt.test(n)&&(t=S(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(wt,$t).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=j[e+" "];return t||(t=new RegExp("(^|"+it+")"+e+"("+it+"|$)"))&&j(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==G&&e.getAttribute("class")||"")})},ATTR:function(e,n,i){return function(a){var o=t.attr(a,e);return null==o?"!="===n:n?(o+="","="===n?o===i:"!="===n?o!==i:"^="===n?i&&0===o.indexOf(i):"*="===n?i&&o.indexOf(i)>-1:"$="===n?i&&o.slice(-i.length)===i:"~="===n?(" "+o+" ").indexOf(i)>-1:"|="===n?o===i||o.slice(0,i.length+1)===i+"-":!1):!0}},CHILD:function(e,t,n,i,a){var o="nth"!==e.slice(0,3),r="last"!==e.slice(-4),s="of-type"===t;return 1===i&&0===a?function(e){return!!e.parentNode}:function(t,n,l){var c,d,u,p,m,h,f=o!==r?"nextSibling":"previousSibling",g=t.parentNode,_=s&&t.nodeName.toLowerCase(),y=!l&&!s;if(g){if(o){for(;f;){for(u=t;u=u[f];)if(s?u.nodeName.toLowerCase()===_:1===u.nodeType)return!1;h=f="only"===e&&!h&&"nextSibling"}return!0}if(h=[r?g.firstChild:g.lastChild],r&&y){for(d=g[R]||(g[R]={}),c=d[e]||[],m=c[0]===q&&c[1],p=c[0]===q&&c[2],u=m&&g.childNodes[m];u=++m&&u&&u[f]||(p=m=0)||h.pop();)if(1===u.nodeType&&++p&&u===t){d[e]=[q,m,p];break}}else if(y&&(c=(t[R]||(t[R]={}))[e])&&c[0]===q)p=c[1];else for(;(u=++m&&u&&u[f]||(p=m=0)||h.pop())&&((s?u.nodeName.toLowerCase()!==_:1!==u.nodeType)||!++p||(y&&((u[R]||(u[R]={}))[e]=[q,p]),u!==t)););return p-=a,p===i||p%i===0&&p/i>=0}}},PSEUDO:function(e,n){var a,o=$.pseudos[e]||$.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[R]?o(n):o.length>1?(a=[e,e,"",n],$.setFilters.hasOwnProperty(e.toLowerCase())?i(function(e,t){for(var i,a=o(e,n),r=a.length;r--;)i=tt.call(e,a[r]),e[i]=!(t[i]=a[r])}):function(e){return o(e,0,a)}):o}},pseudos:{not:i(function(e){var t=[],n=[],a=M(e.replace(lt,"$1"));return a[R]?i(function(e,t,n,i){for(var o,r=a(e,null,i,[]),s=e.length;s--;)(o=r[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,a(t,null,o,n),!n.pop()}}),has:i(function(e){return function(n){return t(e,n).length>0}}),contains:i(function(e){return function(t){return(t.textContent||t.innerText||k(t)).indexOf(e)>-1}}),lang:i(function(e){return mt.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(wt,$t).toLowerCase(),function(t){var n;do if(n=N?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===P},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!$.pseudos.empty(e)},header:function(e){return gt.test(e.nodeName)},input:function(e){return ft.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var i=0>n?n+t:n;--i>=0;)e.push(i);return e}),gt:c(function(e,t,n){for(var i=0>n?n+t:n;++i<t;)e.push(i);return e})}},$.pseudos.nth=$.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})$.pseudos[b]=s(b);for(b in{submit:!0,reset:!0})$.pseudos[b]=l(b);return u.prototype=$.filters=$.pseudos,$.setFilters=new u,S=t.tokenize=function(e,n){var i,a,o,r,s,l,c,d=V[e+" "];if(d)return n?0:d.slice(0);for(s=e,l=[],c=$.preFilter;s;){(!i||(a=ct.exec(s)))&&(a&&(s=s.slice(a[0].length)||s),l.push(o=[])),i=!1,(a=dt.exec(s))&&(i=a.shift(),o.push({value:i,type:a[0].replace(lt," ")}),s=s.slice(i.length));for(r in $.filter)!(a=ht[r].exec(s))||c[r]&&!(a=c[r](a))||(i=a.shift(),o.push({value:i,type:r,matches:a}),s=s.slice(i.length));if(!i)break}return n?s.length:s?t.error(e):V(e,l).slice(0)},M=t.compile=function(e,t){var n,i=[],a=[],o=z[e+" "];if(!o){for(t||(t=S(e)),n=t.length;n--;)o=y(t[n]),o[R]?i.push(o):a.push(o);o=z(e,v(a,i)),o.selector=e}return o},x=t.select=function(e,t,n,i){var a,o,r,s,l,c="function"==typeof e&&e,u=!i&&S(e=c.selector||e);if(n=n||[],1===u.length){if(o=u[0]=u[0].slice(0),o.length>2&&"ID"===(r=o[0]).type&&w.getById&&9===t.nodeType&&N&&$.relative[o[1].type]){if(t=($.find.ID(r.matches[0].replace(wt,$t),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(a=ht.needsContext.test(e)?0:o.length;a--&&(r=o[a],!$.relative[s=r.type]);)if((l=$.find[s])&&(i=l(r.matches[0].replace(wt,$t),vt.test(o[0].type)&&d(t.parentNode)||t))){if(o.splice(a,1),e=i.length&&p(o),!e)return Q.apply(n,i),n;break}}return(c||M(e,u))(i,t,!N,n,vt.test(e)&&d(t.parentNode)||t),n},w.sortStable=R.split("").sort(W).join("")===R,w.detectDuplicates=!!E,I(),w.sortDetached=a(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),a(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&a(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),a(function(e){return null==e.getAttribute("disabled")})||o(nt,function(e,t,n){var i;return n?void 0:e[t]===!0?t.toLowerCase():(i=e.getAttributeNode(t))&&i.specified?i.value:null}),t}(e);at.find=ct,at.expr=ct.selectors,at.expr[":"]=at.expr.pseudos,at.unique=ct.uniqueSort,at.text=ct.getText,at.isXMLDoc=ct.isXML,at.contains=ct.contains;var dt=at.expr.match.needsContext,ut=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,pt=/^.[^:#\[\.,]*$/;at.filter=function(e,t,n){var i=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===i.nodeType?at.find.matchesSelector(i,e)?[i]:[]:at.find.matches(e,at.grep(t,function(e){return 1===e.nodeType}))},at.fn.extend({find:function(e){var t,n=[],i=this,a=i.length;if("string"!=typeof e)return this.pushStack(at(e).filter(function(){for(t=0;a>t;t++)if(at.contains(i[t],this))return!0}));for(t=0;a>t;t++)at.find(e,i[t],n);return n=this.pushStack(a>1?at.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(i(this,e||[],!1))},not:function(e){return this.pushStack(i(this,e||[],!0))},is:function(e){return!!i(this,"string"==typeof e&&dt.test(e)?at(e):e||[],!1).length}});var mt,ht=e.document,ft=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,gt=at.fn.init=function(e,t){var n,i;if(!e)return this;if("string"==typeof e){if(n="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:ft.exec(e),!n||!n[1]&&t)return!t||t.jquery?(t||mt).find(e):this.constructor(t).find(e);if(n[1]){if(t=t instanceof at?t[0]:t,at.merge(this,at.parseHTML(n[1],t&&t.nodeType?t.ownerDocument||t:ht,!0)),ut.test(n[1])&&at.isPlainObject(t))for(n in t)at.isFunction(this[n])?this[n](t[n]):this.attr(n,t[n]);return this}if(i=ht.getElementById(n[2]),i&&i.parentNode){if(i.id!==n[2])return mt.find(e);this.length=1,this[0]=i}return this.context=ht,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):at.isFunction(e)?"undefined"!=typeof mt.ready?mt.ready(e):e(at):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),at.makeArray(e,this))};gt.prototype=at.fn,mt=at(ht);var _t=/^(?:parents|prev(?:Until|All))/,yt={children:!0,contents:!0,next:!0,prev:!0};at.extend({dir:function(e,t,n){for(var i=[],a=e[t];a&&9!==a.nodeType&&(void 0===n||1!==a.nodeType||!at(a).is(n));)1===a.nodeType&&i.push(a),a=a[t];return i},sibling:function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}}),at.fn.extend({has:function(e){var t,n=at(e,this),i=n.length;return this.filter(function(){for(t=0;i>t;t++)if(at.contains(this,n[t]))return!0})},closest:function(e,t){for(var n,i=0,a=this.length,o=[],r=dt.test(e)||"string"!=typeof e?at(e,t||this.context):0;a>i;i++)for(n=this[i];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(r?r.index(n)>-1:1===n.nodeType&&at.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?at.unique(o):o)},index:function(e){return e?"string"==typeof e?at.inArray(this[0],at(e)):at.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(at.unique(at.merge(this.get(),at(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),at.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return at.dir(e,"parentNode")},parentsUntil:function(e,t,n){return at.dir(e,"parentNode",n)},next:function(e){return a(e,"nextSibling")},prev:function(e){return a(e,"previousSibling")},nextAll:function(e){return at.dir(e,"nextSibling")},prevAll:function(e){return at.dir(e,"previousSibling")},nextUntil:function(e,t,n){return at.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return at.dir(e,"previousSibling",n)},siblings:function(e){return at.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return at.sibling(e.firstChild)},contents:function(e){return at.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:at.merge([],e.childNodes)}},function(e,t){at.fn[e]=function(n,i){var a=at.map(this,t,n);return"Until"!==e.slice(-5)&&(i=n),i&&"string"==typeof i&&(a=at.filter(i,a)),this.length>1&&(yt[e]||(a=at.unique(a)),_t.test(e)&&(a=a.reverse())),this.pushStack(a)}});var vt=/\S+/g,bt={};at.Callbacks=function(e){e="string"==typeof e?bt[e]||o(e):at.extend({},e);var t,n,i,a,r,s,l=[],c=!e.once&&[],d=function(o){for(n=e.memory&&o,i=!0,r=s||0,s=0,a=l.length,t=!0;l&&a>r;r++)if(l[r].apply(o[0],o[1])===!1&&e.stopOnFalse){n=!1;break}t=!1,l&&(c?c.length&&d(c.shift()):n?l=[]:u.disable())},u={add:function(){if(l){var i=l.length;!function o(t){at.each(t,function(t,n){var i=at.type(n);"function"===i?e.unique&&u.has(n)||l.push(n):n&&n.length&&"string"!==i&&o(n)})}(arguments),t?a=l.length:n&&(s=i,d(n))}return this},remove:function(){return l&&at.each(arguments,function(e,n){for(var i;(i=at.inArray(n,l,i))>-1;)l.splice(i,1),t&&(a>=i&&a--,r>=i&&r--)}),this},has:function(e){return e?at.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],a=0,this},disable:function(){return l=c=n=void 0,this},disabled:function(){return!l},lock:function(){return c=void 0,n||u.disable(),this},locked:function(){return!c},fireWith:function(e,n){return!l||i&&!c||(n=n||[],n=[e,n.slice?n.slice():n],t?c.push(n):d(n)),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},at.extend({Deferred:function(e){var t=[["resolve","done",at.Callbacks("once memory"),"resolved"],["reject","fail",at.Callbacks("once memory"),"rejected"],["notify","progress",at.Callbacks("memory")]],n="pending",i={state:function(){return n},always:function(){return a.done(arguments).fail(arguments),this},then:function(){var e=arguments;return at.Deferred(function(n){at.each(t,function(t,o){var r=at.isFunction(e[t])&&e[t];a[o[1]](function(){var e=r&&r.apply(this,arguments);e&&at.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[o[0]+"With"](this===i?n.promise():this,r?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?at.extend(e,i):i}},a={};return i.pipe=i.then,at.each(t,function(e,o){var r=o[2],s=o[3];i[o[1]]=r.add,s&&r.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),a[o[0]]=function(){return a[o[0]+"With"](this===a?i:this,arguments),this},a[o[0]+"With"]=r.fireWith}),i.promise(a),e&&e.call(a,a),a},when:function(e){var t,n,i,a=0,o=X.call(arguments),r=o.length,s=1!==r||e&&at.isFunction(e.promise)?r:0,l=1===s?e:at.Deferred(),c=function(e,n,i){return function(a){n[e]=this,i[e]=arguments.length>1?X.call(arguments):a,i===t?l.notifyWith(n,i):--s||l.resolveWith(n,i)}};if(r>1)for(t=new Array(r),n=new Array(r),i=new Array(r);r>a;a++)o[a]&&at.isFunction(o[a].promise)?o[a].promise().done(c(a,i,o)).fail(l.reject).progress(c(a,n,t)):--s;return s||l.resolveWith(i,o),l.promise()}});var wt;at.fn.ready=function(e){return at.ready.promise().done(e),this},at.extend({isReady:!1,readyWait:1,holdReady:function(e){e?at.readyWait++:at.ready(!0)},ready:function(e){if(e===!0?!--at.readyWait:!at.isReady){if(!ht.body)return setTimeout(at.ready);at.isReady=!0,e!==!0&&--at.readyWait>0||(wt.resolveWith(ht,[at]),at.fn.triggerHandler&&(at(ht).triggerHandler("ready"),at(ht).off("ready")))}}}),at.ready.promise=function(t){if(!wt)if(wt=at.Deferred(),"complete"===ht.readyState)setTimeout(at.ready);else if(ht.addEventListener)ht.addEventListener("DOMContentLoaded",s,!1),e.addEventListener("load",s,!1);else{ht.attachEvent("onreadystatechange",s),e.attachEvent("onload",s);var n=!1;try{n=null==e.frameElement&&ht.documentElement}catch(i){}n&&n.doScroll&&!function a(){if(!at.isReady){try{n.doScroll("left")}catch(e){return setTimeout(a,50)}r(),at.ready()}}()}return wt.promise(t)};var $t,kt="undefined";for($t in at(nt))break;nt.ownLast="0"!==$t,nt.inlineBlockNeedsLayout=!1,at(function(){var e,t,n,i;n=ht.getElementsByTagName("body")[0],n&&n.style&&(t=ht.createElement("div"),i=ht.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),typeof t.style.zoom!==kt&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",nt.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(i))}),function(){var e=ht.createElement("div");if(null==nt.deleteExpando){nt.deleteExpando=!0;try{delete e.test}catch(t){nt.deleteExpando=!1}}e=null}(),at.acceptData=function(e){var t=at.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return 1!==n&&9!==n?!1:!t||t!==!0&&e.getAttribute("classid")===t};var Ct=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,St=/([A-Z])/g;at.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?at.cache[e[at.expando]]:e[at.expando],!!e&&!c(e)},data:function(e,t,n){return d(e,t,n)},removeData:function(e,t){return u(e,t)},_data:function(e,t,n){return d(e,t,n,!0)},_removeData:function(e,t){return u(e,t,!0)}}),at.fn.extend({data:function(e,t){var n,i,a,o=this[0],r=o&&o.attributes;if(void 0===e){if(this.length&&(a=at.data(o),1===o.nodeType&&!at._data(o,"parsedAttrs"))){for(n=r.length;n--;)r[n]&&(i=r[n].name,0===i.indexOf("data-")&&(i=at.camelCase(i.slice(5)),l(o,i,a[i])));at._data(o,"parsedAttrs",!0)}return a}return"object"==typeof e?this.each(function(){at.data(this,e)}):arguments.length>1?this.each(function(){at.data(this,e,t)}):o?l(o,e,at.data(o,e)):void 0},removeData:function(e){return this.each(function(){at.removeData(this,e)})}}),at.extend({queue:function(e,t,n){var i;return e?(t=(t||"fx")+"queue",i=at._data(e,t),n&&(!i||at.isArray(n)?i=at._data(e,t,at.makeArray(n)):i.push(n)),i||[]):void 0},dequeue:function(e,t){t=t||"fx";var n=at.queue(e,t),i=n.length,a=n.shift(),o=at._queueHooks(e,t),r=function(){at.dequeue(e,t)};"inprogress"===a&&(a=n.shift(),i--),a&&("fx"===t&&n.unshift("inprogress"),delete o.stop,a.call(e,r,o)),!i&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return at._data(e,n)||at._data(e,n,{empty:at.Callbacks("once memory").add(function(){at._removeData(e,t+"queue"),at._removeData(e,n)})})}}),at.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?at.queue(this[0],e):void 0===t?this:this.each(function(){var n=at.queue(this,e,t);at._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&at.dequeue(this,e)})},dequeue:function(e){return this.each(function(){at.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,i=1,a=at.Deferred(),o=this,r=this.length,s=function(){--i||a.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";r--;)n=at._data(o[r],e+"queueHooks"),n&&n.empty&&(i++,n.empty.add(s));return s(),a.promise(t)}});var Mt=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,xt=["Top","Right","Bottom","Left"],At=function(e,t){return e=t||e,"none"===at.css(e,"display")||!at.contains(e.ownerDocument,e)},Tt=at.access=function(e,t,n,i,a,o,r){var s=0,l=e.length,c=null==n;if("object"===at.type(n)){a=!0;for(s in n)at.access(e,t,s,n[s],!0,o,r)}else if(void 0!==i&&(a=!0,at.isFunction(i)||(r=!0),c&&(r?(t.call(e,i),t=null):(c=t,t=function(e,t,n){return c.call(at(e),n)})),t))for(;l>s;s++)t(e[s],n,r?i:i.call(e[s],s,t(e[s],n)));return a?e:c?t.call(e):l?t(e[0],n):o},Et=/^(?:checkbox|radio)$/i;!function(){var e=ht.createElement("input"),t=ht.createElement("div"),n=ht.createDocumentFragment();if(t.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",nt.leadingWhitespace=3===t.firstChild.nodeType,nt.tbody=!t.getElementsByTagName("tbody").length,nt.htmlSerialize=!!t.getElementsByTagName("link").length,nt.html5Clone="<:nav></:nav>"!==ht.createElement("nav").cloneNode(!0).outerHTML,e.type="checkbox",e.checked=!0,n.appendChild(e),nt.appendChecked=e.checked,t.innerHTML="<textarea>x</textarea>",nt.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue,n.appendChild(t),t.innerHTML="<input type='radio' checked='checked' name='t'/>",nt.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,nt.noCloneEvent=!0,t.attachEvent&&(t.attachEvent("onclick",function(){nt.noCloneEvent=!1}),t.cloneNode(!0).click()),null==nt.deleteExpando){nt.deleteExpando=!0;try{delete t.test}catch(i){nt.deleteExpando=!1}}}(),function(){var t,n,i=ht.createElement("div");for(t in{submit:!0,change:!0,focusin:!0})n="on"+t,(nt[t+"Bubbles"]=n in e)||(i.setAttribute(n,"t"),nt[t+"Bubbles"]=i.attributes[n].expando===!1);i=null}();var It=/^(?:input|select|textarea)$/i,Dt=/^key/,Pt=/^(?:mouse|pointer|contextmenu)|click/,Nt=/^(?:focusinfocus|focusoutblur)$/,Lt=/^([^.]*)(?:\.(.+)|)$/;at.event={global:{},add:function(e,t,n,i,a){var o,r,s,l,c,d,u,p,m,h,f,g=at._data(e);if(g){for(n.handler&&(l=n,n=l.handler,a=l.selector),n.guid||(n.guid=at.guid++),(r=g.events)||(r=g.events={}),(d=g.handle)||(d=g.handle=function(e){return typeof at===kt||e&&at.event.triggered===e.type?void 0:at.event.dispatch.apply(d.elem,arguments)},d.elem=e),t=(t||"").match(vt)||[""],s=t.length;s--;)o=Lt.exec(t[s])||[],m=f=o[1],h=(o[2]||"").split(".").sort(),m&&(c=at.event.special[m]||{},m=(a?c.delegateType:c.bindType)||m,c=at.event.special[m]||{},u=at.extend({type:m,origType:f,data:i,handler:n,guid:n.guid,selector:a,needsContext:a&&at.expr.match.needsContext.test(a),namespace:h.join(".")},l),(p=r[m])||(p=r[m]=[],p.delegateCount=0,c.setup&&c.setup.call(e,i,h,d)!==!1||(e.addEventListener?e.addEventListener(m,d,!1):e.attachEvent&&e.attachEvent("on"+m,d))),c.add&&(c.add.call(e,u),u.handler.guid||(u.handler.guid=n.guid)),a?p.splice(p.delegateCount++,0,u):p.push(u),at.event.global[m]=!0);e=null}},remove:function(e,t,n,i,a){var o,r,s,l,c,d,u,p,m,h,f,g=at.hasData(e)&&at._data(e);if(g&&(d=g.events)){for(t=(t||"").match(vt)||[""],c=t.length;c--;)if(s=Lt.exec(t[c])||[],m=f=s[1],h=(s[2]||"").split(".").sort(),m){for(u=at.event.special[m]||{},m=(i?u.delegateType:u.bindType)||m,p=d[m]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=p.length;o--;)r=p[o],!a&&f!==r.origType||n&&n.guid!==r.guid||s&&!s.test(r.namespace)||i&&i!==r.selector&&("**"!==i||!r.selector)||(p.splice(o,1),r.selector&&p.delegateCount--,u.remove&&u.remove.call(e,r));l&&!p.length&&(u.teardown&&u.teardown.call(e,h,g.handle)!==!1||at.removeEvent(e,m,g.handle),delete d[m])}else for(m in d)at.event.remove(e,m+t[c],n,i,!0);at.isEmptyObject(d)&&(delete g.handle,at._removeData(e,"events"))}},trigger:function(t,n,i,a){var o,r,s,l,c,d,u,p=[i||ht],m=tt.call(t,"type")?t.type:t,h=tt.call(t,"namespace")?t.namespace.split("."):[];if(s=d=i=i||ht,3!==i.nodeType&&8!==i.nodeType&&!Nt.test(m+at.event.triggered)&&(m.indexOf(".")>=0&&(h=m.split("."),m=h.shift(),h.sort()),r=m.indexOf(":")<0&&"on"+m,t=t[at.expando]?t:new at.Event(m,"object"==typeof t&&t),t.isTrigger=a?2:3,t.namespace=h.join("."),t.namespace_re=t.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:at.makeArray(n,[t]),c=at.event.special[m]||{},a||!c.trigger||c.trigger.apply(i,n)!==!1)){if(!a&&!c.noBubble&&!at.isWindow(i)){for(l=c.delegateType||m,Nt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)p.push(s),d=s;d===(i.ownerDocument||ht)&&p.push(d.defaultView||d.parentWindow||e)}for(u=0;(s=p[u++])&&!t.isPropagationStopped();)t.type=u>1?l:c.bindType||m,o=(at._data(s,"events")||{})[t.type]&&at._data(s,"handle"),o&&o.apply(s,n),o=r&&s[r],o&&o.apply&&at.acceptData(s)&&(t.result=o.apply(s,n),t.result===!1&&t.preventDefault());if(t.type=m,!a&&!t.isDefaultPrevented()&&(!c._default||c._default.apply(p.pop(),n)===!1)&&at.acceptData(i)&&r&&i[m]&&!at.isWindow(i)){d=i[r],d&&(i[r]=null),at.event.triggered=m;try{i[m]()}catch(f){}at.event.triggered=void 0,d&&(i[r]=d)}return t.result}},dispatch:function(e){e=at.event.fix(e);var t,n,i,a,o,r=[],s=X.call(arguments),l=(at._data(this,"events")||{})[e.type]||[],c=at.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(r=at.event.handlers.call(this,e,l),t=0;(a=r[t++])&&!e.isPropagationStopped();)for(e.currentTarget=a.elem,o=0;(i=a.handlers[o++])&&!e.isImmediatePropagationStopped();)(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,n=((at.event.special[i.origType]||{}).handle||i.handler).apply(a.elem,s),void 0!==n&&(e.result=n)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,i,a,o,r=[],s=t.delegateCount,l=e.target;if(s&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(a=[],o=0;s>o;o++)i=t[o],n=i.selector+" ",void 0===a[n]&&(a[n]=i.needsContext?at(n,this).index(l)>=0:at.find(n,this,null,[l]).length),a[n]&&a.push(i);a.length&&r.push({elem:l,handlers:a})}return s<t.length&&r.push({elem:this,handlers:t.slice(s)}),r},fix:function(e){if(e[at.expando])return e;var t,n,i,a=e.type,o=e,r=this.fixHooks[a];for(r||(this.fixHooks[a]=r=Pt.test(a)?this.mouseHooks:Dt.test(a)?this.keyHooks:{}),i=r.props?this.props.concat(r.props):this.props,e=new at.Event(o),t=i.length;t--;)n=i[t],e[n]=o[n];return e.target||(e.target=o.srcElement||ht),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,r.filter?r.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,i,a,o=t.button,r=t.fromElement;return null==e.pageX&&null!=t.clientX&&(i=e.target.ownerDocument||ht,a=i.documentElement,n=i.body,e.pageX=t.clientX+(a&&a.scrollLeft||n&&n.scrollLeft||0)-(a&&a.clientLeft||n&&n.clientLeft||0),e.pageY=t.clientY+(a&&a.scrollTop||n&&n.scrollTop||0)-(a&&a.clientTop||n&&n.clientTop||0)),!e.relatedTarget&&r&&(e.relatedTarget=r===e.target?t.toElement:r),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==h()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===h()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return at.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(e){return at.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,i){var a=at.extend(new at.Event,n,{type:e,isSimulated:!0,originalEvent:{}});i?at.event.trigger(a,null,t):at.event.dispatch.call(t,a),a.isDefaultPrevented()&&n.preventDefault()}},at.removeEvent=ht.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var i="on"+t;e.detachEvent&&(typeof e[i]===kt&&(e[i]=null),e.detachEvent(i,n))},at.Event=function(e,t){return this instanceof at.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?p:m):this.type=e,t&&at.extend(this,t),this.timeStamp=e&&e.timeStamp||at.now(),void(this[at.expando]=!0)):new at.Event(e,t)},at.Event.prototype={isDefaultPrevented:m,isPropagationStopped:m,isImmediatePropagationStopped:m,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=p,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=p,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=p,e&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),this.stopPropagation()}},at.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){at.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,i=this,a=e.relatedTarget,o=e.handleObj; |
|
|
return(!a||a!==i&&!at.contains(i,a))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),nt.submitBubbles||(at.event.special.submit={setup:function(){return at.nodeName(this,"form")?!1:void at.event.add(this,"click._submit keypress._submit",function(e){var t=e.target,n=at.nodeName(t,"input")||at.nodeName(t,"button")?t.form:void 0;n&&!at._data(n,"submitBubbles")&&(at.event.add(n,"submit._submit",function(e){e._submit_bubble=!0}),at._data(n,"submitBubbles",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&at.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return at.nodeName(this,"form")?!1:void at.event.remove(this,"._submit")}}),nt.changeBubbles||(at.event.special.change={setup:function(){return It.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(at.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),at.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),at.event.simulate("change",this,e,!0)})),!1):void at.event.add(this,"beforeactivate._change",function(e){var t=e.target;It.test(t.nodeName)&&!at._data(t,"changeBubbles")&&(at.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||at.event.simulate("change",this.parentNode,e,!0)}),at._data(t,"changeBubbles",!0))})},handle:function(e){var t=e.target;return this!==t||e.isSimulated||e.isTrigger||"radio"!==t.type&&"checkbox"!==t.type?e.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return at.event.remove(this,"._change"),!It.test(this.nodeName)}}),nt.focusinBubbles||at.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){at.event.simulate(t,e.target,at.event.fix(e),!0)};at.event.special[t]={setup:function(){var i=this.ownerDocument||this,a=at._data(i,t);a||i.addEventListener(e,n,!0),at._data(i,t,(a||0)+1)},teardown:function(){var i=this.ownerDocument||this,a=at._data(i,t)-1;a?at._data(i,t,a):(i.removeEventListener(e,n,!0),at._removeData(i,t))}}}),at.fn.extend({on:function(e,t,n,i,a){var o,r;if("object"==typeof e){"string"!=typeof t&&(n=n||t,t=void 0);for(o in e)this.on(o,t,n,e[o],a);return this}if(null==n&&null==i?(i=t,n=t=void 0):null==i&&("string"==typeof t?(i=n,n=void 0):(i=n,n=t,t=void 0)),i===!1)i=m;else if(!i)return this;return 1===a&&(r=i,i=function(e){return at().off(e),r.apply(this,arguments)},i.guid=r.guid||(r.guid=at.guid++)),this.each(function(){at.event.add(this,e,i,n,t)})},one:function(e,t,n,i){return this.on(e,t,n,i,1)},off:function(e,t,n){var i,a;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,at(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(a in e)this.off(a,t,e[a]);return this}return(t===!1||"function"==typeof t)&&(n=t,t=void 0),n===!1&&(n=m),this.each(function(){at.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){at.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?at.event.trigger(e,t,n,!0):void 0}});var Ot="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",Ut=/ jQuery\d+="(?:null|\d+)"/g,Bt=new RegExp("<(?:"+Ot+")[\\s/>]","i"),Rt=/^\s+/,Ft=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,qt=/<([\w:]+)/,Ht=/<tbody/i,jt=/<|&#?\w+;/,Vt=/<(?:script|style|link)/i,zt=/checked\s*(?:[^=]|=\s*.checked.)/i,Wt=/^$|\/(?:java|ecma)script/i,Gt=/^true\/(.*)/,Kt=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Xt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:nt.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},Zt=f(ht),Yt=Zt.appendChild(ht.createElement("div"));Xt.optgroup=Xt.option,Xt.tbody=Xt.tfoot=Xt.colgroup=Xt.caption=Xt.thead,Xt.th=Xt.td,at.extend({clone:function(e,t,n){var i,a,o,r,s,l=at.contains(e.ownerDocument,e);if(nt.html5Clone||at.isXMLDoc(e)||!Bt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Yt.innerHTML=e.outerHTML,Yt.removeChild(o=Yt.firstChild)),!(nt.noCloneEvent&&nt.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||at.isXMLDoc(e)))for(i=g(o),s=g(e),r=0;null!=(a=s[r]);++r)i[r]&&k(a,i[r]);if(t)if(n)for(s=s||g(e),i=i||g(o),r=0;null!=(a=s[r]);r++)$(a,i[r]);else $(e,o);return i=g(o,"script"),i.length>0&&w(i,!l&&g(e,"script")),i=s=a=null,o},buildFragment:function(e,t,n,i){for(var a,o,r,s,l,c,d,u=e.length,p=f(t),m=[],h=0;u>h;h++)if(o=e[h],o||0===o)if("object"===at.type(o))at.merge(m,o.nodeType?[o]:o);else if(jt.test(o)){for(s=s||p.appendChild(t.createElement("div")),l=(qt.exec(o)||["",""])[1].toLowerCase(),d=Xt[l]||Xt._default,s.innerHTML=d[1]+o.replace(Ft,"<$1></$2>")+d[2],a=d[0];a--;)s=s.lastChild;if(!nt.leadingWhitespace&&Rt.test(o)&&m.push(t.createTextNode(Rt.exec(o)[0])),!nt.tbody)for(o="table"!==l||Ht.test(o)?"<table>"!==d[1]||Ht.test(o)?0:s:s.firstChild,a=o&&o.childNodes.length;a--;)at.nodeName(c=o.childNodes[a],"tbody")&&!c.childNodes.length&&o.removeChild(c);for(at.merge(m,s.childNodes),s.textContent="";s.firstChild;)s.removeChild(s.firstChild);s=p.lastChild}else m.push(t.createTextNode(o));for(s&&p.removeChild(s),nt.appendChecked||at.grep(g(m,"input"),_),h=0;o=m[h++];)if((!i||-1===at.inArray(o,i))&&(r=at.contains(o.ownerDocument,o),s=g(p.appendChild(o),"script"),r&&w(s),n))for(a=0;o=s[a++];)Wt.test(o.type||"")&&n.push(o);return s=null,p},cleanData:function(e,t){for(var n,i,a,o,r=0,s=at.expando,l=at.cache,c=nt.deleteExpando,d=at.event.special;null!=(n=e[r]);r++)if((t||at.acceptData(n))&&(a=n[s],o=a&&l[a])){if(o.events)for(i in o.events)d[i]?at.event.remove(n,i):at.removeEvent(n,i,o.handle);l[a]&&(delete l[a],c?delete n[s]:typeof n.removeAttribute!==kt?n.removeAttribute(s):n[s]=null,K.push(a))}}}),at.fn.extend({text:function(e){return Tt(this,function(e){return void 0===e?at.text(this):this.empty().append((this[0]&&this[0].ownerDocument||ht).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=y(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=y(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){for(var n,i=e?at.filter(e,this):this,a=0;null!=(n=i[a]);a++)t||1!==n.nodeType||at.cleanData(g(n)),n.parentNode&&(t&&at.contains(n.ownerDocument,n)&&w(g(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&at.cleanData(g(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&at.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return at.clone(this,e,t)})},html:function(e){return Tt(this,function(e){var t=this[0]||{},n=0,i=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(Ut,""):void 0;if(!("string"!=typeof e||Vt.test(e)||!nt.htmlSerialize&&Bt.test(e)||!nt.leadingWhitespace&&Rt.test(e)||Xt[(qt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(Ft,"<$1></$2>");try{for(;i>n;n++)t=this[n]||{},1===t.nodeType&&(at.cleanData(g(t,!1)),t.innerHTML=e);t=0}catch(a){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=arguments[0];return this.domManip(arguments,function(t){e=this.parentNode,at.cleanData(g(this)),e&&e.replaceChild(t,this)}),e&&(e.length||e.nodeType)?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t){e=Z.apply([],e);var n,i,a,o,r,s,l=0,c=this.length,d=this,u=c-1,p=e[0],m=at.isFunction(p);if(m||c>1&&"string"==typeof p&&!nt.checkClone&&zt.test(p))return this.each(function(n){var i=d.eq(n);m&&(e[0]=p.call(this,n,i.html())),i.domManip(e,t)});if(c&&(s=at.buildFragment(e,this[0].ownerDocument,!1,this),n=s.firstChild,1===s.childNodes.length&&(s=n),n)){for(o=at.map(g(s,"script"),v),a=o.length;c>l;l++)i=s,l!==u&&(i=at.clone(i,!0,!0),a&&at.merge(o,g(i,"script"))),t.call(this[l],i,l);if(a)for(r=o[o.length-1].ownerDocument,at.map(o,b),l=0;a>l;l++)i=o[l],Wt.test(i.type||"")&&!at._data(i,"globalEval")&&at.contains(r,i)&&(i.src?at._evalUrl&&at._evalUrl(i.src):at.globalEval((i.text||i.textContent||i.innerHTML||"").replace(Kt,"")));s=n=null}return this}}),at.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){at.fn[e]=function(e){for(var n,i=0,a=[],o=at(e),r=o.length-1;r>=i;i++)n=i===r?this:this.clone(!0),at(o[i])[t](n),Y.apply(a,n.get());return this.pushStack(a)}});var Jt,Qt={};!function(){var e;nt.shrinkWrapBlocks=function(){if(null!=e)return e;e=!1;var t,n,i;return n=ht.getElementsByTagName("body")[0],n&&n.style?(t=ht.createElement("div"),i=ht.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),typeof t.style.zoom!==kt&&(t.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",t.appendChild(ht.createElement("div")).style.width="5px",e=3!==t.offsetWidth),n.removeChild(i),e):void 0}}();var en,tn,nn=/^margin/,an=new RegExp("^("+Mt+")(?!px)[a-z%]+$","i"),on=/^(top|right|bottom|left)$/;e.getComputedStyle?(en=function(e){return e.ownerDocument.defaultView.getComputedStyle(e,null)},tn=function(e,t,n){var i,a,o,r,s=e.style;return n=n||en(e),r=n?n.getPropertyValue(t)||n[t]:void 0,n&&(""!==r||at.contains(e.ownerDocument,e)||(r=at.style(e,t)),an.test(r)&&nn.test(t)&&(i=s.width,a=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=r,r=n.width,s.width=i,s.minWidth=a,s.maxWidth=o)),void 0===r?r:r+""}):ht.documentElement.currentStyle&&(en=function(e){return e.currentStyle},tn=function(e,t,n){var i,a,o,r,s=e.style;return n=n||en(e),r=n?n[t]:void 0,null==r&&s&&s[t]&&(r=s[t]),an.test(r)&&!on.test(t)&&(i=s.left,a=e.runtimeStyle,o=a&&a.left,o&&(a.left=e.currentStyle.left),s.left="fontSize"===t?"1em":r,r=s.pixelLeft+"px",s.left=i,o&&(a.left=o)),void 0===r?r:r+""||"auto"}),!function(){function t(){var t,n,i,a;n=ht.getElementsByTagName("body")[0],n&&n.style&&(t=ht.createElement("div"),i=ht.createElement("div"),i.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(i).appendChild(t),t.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",o=r=!1,l=!0,e.getComputedStyle&&(o="1%"!==(e.getComputedStyle(t,null)||{}).top,r="4px"===(e.getComputedStyle(t,null)||{width:"4px"}).width,a=t.appendChild(ht.createElement("div")),a.style.cssText=t.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",a.style.marginRight=a.style.width="0",t.style.width="1px",l=!parseFloat((e.getComputedStyle(a,null)||{}).marginRight)),t.innerHTML="<table><tr><td></td><td>t</td></tr></table>",a=t.getElementsByTagName("td"),a[0].style.cssText="margin:0;border:0;padding:0;display:none",s=0===a[0].offsetHeight,s&&(a[0].style.display="",a[1].style.display="none",s=0===a[0].offsetHeight),n.removeChild(i))}var n,i,a,o,r,s,l;n=ht.createElement("div"),n.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=n.getElementsByTagName("a")[0],(i=a&&a.style)&&(i.cssText="float:left;opacity:.5",nt.opacity="0.5"===i.opacity,nt.cssFloat=!!i.cssFloat,n.style.backgroundClip="content-box",n.cloneNode(!0).style.backgroundClip="",nt.clearCloneStyle="content-box"===n.style.backgroundClip,nt.boxSizing=""===i.boxSizing||""===i.MozBoxSizing||""===i.WebkitBoxSizing,at.extend(nt,{reliableHiddenOffsets:function(){return null==s&&t(),s},boxSizingReliable:function(){return null==r&&t(),r},pixelPosition:function(){return null==o&&t(),o},reliableMarginRight:function(){return null==l&&t(),l}}))}(),at.swap=function(e,t,n,i){var a,o,r={};for(o in t)r[o]=e.style[o],e.style[o]=t[o];a=n.apply(e,i||[]);for(o in t)e.style[o]=r[o];return a};var rn=/alpha\([^)]*\)/i,sn=/opacity\s*=\s*([^)]*)/,ln=/^(none|table(?!-c[ea]).+)/,cn=new RegExp("^("+Mt+")(.*)$","i"),dn=new RegExp("^([+-])=("+Mt+")","i"),un={position:"absolute",visibility:"hidden",display:"block"},pn={letterSpacing:"0",fontWeight:"400"},mn=["Webkit","O","Moz","ms"];at.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=tn(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":nt.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var a,o,r,s=at.camelCase(t),l=e.style;if(t=at.cssProps[s]||(at.cssProps[s]=x(l,s)),r=at.cssHooks[t]||at.cssHooks[s],void 0===n)return r&&"get"in r&&void 0!==(a=r.get(e,!1,i))?a:l[t];if(o=typeof n,"string"===o&&(a=dn.exec(n))&&(n=(a[1]+1)*a[2]+parseFloat(at.css(e,t)),o="number"),null!=n&&n===n&&("number"!==o||at.cssNumber[s]||(n+="px"),nt.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),!(r&&"set"in r&&void 0===(n=r.set(e,n,i)))))try{l[t]=n}catch(c){}}},css:function(e,t,n,i){var a,o,r,s=at.camelCase(t);return t=at.cssProps[s]||(at.cssProps[s]=x(e.style,s)),r=at.cssHooks[t]||at.cssHooks[s],r&&"get"in r&&(o=r.get(e,!0,n)),void 0===o&&(o=tn(e,t,i)),"normal"===o&&t in pn&&(o=pn[t]),""===n||n?(a=parseFloat(o),n===!0||at.isNumeric(a)?a||0:o):o}}),at.each(["height","width"],function(e,t){at.cssHooks[t]={get:function(e,n,i){return n?ln.test(at.css(e,"display"))&&0===e.offsetWidth?at.swap(e,un,function(){return I(e,t,i)}):I(e,t,i):void 0},set:function(e,n,i){var a=i&&en(e);return T(e,n,i?E(e,t,i,nt.boxSizing&&"border-box"===at.css(e,"boxSizing",!1,a),a):0)}}}),nt.opacity||(at.cssHooks.opacity={get:function(e,t){return sn.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,i=e.currentStyle,a=at.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=i&&i.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===at.trim(o.replace(rn,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||i&&!i.filter)||(n.filter=rn.test(o)?o.replace(rn,a):o+" "+a)}}),at.cssHooks.marginRight=M(nt.reliableMarginRight,function(e,t){return t?at.swap(e,{display:"inline-block"},tn,[e,"marginRight"]):void 0}),at.each({margin:"",padding:"",border:"Width"},function(e,t){at.cssHooks[e+t]={expand:function(n){for(var i=0,a={},o="string"==typeof n?n.split(" "):[n];4>i;i++)a[e+xt[i]+t]=o[i]||o[i-2]||o[0];return a}},nn.test(e)||(at.cssHooks[e+t].set=T)}),at.fn.extend({css:function(e,t){return Tt(this,function(e,t,n){var i,a,o={},r=0;if(at.isArray(t)){for(i=en(e),a=t.length;a>r;r++)o[t[r]]=at.css(e,t[r],!1,i);return o}return void 0!==n?at.style(e,t,n):at.css(e,t)},e,t,arguments.length>1)},show:function(){return A(this,!0)},hide:function(){return A(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){At(this)?at(this).show():at(this).hide()})}}),at.Tween=D,D.prototype={constructor:D,init:function(e,t,n,i,a,o){this.elem=e,this.prop=n,this.easing=a||"swing",this.options=t,this.start=this.now=this.cur(),this.end=i,this.unit=o||(at.cssNumber[n]?"":"px")},cur:function(){var e=D.propHooks[this.prop];return e&&e.get?e.get(this):D.propHooks._default.get(this)},run:function(e){var t,n=D.propHooks[this.prop];return this.pos=t=this.options.duration?at.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):D.propHooks._default.set(this),this}},D.prototype.init.prototype=D.prototype,D.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=at.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){at.fx.step[e.prop]?at.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[at.cssProps[e.prop]]||at.cssHooks[e.prop])?at.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},D.propHooks.scrollTop=D.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},at.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},at.fx=D.prototype.init,at.fx.step={};var hn,fn,gn=/^(?:toggle|show|hide)$/,_n=new RegExp("^(?:([+-])=|)("+Mt+")([a-z%]*)$","i"),yn=/queueHooks$/,vn=[O],bn={"*":[function(e,t){var n=this.createTween(e,t),i=n.cur(),a=_n.exec(t),o=a&&a[3]||(at.cssNumber[e]?"":"px"),r=(at.cssNumber[e]||"px"!==o&&+i)&&_n.exec(at.css(n.elem,e)),s=1,l=20;if(r&&r[3]!==o){o=o||r[3],a=a||[],r=+i||1;do s=s||".5",r/=s,at.style(n.elem,e,r+o);while(s!==(s=n.cur()/i)&&1!==s&&--l)}return a&&(r=n.start=+r||+i||0,n.unit=o,n.end=a[1]?r+(a[1]+1)*a[2]:+a[2]),n}]};at.Animation=at.extend(B,{tweener:function(e,t){at.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");for(var n,i=0,a=e.length;a>i;i++)n=e[i],bn[n]=bn[n]||[],bn[n].unshift(t)},prefilter:function(e,t){t?vn.unshift(e):vn.push(e)}}),at.speed=function(e,t,n){var i=e&&"object"==typeof e?at.extend({},e):{complete:n||!n&&t||at.isFunction(e)&&e,duration:e,easing:n&&t||t&&!at.isFunction(t)&&t};return i.duration=at.fx.off?0:"number"==typeof i.duration?i.duration:i.duration in at.fx.speeds?at.fx.speeds[i.duration]:at.fx.speeds._default,(null==i.queue||i.queue===!0)&&(i.queue="fx"),i.old=i.complete,i.complete=function(){at.isFunction(i.old)&&i.old.call(this),i.queue&&at.dequeue(this,i.queue)},i},at.fn.extend({fadeTo:function(e,t,n,i){return this.filter(At).css("opacity",0).show().end().animate({opacity:t},e,n,i)},animate:function(e,t,n,i){var a=at.isEmptyObject(e),o=at.speed(t,n,i),r=function(){var t=B(this,at.extend({},e),o);(a||at._data(this,"finish"))&&t.stop(!0)};return r.finish=r,a||o.queue===!1?this.each(r):this.queue(o.queue,r)},stop:function(e,t,n){var i=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,a=null!=e&&e+"queueHooks",o=at.timers,r=at._data(this);if(a)r[a]&&r[a].stop&&i(r[a]);else for(a in r)r[a]&&r[a].stop&&yn.test(a)&&i(r[a]);for(a=o.length;a--;)o[a].elem!==this||null!=e&&o[a].queue!==e||(o[a].anim.stop(n),t=!1,o.splice(a,1));(t||!n)&&at.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=at._data(this),i=n[e+"queue"],a=n[e+"queueHooks"],o=at.timers,r=i?i.length:0;for(n.finish=!0,at.queue(this,e,[]),a&&a.stop&&a.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;r>t;t++)i[t]&&i[t].finish&&i[t].finish.call(this);delete n.finish})}}),at.each(["toggle","show","hide"],function(e,t){var n=at.fn[t];at.fn[t]=function(e,i,a){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(N(t,!0),e,i,a)}}),at.each({slideDown:N("show"),slideUp:N("hide"),slideToggle:N("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){at.fn[e]=function(e,n,i){return this.animate(t,e,n,i)}}),at.timers=[],at.fx.tick=function(){var e,t=at.timers,n=0;for(hn=at.now();n<t.length;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||at.fx.stop(),hn=void 0},at.fx.timer=function(e){at.timers.push(e),e()?at.fx.start():at.timers.pop()},at.fx.interval=13,at.fx.start=function(){fn||(fn=setInterval(at.fx.tick,at.fx.interval))},at.fx.stop=function(){clearInterval(fn),fn=null},at.fx.speeds={slow:600,fast:200,_default:400},at.fn.delay=function(e,t){return e=at.fx?at.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var i=setTimeout(t,e);n.stop=function(){clearTimeout(i)}})},function(){var e,t,n,i,a;t=ht.createElement("div"),t.setAttribute("className","t"),t.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",i=t.getElementsByTagName("a")[0],n=ht.createElement("select"),a=n.appendChild(ht.createElement("option")),e=t.getElementsByTagName("input")[0],i.style.cssText="top:1px",nt.getSetAttribute="t"!==t.className,nt.style=/top/.test(i.getAttribute("style")),nt.hrefNormalized="/a"===i.getAttribute("href"),nt.checkOn=!!e.value,nt.optSelected=a.selected,nt.enctype=!!ht.createElement("form").enctype,n.disabled=!0,nt.optDisabled=!a.disabled,e=ht.createElement("input"),e.setAttribute("value",""),nt.input=""===e.getAttribute("value"),e.value="t",e.setAttribute("type","radio"),nt.radioValue="t"===e.value}();var wn=/\r/g;at.fn.extend({val:function(e){var t,n,i,a=this[0];return arguments.length?(i=at.isFunction(e),this.each(function(n){var a;1===this.nodeType&&(a=i?e.call(this,n,at(this).val()):e,null==a?a="":"number"==typeof a?a+="":at.isArray(a)&&(a=at.map(a,function(e){return null==e?"":e+""})),t=at.valHooks[this.type]||at.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,a,"value")||(this.value=a))})):a?(t=at.valHooks[a.type]||at.valHooks[a.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(a,"value"))?n:(n=a.value,"string"==typeof n?n.replace(wn,""):null==n?"":n)):void 0}}),at.extend({valHooks:{option:{get:function(e){var t=at.find.attr(e,"value");return null!=t?t:at.trim(at.text(e))}},select:{get:function(e){for(var t,n,i=e.options,a=e.selectedIndex,o="select-one"===e.type||0>a,r=o?null:[],s=o?a+1:i.length,l=0>a?s:o?a:0;s>l;l++)if(n=i[l],!(!n.selected&&l!==a||(nt.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&at.nodeName(n.parentNode,"optgroup"))){if(t=at(n).val(),o)return t;r.push(t)}return r},set:function(e,t){for(var n,i,a=e.options,o=at.makeArray(t),r=a.length;r--;)if(i=a[r],at.inArray(at.valHooks.option.get(i),o)>=0)try{i.selected=n=!0}catch(s){i.scrollHeight}else i.selected=!1;return n||(e.selectedIndex=-1),a}}}}),at.each(["radio","checkbox"],function(){at.valHooks[this]={set:function(e,t){return at.isArray(t)?e.checked=at.inArray(at(e).val(),t)>=0:void 0}},nt.checkOn||(at.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var $n,kn,Cn=at.expr.attrHandle,Sn=/^(?:checked|selected)$/i,Mn=nt.getSetAttribute,xn=nt.input;at.fn.extend({attr:function(e,t){return Tt(this,at.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){at.removeAttr(this,e)})}}),at.extend({attr:function(e,t,n){var i,a,o=e.nodeType;return e&&3!==o&&8!==o&&2!==o?typeof e.getAttribute===kt?at.prop(e,t,n):(1===o&&at.isXMLDoc(e)||(t=t.toLowerCase(),i=at.attrHooks[t]||(at.expr.match.bool.test(t)?kn:$n)),void 0===n?i&&"get"in i&&null!==(a=i.get(e,t))?a:(a=at.find.attr(e,t),null==a?void 0:a):null!==n?i&&"set"in i&&void 0!==(a=i.set(e,n,t))?a:(e.setAttribute(t,n+""),n):void at.removeAttr(e,t)):void 0},removeAttr:function(e,t){var n,i,a=0,o=t&&t.match(vt);if(o&&1===e.nodeType)for(;n=o[a++];)i=at.propFix[n]||n,at.expr.match.bool.test(n)?xn&&Mn||!Sn.test(n)?e[i]=!1:e[at.camelCase("default-"+n)]=e[i]=!1:at.attr(e,n,""),e.removeAttribute(Mn?n:i)},attrHooks:{type:{set:function(e,t){if(!nt.radioValue&&"radio"===t&&at.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}}}),kn={set:function(e,t,n){return t===!1?at.removeAttr(e,n):xn&&Mn||!Sn.test(n)?e.setAttribute(!Mn&&at.propFix[n]||n,n):e[at.camelCase("default-"+n)]=e[n]=!0,n}},at.each(at.expr.match.bool.source.match(/\w+/g),function(e,t){var n=Cn[t]||at.find.attr;Cn[t]=xn&&Mn||!Sn.test(t)?function(e,t,i){var a,o;return i||(o=Cn[t],Cn[t]=a,a=null!=n(e,t,i)?t.toLowerCase():null,Cn[t]=o),a}:function(e,t,n){return n?void 0:e[at.camelCase("default-"+t)]?t.toLowerCase():null}}),xn&&Mn||(at.attrHooks.value={set:function(e,t,n){return at.nodeName(e,"input")?void(e.defaultValue=t):$n&&$n.set(e,t,n)}}),Mn||($n={set:function(e,t,n){var i=e.getAttributeNode(n);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(n)),i.value=t+="","value"===n||t===e.getAttribute(n)?t:void 0}},Cn.id=Cn.name=Cn.coords=function(e,t,n){var i;return n?void 0:(i=e.getAttributeNode(t))&&""!==i.value?i.value:null},at.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:void 0},set:$n.set},at.attrHooks.contenteditable={set:function(e,t,n){$n.set(e,""===t?!1:t,n)}},at.each(["width","height"],function(e,t){at.attrHooks[t]={set:function(e,n){return""===n?(e.setAttribute(t,"auto"),n):void 0}}})),nt.style||(at.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var An=/^(?:input|select|textarea|button|object)$/i,Tn=/^(?:a|area)$/i;at.fn.extend({prop:function(e,t){return Tt(this,at.prop,e,t,arguments.length>1)},removeProp:function(e){return e=at.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),at.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var i,a,o,r=e.nodeType;return e&&3!==r&&8!==r&&2!==r?(o=1!==r||!at.isXMLDoc(e),o&&(t=at.propFix[t]||t,a=at.propHooks[t]),void 0!==n?a&&"set"in a&&void 0!==(i=a.set(e,n,t))?i:e[t]=n:a&&"get"in a&&null!==(i=a.get(e,t))?i:e[t]):void 0},propHooks:{tabIndex:{get:function(e){var t=at.find.attr(e,"tabindex");return t?parseInt(t,10):An.test(e.nodeName)||Tn.test(e.nodeName)&&e.href?0:-1}}}}),nt.hrefNormalized||at.each(["href","src"],function(e,t){at.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),nt.optSelected||(at.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),at.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){at.propFix[this.toLowerCase()]=this}),nt.enctype||(at.propFix.enctype="encoding");var En=/[\t\r\n\f]/g;at.fn.extend({addClass:function(e){var t,n,i,a,o,r,s=0,l=this.length,c="string"==typeof e&&e;if(at.isFunction(e))return this.each(function(t){at(this).addClass(e.call(this,t,this.className))});if(c)for(t=(e||"").match(vt)||[];l>s;s++)if(n=this[s],i=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(En," "):" ")){for(o=0;a=t[o++];)i.indexOf(" "+a+" ")<0&&(i+=a+" ");r=at.trim(i),n.className!==r&&(n.className=r)}return this},removeClass:function(e){var t,n,i,a,o,r,s=0,l=this.length,c=0===arguments.length||"string"==typeof e&&e;if(at.isFunction(e))return this.each(function(t){at(this).removeClass(e.call(this,t,this.className))});if(c)for(t=(e||"").match(vt)||[];l>s;s++)if(n=this[s],i=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(En," "):"")){for(o=0;a=t[o++];)for(;i.indexOf(" "+a+" ")>=0;)i=i.replace(" "+a+" "," ");r=e?at.trim(i):"",n.className!==r&&(n.className=r)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):this.each(at.isFunction(e)?function(n){at(this).toggleClass(e.call(this,n,this.className,t),t)}:function(){if("string"===n)for(var t,i=0,a=at(this),o=e.match(vt)||[];t=o[i++];)a.hasClass(t)?a.removeClass(t):a.addClass(t);else(n===kt||"boolean"===n)&&(this.className&&at._data(this,"__className__",this.className),this.className=this.className||e===!1?"":at._data(this,"__className__")||"")})},hasClass:function(e){for(var t=" "+e+" ",n=0,i=this.length;i>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(En," ").indexOf(t)>=0)return!0;return!1}}),at.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){at.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),at.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,i){return this.on(t,e,n,i)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var In=at.now(),Dn=/\?/,Pn=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;at.parseJSON=function(t){if(e.JSON&&e.JSON.parse)return e.JSON.parse(t+"");var n,i=null,a=at.trim(t+"");return a&&!at.trim(a.replace(Pn,function(e,t,a,o){return n&&t&&(i=0),0===i?e:(n=a||t,i+=!o-!a,"")}))?Function("return "+a)():at.error("Invalid JSON: "+t)},at.parseXML=function(t){var n,i;if(!t||"string"!=typeof t)return null;try{e.DOMParser?(i=new DOMParser,n=i.parseFromString(t,"text/xml")):(n=new ActiveXObject("Microsoft.XMLDOM"),n.async="false",n.loadXML(t))}catch(a){n=void 0}return n&&n.documentElement&&!n.getElementsByTagName("parsererror").length||at.error("Invalid XML: "+t),n};var Nn,Ln,On=/#.*$/,Un=/([?&])_=[^&]*/,Bn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Rn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fn=/^(?:GET|HEAD)$/,qn=/^\/\//,Hn=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,jn={},Vn={},zn="*/".concat("*");try{Ln=location.href}catch(Wn){Ln=ht.createElement("a"),Ln.href="",Ln=Ln.href}Nn=Hn.exec(Ln.toLowerCase())||[],at.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ln,type:"GET",isLocal:Rn.test(Nn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":zn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":at.parseJSON,"text xml":at.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?q(q(e,at.ajaxSettings),t):q(at.ajaxSettings,e)},ajaxPrefilter:R(jn),ajaxTransport:R(Vn),ajax:function(e,t){function n(e,t,n,i){var a,d,_,y,b,$=t;2!==v&&(v=2,s&&clearTimeout(s),c=void 0,r=i||"",w.readyState=e>0?4:0,a=e>=200&&300>e||304===e,n&&(y=H(u,w,n)),y=j(u,y,w,a),a?(u.ifModified&&(b=w.getResponseHeader("Last-Modified"),b&&(at.lastModified[o]=b),b=w.getResponseHeader("etag"),b&&(at.etag[o]=b)),204===e||"HEAD"===u.type?$="nocontent":304===e?$="notmodified":($=y.state,d=y.data,_=y.error,a=!_)):(_=$,(e||!$)&&($="error",0>e&&(e=0))),w.status=e,w.statusText=(t||$)+"",a?h.resolveWith(p,[d,$,w]):h.rejectWith(p,[w,$,_]),w.statusCode(g),g=void 0,l&&m.trigger(a?"ajaxSuccess":"ajaxError",[w,u,a?d:_]),f.fireWith(p,[w,$]),l&&(m.trigger("ajaxComplete",[w,u]),--at.active||at.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var i,a,o,r,s,l,c,d,u=at.ajaxSetup({},t),p=u.context||u,m=u.context&&(p.nodeType||p.jquery)?at(p):at.event,h=at.Deferred(),f=at.Callbacks("once memory"),g=u.statusCode||{},_={},y={},v=0,b="canceled",w={readyState:0,getResponseHeader:function(e){var t;if(2===v){if(!d)for(d={};t=Bn.exec(r);)d[t[1].toLowerCase()]=t[2];t=d[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===v?r:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return v||(e=y[n]=y[n]||e,_[e]=t),this},overrideMimeType:function(e){return v||(u.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>v)for(t in e)g[t]=[g[t],e[t]];else w.always(e[w.status]);return this},abort:function(e){var t=e||b;return c&&c.abort(t),n(0,t),this}};if(h.promise(w).complete=f.add,w.success=w.done,w.error=w.fail,u.url=((e||u.url||Ln)+"").replace(On,"").replace(qn,Nn[1]+"//"),u.type=t.method||t.type||u.method||u.type,u.dataTypes=at.trim(u.dataType||"*").toLowerCase().match(vt)||[""],null==u.crossDomain&&(i=Hn.exec(u.url.toLowerCase()),u.crossDomain=!(!i||i[1]===Nn[1]&&i[2]===Nn[2]&&(i[3]||("http:"===i[1]?"80":"443"))===(Nn[3]||("http:"===Nn[1]?"80":"443")))),u.data&&u.processData&&"string"!=typeof u.data&&(u.data=at.param(u.data,u.traditional)),F(jn,u,t,w),2===v)return w; |
|
|
l=u.global,l&&0===at.active++&&at.event.trigger("ajaxStart"),u.type=u.type.toUpperCase(),u.hasContent=!Fn.test(u.type),o=u.url,u.hasContent||(u.data&&(o=u.url+=(Dn.test(o)?"&":"?")+u.data,delete u.data),u.cache===!1&&(u.url=Un.test(o)?o.replace(Un,"$1_="+In++):o+(Dn.test(o)?"&":"?")+"_="+In++)),u.ifModified&&(at.lastModified[o]&&w.setRequestHeader("If-Modified-Since",at.lastModified[o]),at.etag[o]&&w.setRequestHeader("If-None-Match",at.etag[o])),(u.data&&u.hasContent&&u.contentType!==!1||t.contentType)&&w.setRequestHeader("Content-Type",u.contentType),w.setRequestHeader("Accept",u.dataTypes[0]&&u.accepts[u.dataTypes[0]]?u.accepts[u.dataTypes[0]]+("*"!==u.dataTypes[0]?", "+zn+"; q=0.01":""):u.accepts["*"]);for(a in u.headers)w.setRequestHeader(a,u.headers[a]);if(u.beforeSend&&(u.beforeSend.call(p,w,u)===!1||2===v))return w.abort();b="abort";for(a in{success:1,error:1,complete:1})w[a](u[a]);if(c=F(Vn,u,t,w)){w.readyState=1,l&&m.trigger("ajaxSend",[w,u]),u.async&&u.timeout>0&&(s=setTimeout(function(){w.abort("timeout")},u.timeout));try{v=1,c.send(_,n)}catch($){if(!(2>v))throw $;n(-1,$)}}else n(-1,"No Transport");return w},getJSON:function(e,t,n){return at.get(e,t,n,"json")},getScript:function(e,t){return at.get(e,void 0,t,"script")}}),at.each(["get","post"],function(e,t){at[t]=function(e,n,i,a){return at.isFunction(n)&&(a=a||i,i=n,n=void 0),at.ajax({url:e,type:t,dataType:a,data:n,success:i})}}),at.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){at.fn[t]=function(e){return this.on(t,e)}}),at._evalUrl=function(e){return at.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},at.fn.extend({wrapAll:function(e){if(at.isFunction(e))return this.each(function(t){at(this).wrapAll(e.call(this,t))});if(this[0]){var t=at(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return this.each(at.isFunction(e)?function(t){at(this).wrapInner(e.call(this,t))}:function(){var t=at(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=at.isFunction(e);return this.each(function(n){at(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){at.nodeName(this,"body")||at(this).replaceWith(this.childNodes)}).end()}}),at.expr.filters.hidden=function(e){return e.offsetWidth<=0&&e.offsetHeight<=0||!nt.reliableHiddenOffsets()&&"none"===(e.style&&e.style.display||at.css(e,"display"))},at.expr.filters.visible=function(e){return!at.expr.filters.hidden(e)};var Gn=/%20/g,Kn=/\[\]$/,Xn=/\r?\n/g,Zn=/^(?:submit|button|image|reset|file)$/i,Yn=/^(?:input|select|textarea|keygen)/i;at.param=function(e,t){var n,i=[],a=function(e,t){t=at.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=at.ajaxSettings&&at.ajaxSettings.traditional),at.isArray(e)||e.jquery&&!at.isPlainObject(e))at.each(e,function(){a(this.name,this.value)});else for(n in e)V(n,e[n],t,a);return i.join("&").replace(Gn,"+")},at.fn.extend({serialize:function(){return at.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=at.prop(this,"elements");return e?at.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!at(this).is(":disabled")&&Yn.test(this.nodeName)&&!Zn.test(e)&&(this.checked||!Et.test(e))}).map(function(e,t){var n=at(this).val();return null==n?null:at.isArray(n)?at.map(n,function(e){return{name:t.name,value:e.replace(Xn,"\r\n")}}):{name:t.name,value:n.replace(Xn,"\r\n")}}).get()}}),at.ajaxSettings.xhr=void 0!==e.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&z()||W()}:z;var Jn=0,Qn={},ei=at.ajaxSettings.xhr();e.ActiveXObject&&at(e).on("unload",function(){for(var e in Qn)Qn[e](void 0,!0)}),nt.cors=!!ei&&"withCredentials"in ei,ei=nt.ajax=!!ei,ei&&at.ajaxTransport(function(e){if(!e.crossDomain||nt.cors){var t;return{send:function(n,i){var a,o=e.xhr(),r=++Jn;if(o.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)o[a]=e.xhrFields[a];e.mimeType&&o.overrideMimeType&&o.overrideMimeType(e.mimeType),e.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");for(a in n)void 0!==n[a]&&o.setRequestHeader(a,n[a]+"");o.send(e.hasContent&&e.data||null),t=function(n,a){var s,l,c;if(t&&(a||4===o.readyState))if(delete Qn[r],t=void 0,o.onreadystatechange=at.noop,a)4!==o.readyState&&o.abort();else{c={},s=o.status,"string"==typeof o.responseText&&(c.text=o.responseText);try{l=o.statusText}catch(d){l=""}s||!e.isLocal||e.crossDomain?1223===s&&(s=204):s=c.text?200:404}c&&i(s,l,c,o.getAllResponseHeaders())},e.async?4===o.readyState?setTimeout(t):o.onreadystatechange=Qn[r]=t:t()},abort:function(){t&&t(void 0,!0)}}}}),at.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return at.globalEval(e),e}}}),at.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),at.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=ht.head||at("head")[0]||ht.documentElement;return{send:function(i,a){t=ht.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||a(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var ti=[],ni=/(=)\?(?=&|$)|\?\?/;at.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=ti.pop()||at.expando+"_"+In++;return this[e]=!0,e}}),at.ajaxPrefilter("json jsonp",function(t,n,i){var a,o,r,s=t.jsonp!==!1&&(ni.test(t.url)?"url":"string"==typeof t.data&&!(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&ni.test(t.data)&&"data");return s||"jsonp"===t.dataTypes[0]?(a=t.jsonpCallback=at.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(ni,"$1"+a):t.jsonp!==!1&&(t.url+=(Dn.test(t.url)?"&":"?")+t.jsonp+"="+a),t.converters["script json"]=function(){return r||at.error(a+" was not called"),r[0]},t.dataTypes[0]="json",o=e[a],e[a]=function(){r=arguments},i.always(function(){e[a]=o,t[a]&&(t.jsonpCallback=n.jsonpCallback,ti.push(a)),r&&at.isFunction(o)&&o(r[0]),r=o=void 0}),"script"):void 0}),at.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||ht;var i=ut.exec(e),a=!n&&[];return i?[t.createElement(i[1])]:(i=at.buildFragment([e],t,a),a&&a.length&&at(a).remove(),at.merge([],i.childNodes))};var ii=at.fn.load;at.fn.load=function(e,t,n){if("string"!=typeof e&&ii)return ii.apply(this,arguments);var i,a,o,r=this,s=e.indexOf(" ");return s>=0&&(i=at.trim(e.slice(s,e.length)),e=e.slice(0,s)),at.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(o="POST"),r.length>0&&at.ajax({url:e,type:o,dataType:"html",data:t}).done(function(e){a=arguments,r.html(i?at("<div>").append(at.parseHTML(e)).find(i):e)}).complete(n&&function(e,t){r.each(n,a||[e.responseText,t,e])}),this},at.expr.filters.animated=function(e){return at.grep(at.timers,function(t){return e===t.elem}).length};var ai=e.document.documentElement;at.offset={setOffset:function(e,t,n){var i,a,o,r,s,l,c,d=at.css(e,"position"),u=at(e),p={};"static"===d&&(e.style.position="relative"),s=u.offset(),o=at.css(e,"top"),l=at.css(e,"left"),c=("absolute"===d||"fixed"===d)&&at.inArray("auto",[o,l])>-1,c?(i=u.position(),r=i.top,a=i.left):(r=parseFloat(o)||0,a=parseFloat(l)||0),at.isFunction(t)&&(t=t.call(e,n,s)),null!=t.top&&(p.top=t.top-s.top+r),null!=t.left&&(p.left=t.left-s.left+a),"using"in t?t.using.call(e,p):u.css(p)}},at.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){at.offset.setOffset(this,e,t)});var t,n,i={top:0,left:0},a=this[0],o=a&&a.ownerDocument;return o?(t=o.documentElement,at.contains(t,a)?(typeof a.getBoundingClientRect!==kt&&(i=a.getBoundingClientRect()),n=G(o),{top:i.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:i.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):i):void 0},position:function(){if(this[0]){var e,t,n={top:0,left:0},i=this[0];return"fixed"===at.css(i,"position")?t=i.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),at.nodeName(e[0],"html")||(n=e.offset()),n.top+=at.css(e[0],"borderTopWidth",!0),n.left+=at.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-at.css(i,"marginTop",!0),left:t.left-n.left-at.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||ai;e&&!at.nodeName(e,"html")&&"static"===at.css(e,"position");)e=e.offsetParent;return e||ai})}}),at.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);at.fn[e]=function(i){return Tt(this,function(e,i,a){var o=G(e);return void 0===a?o?t in o?o[t]:o.document.documentElement[i]:e[i]:void(o?o.scrollTo(n?at(o).scrollLeft():a,n?a:at(o).scrollTop()):e[i]=a)},e,i,arguments.length,null)}}),at.each(["top","left"],function(e,t){at.cssHooks[t]=M(nt.pixelPosition,function(e,n){return n?(n=tn(e,t),an.test(n)?at(e).position()[t]+"px":n):void 0})}),at.each({Height:"height",Width:"width"},function(e,t){at.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,i){at.fn[i]=function(i,a){var o=arguments.length&&(n||"boolean"!=typeof i),r=n||(i===!0||a===!0?"margin":"border");return Tt(this,function(t,n,i){var a;return at.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(a=t.documentElement,Math.max(t.body["scroll"+e],a["scroll"+e],t.body["offset"+e],a["offset"+e],a["client"+e])):void 0===i?at.css(t,n,r):at.style(t,n,i,r)},t,o?i:void 0,o,null)}})}),at.fn.size=function(){return this.length},at.fn.andSelf=at.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return at});var oi=e.jQuery,ri=e.$;return at.noConflict=function(t){return e.$===at&&(e.$=ri),t&&e.jQuery===at&&(e.jQuery=oi),at},typeof t===kt&&(e.jQuery=e.$=at),at}),Config=window.Config||{},Config.App={id:2496,hash:"8da85b0d5bfe62527e5b244c209159c3",version:"0.3.6",domains:["web.telegram.org","zhukov.github.io"]},Config.Modes={test:location.search.indexOf("test=1")>0,debug:location.search.indexOf("debug=1")>0,ssl:location.search.indexOf("ssl=1")>0||"https:"==location.protocol,nacl:-1==location.search.indexOf("nacl=0"),webcrypto:-1==location.search.indexOf("webcrypto=0"),packed:"app:"==location.protocol||"chrome-extension:"==location.protocol,ios_standalone:window.navigator.standalone&&navigator.userAgent.match(/iOS|iPhone|iPad/),chrome_packed:window.chrome&&chrome.app&&chrome.app.window&&!0||!1},Config.Navigator={osX:-1!=(navigator.platform||"").toLowerCase().indexOf("mac")||-1!=(navigator.userAgent||"").toLowerCase().indexOf("mac"),retina:window.devicePixelRatio>1,ffos:-1!=navigator.userAgent.search(/mobi.+Gecko/i),touch:screen.width<=768,mobile:screen.width<480||-1!=navigator.userAgent.search(/iOS|iPhone OS|Android|BlackBerry|BB10|Series ?[64]0|J2ME|MIDP|opera mini|opera mobi|mobi.+Gecko|Windows Phone/i)},Config.I18n={locale:"en-us",supported:["en-us","es-es","de-de","it-it","nl-nl","pt-br"],languages:{"en-us":"English","de-de":"Deutsch","es-es":"Español","it-it":"Italiano","ru-ru":"Русский","nl-nl":"Dutch","pt-br":"Português (Brazil)"},aliases:{en:"en-us",de:"de-de",es:"es-es",it:"it-it",ru:"ru-ru",nl:"nl-nl"},messages:{},fallback_messages:{}},Config.Schema=Config.Schema||{},Config.Schema.MTProto={constructors:[{id:"481674261",predicate:"vector",params:[],type:"Vector t"},{id:"85337187",predicate:"resPQ",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"pq",type:"bytes"},{name:"server_public_key_fingerprints",type:"Vector<long>"}],type:"ResPQ"},{id:"-2083955988",predicate:"p_q_inner_data",params:[{name:"pq",type:"bytes"},{name:"p",type:"bytes"},{name:"q",type:"bytes"},{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce",type:"int256"}],type:"P_Q_inner_data"},{id:"2043348061",predicate:"server_DH_params_fail",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce_hash",type:"int128"}],type:"Server_DH_Params"},{id:"-790100132",predicate:"server_DH_params_ok",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"encrypted_answer",type:"bytes"}],type:"Server_DH_Params"},{id:"-1249309254",predicate:"server_DH_inner_data",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"g",type:"int"},{name:"dh_prime",type:"bytes"},{name:"g_a",type:"bytes"},{name:"server_time",type:"int"}],type:"Server_DH_inner_data"},{id:"1715713620",predicate:"client_DH_inner_data",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"retry_id",type:"long"},{name:"g_b",type:"bytes"}],type:"Client_DH_Inner_Data"},{id:"1003222836",predicate:"dh_gen_ok",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce_hash1",type:"int128"}],type:"Set_client_DH_params_answer"},{id:"1188831161",predicate:"dh_gen_retry",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce_hash2",type:"int128"}],type:"Set_client_DH_params_answer"},{id:"-1499615742",predicate:"dh_gen_fail",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce_hash3",type:"int128"}],type:"Set_client_DH_params_answer"},{id:"-212046591",predicate:"rpc_result",params:[{name:"req_msg_id",type:"long"},{name:"result",type:"Object"}],type:"RpcResult"},{id:"558156313",predicate:"rpc_error",params:[{name:"error_code",type:"int"},{name:"error_message",type:"string"}],type:"RpcError"},{id:"1579864942",predicate:"rpc_answer_unknown",params:[],type:"RpcDropAnswer"},{id:"-847714938",predicate:"rpc_answer_dropped_running",params:[],type:"RpcDropAnswer"},{id:"-1539647305",predicate:"rpc_answer_dropped",params:[{name:"msg_id",type:"long"},{name:"seq_no",type:"int"},{name:"bytes",type:"int"}],type:"RpcDropAnswer"},{id:"155834844",predicate:"future_salt",params:[{name:"valid_since",type:"int"},{name:"valid_until",type:"int"},{name:"salt",type:"long"}],type:"FutureSalt"},{id:"-1370486635",predicate:"future_salts",params:[{name:"req_msg_id",type:"long"},{name:"now",type:"int"},{name:"salts",type:"vector<future_salt>"}],type:"FutureSalts"},{id:"880243653",predicate:"pong",params:[{name:"msg_id",type:"long"},{name:"ping_id",type:"long"}],type:"Pong"},{id:"-501201412",predicate:"destroy_session_ok",params:[{name:"session_id",type:"long"}],type:"DestroySessionRes"},{id:"1658015945",predicate:"destroy_session_none",params:[{name:"session_id",type:"long"}],type:"DestroySessionRes"},{id:"-1631450872",predicate:"new_session_created",params:[{name:"first_msg_id",type:"long"},{name:"unique_id",type:"long"},{name:"server_salt",type:"long"}],type:"NewSession"},{id:"1945237724",predicate:"msg_container",params:[{name:"messages",type:"vector<%Message>"}],type:"MessageContainer"},{id:"1538843921",predicate:"message",params:[{name:"msg_id",type:"long"},{name:"seqno",type:"int"},{name:"bytes",type:"int"},{name:"body",type:"Object"}],type:"Message"},{id:"-530561358",predicate:"msg_copy",params:[{name:"orig_message",type:"Message"}],type:"MessageCopy"},{id:"812830625",predicate:"gzip_packed",params:[{name:"packed_data",type:"bytes"}],type:"Object"},{id:"1658238041",predicate:"msgs_ack",params:[{name:"msg_ids",type:"Vector<long>"}],type:"MsgsAck"},{id:"-1477445615",predicate:"bad_msg_notification",params:[{name:"bad_msg_id",type:"long"},{name:"bad_msg_seqno",type:"int"},{name:"error_code",type:"int"}],type:"BadMsgNotification"},{id:"-307542917",predicate:"bad_server_salt",params:[{name:"bad_msg_id",type:"long"},{name:"bad_msg_seqno",type:"int"},{name:"error_code",type:"int"},{name:"new_server_salt",type:"long"}],type:"BadMsgNotification"},{id:"2105940488",predicate:"msg_resend_req",params:[{name:"msg_ids",type:"Vector<long>"}],type:"MsgResendReq"},{id:"-630588590",predicate:"msgs_state_req",params:[{name:"msg_ids",type:"Vector<long>"}],type:"MsgsStateReq"},{id:"81704317",predicate:"msgs_state_info",params:[{name:"req_msg_id",type:"long"},{name:"info",type:"bytes"}],type:"MsgsStateInfo"},{id:"-1933520591",predicate:"msgs_all_info",params:[{name:"msg_ids",type:"Vector<long>"},{name:"info",type:"bytes"}],type:"MsgsAllInfo"},{id:"661470918",predicate:"msg_detailed_info",params:[{name:"msg_id",type:"long"},{name:"answer_msg_id",type:"long"},{name:"bytes",type:"int"},{name:"status",type:"int"}],type:"MsgDetailedInfo"},{id:"-2137147681",predicate:"msg_new_detailed_info",params:[{name:"answer_msg_id",type:"long"},{name:"bytes",type:"int"},{name:"status",type:"int"}],type:"MsgDetailedInfo"}],methods:[{id:"1615239032",method:"req_pq",params:[{name:"nonce",type:"int128"}],type:"ResPQ"},{id:"-686627650",method:"req_DH_params",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"p",type:"bytes"},{name:"q",type:"bytes"},{name:"public_key_fingerprint",type:"long"},{name:"encrypted_data",type:"bytes"}],type:"Server_DH_Params"},{id:"-184262881",method:"set_client_DH_params",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"encrypted_data",type:"bytes"}],type:"Set_client_DH_params_answer"},{id:"1491380032",method:"rpc_drop_answer",params:[{name:"req_msg_id",type:"long"}],type:"RpcDropAnswer"},{id:"-1188971260",method:"get_future_salts",params:[{name:"num",type:"int"}],type:"FutureSalts"},{id:"2059302892",method:"ping",params:[{name:"ping_id",type:"long"}],type:"Pong"},{id:"-213746804",method:"ping_delay_disconnect",params:[{name:"ping_id",type:"long"},{name:"disconnect_delay",type:"int"}],type:"Pong"},{id:"-414113498",method:"destroy_session",params:[{name:"session_id",type:"long"}],type:"DestroySessionRes"},{id:"-1835453025",method:"http_wait",params:[{name:"max_delay",type:"int"},{name:"wait_after",type:"int"},{name:"max_wait",type:"int"}],type:"HttpWait"}]},Config.Schema.API={constructors:[{id:"-1132882121",predicate:"boolFalse",params:[],type:"Bool"},{id:"-1720552011",predicate:"boolTrue",params:[],type:"Bool"},{id:"481674261",predicate:"vector",params:[],type:"Vector t"},{id:"-994444869",predicate:"error",params:[{name:"code",type:"int"},{name:"text",type:"string"}],type:"Error"},{id:"1450380236",predicate:"null",params:[],type:"Null"},{id:"2134579434",predicate:"inputPeerEmpty",params:[],type:"InputPeer"},{id:"2107670217",predicate:"inputPeerSelf",params:[],type:"InputPeer"},{id:"270785512",predicate:"inputPeerContact",params:[{name:"user_id",type:"int"}],type:"InputPeer"},{id:"-1690012891",predicate:"inputPeerForeign",params:[{name:"user_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputPeer"},{id:"396093539",predicate:"inputPeerChat",params:[{name:"chat_id",type:"int"}],type:"InputPeer"},{id:"-1182234929",predicate:"inputUserEmpty",params:[],type:"InputUser"},{id:"-138301121",predicate:"inputUserSelf",params:[],type:"InputUser"},{id:"-2031530139",predicate:"inputUserContact",params:[{name:"user_id",type:"int"}],type:"InputUser"},{id:"1700689151",predicate:"inputUserForeign",params:[{name:"user_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputUser"},{id:"-208488460",predicate:"inputPhoneContact",params:[{name:"client_id",type:"long"},{name:"phone",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"}],type:"InputContact"},{id:"-181407105",predicate:"inputFile",params:[{name:"id",type:"long"},{name:"parts",type:"int"},{name:"name",type:"string"},{name:"md5_checksum",type:"string"}],type:"InputFile"},{id:"-1771768449",predicate:"inputMediaEmpty",params:[],type:"InputMedia"},{id:"767900285",predicate:"inputMediaUploadedPhoto",params:[{name:"file",type:"InputFile"}],type:"InputMedia"},{id:"-1893027092",predicate:"inputMediaPhoto",params:[{name:"id",type:"InputPhoto"}],type:"InputMedia"},{id:"-104578748",predicate:"inputMediaGeoPoint",params:[{name:"geo_point",type:"InputGeoPoint"}],type:"InputMedia"},{id:"-1494984313",predicate:"inputMediaContact",params:[{name:"phone_number",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"}],type:"InputMedia"},{id:"322623222",predicate:"inputMediaUploadedVideo",params:[{name:"file",type:"InputFile"},{name:"duration",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"},{name:"mime_type",type:"string"}],type:"InputMedia"},{id:"-1726817601",predicate:"inputMediaUploadedThumbVideo",params:[{name:"file",type:"InputFile"},{name:"thumb",type:"InputFile"},{name:"duration",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"},{name:"mime_type",type:"string"}],type:"InputMedia"},{id:"2130852582",predicate:"inputMediaVideo",params:[{name:"id",type:"InputVideo"}],type:"InputMedia"},{id:"480546647",predicate:"inputChatPhotoEmpty",params:[],type:"InputChatPhoto"},{id:"-1809496270",predicate:"inputChatUploadedPhoto",params:[{name:"file",type:"InputFile"},{name:"crop",type:"InputPhotoCrop"}],type:"InputChatPhoto"},{id:"-1293828344",predicate:"inputChatPhoto",params:[{name:"id",type:"InputPhoto"},{name:"crop",type:"InputPhotoCrop"}],type:"InputChatPhoto"},{id:"-457104426",predicate:"inputGeoPointEmpty",params:[],type:"InputGeoPoint"},{id:"-206066487",predicate:"inputGeoPoint",params:[{name:"lat",type:"double"},{name:"long",type:"double"}],type:"InputGeoPoint"},{id:"483901197",predicate:"inputPhotoEmpty",params:[],type:"InputPhoto"},{id:"-74070332",predicate:"inputPhoto",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputPhoto"},{id:"1426648181",predicate:"inputVideoEmpty",params:[],type:"InputVideo"},{id:"-296249774",predicate:"inputVideo",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputVideo"},{id:"342061462",predicate:"inputFileLocation",params:[{name:"volume_id",type:"long"},{name:"local_id",type:"int"},{name:"secret",type:"long"}],type:"InputFileLocation"},{id:"1023632620",predicate:"inputVideoFileLocation",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputFileLocation"},{id:"-1377390588",predicate:"inputPhotoCropAuto",params:[],type:"InputPhotoCrop"},{id:"-644787419",predicate:"inputPhotoCrop",params:[{name:"crop_left",type:"double"},{name:"crop_top",type:"double"},{name:"crop_width",type:"double"}],type:"InputPhotoCrop"},{id:"1996904104",predicate:"inputAppEvent",params:[{name:"time",type:"double"},{name:"type",type:"string"},{name:"peer",type:"long"},{name:"data",type:"string"}],type:"InputAppEvent"},{id:"-1649296275",predicate:"peerUser",params:[{name:"user_id",type:"int"}],type:"Peer"},{id:"-1160714821",predicate:"peerChat",params:[{name:"chat_id",type:"int"}],type:"Peer"},{id:"-1432995067",predicate:"storage.fileUnknown",params:[],type:"storage.FileType"},{id:"8322574",predicate:"storage.fileJpeg",params:[],type:"storage.FileType"},{id:"-891180321",predicate:"storage.fileGif",params:[],type:"storage.FileType"},{id:"172975040",predicate:"storage.filePng",params:[],type:"storage.FileType"},{id:"-1373745011",predicate:"storage.filePdf",params:[],type:"storage.FileType"},{id:"1384777335",predicate:"storage.fileMp3",params:[],type:"storage.FileType"},{id:"1258941372",predicate:"storage.fileMov",params:[],type:"storage.FileType"},{id:"1086091090",predicate:"storage.filePartial",params:[],type:"storage.FileType"},{id:"-1278304028",predicate:"storage.fileMp4",params:[],type:"storage.FileType"},{id:"276907596",predicate:"storage.fileWebp",params:[],type:"storage.FileType"},{id:"2086234950",predicate:"fileLocationUnavailable",params:[{name:"volume_id",type:"long"},{name:"local_id",type:"int"},{name:"secret",type:"long"}],type:"FileLocation"},{id:"1406570614",predicate:"fileLocation",params:[{name:"dc_id",type:"int"},{name:"volume_id",type:"long"},{name:"local_id",type:"int"},{name:"secret",type:"long"}],type:"FileLocation"},{id:"537022650",predicate:"userEmpty",params:[{name:"id",type:"int"}],type:"User"},{id:"1879553105",predicate:"userSelf",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"username",type:"string"},{name:"phone",type:"string"},{name:"photo",type:"UserProfilePhoto"},{name:"status",type:"UserStatus"},{name:"inactive",type:"Bool"}],type:"User"},{id:"-894214632",predicate:"userContact",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"username",type:"string"},{name:"access_hash",type:"long"},{name:"phone",type:"string"},{name:"photo",type:"UserProfilePhoto"},{name:"status",type:"UserStatus"}],type:"User"},{id:"-640891665",predicate:"userRequest",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"username",type:"string"},{name:"access_hash",type:"long"},{name:"phone",type:"string"},{name:"photo",type:"UserProfilePhoto"},{name:"status",type:"UserStatus"}],type:"User"},{id:"123533224",predicate:"userForeign",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"username",type:"string"},{name:"access_hash",type:"long"},{name:"photo",type:"UserProfilePhoto"},{name:"status",type:"UserStatus"}],type:"User"},{id:"-704549510",predicate:"userDeleted",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"username",type:"string"}],type:"User"},{id:"1326562017",predicate:"userProfilePhotoEmpty",params:[],type:"UserProfilePhoto"},{id:"-715532088",predicate:"userProfilePhoto",params:[{name:"photo_id",type:"long"},{name:"photo_small",type:"FileLocation"},{name:"photo_big",type:"FileLocation"}],type:"UserProfilePhoto"},{id:"164646985",predicate:"userStatusEmpty",params:[],type:"UserStatus"},{id:"-306628279",predicate:"userStatusOnline",params:[{name:"expires",type:"int"}],type:"UserStatus"},{id:"9203775",predicate:"userStatusOffline",params:[{name:"was_online",type:"int"}],type:"UserStatus"},{id:"-1683826688",predicate:"chatEmpty",params:[{name:"id",type:"int"}],type:"Chat"},{id:"1855757255",predicate:"chat",params:[{name:"id",type:"int"},{name:"title",type:"string"},{name:"photo",type:"ChatPhoto"},{name:"participants_count",type:"int"},{name:"date",type:"int"},{name:"left",type:"Bool"},{name:"version",type:"int"}],type:"Chat"},{id:"-83047359",predicate:"chatForbidden",params:[{name:"id",type:"int"},{name:"title",type:"string"},{name:"date",type:"int"}],type:"Chat"},{id:"1661886910",predicate:"chatFull",params:[{name:"id",type:"int"},{name:"participants",type:"ChatParticipants"},{name:"chat_photo",type:"Photo"},{name:"notify_settings",type:"PeerNotifySettings"}],type:"ChatFull"},{id:"-925415106",predicate:"chatParticipant",params:[{name:"user_id",type:"int"},{name:"inviter_id",type:"int"},{name:"date",type:"int"}],type:"ChatParticipant"},{id:"265468810",predicate:"chatParticipantsForbidden",params:[{name:"chat_id",type:"int"}],type:"ChatParticipants"},{id:"2017571861",predicate:"chatParticipants",params:[{name:"chat_id",type:"int"},{name:"admin_id",type:"int"},{name:"participants",type:"Vector<ChatParticipant>"},{name:"version",type:"int"}],type:"ChatParticipants"},{id:"935395612",predicate:"chatPhotoEmpty",params:[],type:"ChatPhoto"},{id:"1632839530",predicate:"chatPhoto",params:[{name:"photo_small",type:"FileLocation"},{name:"photo_big",type:"FileLocation"}],type:"ChatPhoto"},{id:"-2082087340",predicate:"messageEmpty",params:[{name:"id",type:"int"}],type:"Message"},{id:"1450613171",predicate:"message",params:[{name:"flags",type:"int"},{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"to_id",type:"Peer"},{name:"date",type:"int"},{name:"message",type:"string"},{name:"media",type:"MessageMedia"}],type:"Message"},{id:"-1553471722",predicate:"messageForwarded",params:[{name:"flags",type:"int"},{name:"id",type:"int"},{name:"fwd_from_id",type:"int"},{name:"fwd_date",type:"int"},{name:"from_id",type:"int"},{name:"to_id",type:"Peer"},{name:"date",type:"int"},{name:"message",type:"string"},{name:"media",type:"MessageMedia"}],type:"Message"},{id:"495384334",predicate:"messageService",params:[{name:"flags",type:"int"},{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"to_id",type:"Peer"},{name:"date",type:"int"},{name:"action",type:"MessageAction"}],type:"Message"},{id:"1038967584",predicate:"messageMediaEmpty",params:[],type:"MessageMedia"},{id:"-926655958",predicate:"messageMediaPhoto",params:[{name:"photo",type:"Photo"}],type:"MessageMedia"},{id:"-1563278704",predicate:"messageMediaVideo",params:[{name:"video",type:"Video"}],type:"MessageMedia"},{id:"1457575028",predicate:"messageMediaGeo",params:[{name:"geo",type:"GeoPoint"}],type:"MessageMedia"},{id:"1585262393",predicate:"messageMediaContact",params:[{name:"phone_number",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"user_id",type:"int"}],type:"MessageMedia"},{id:"694364726",predicate:"messageMediaUnsupported",params:[{name:"bytes",type:"bytes"}],type:"MessageMedia"},{id:"-1230047312",predicate:"messageActionEmpty",params:[],type:"MessageAction"},{id:"-1503425638",predicate:"messageActionChatCreate",params:[{name:"title",type:"string"},{name:"users",type:"Vector<int>"}],type:"MessageAction"},{id:"-1247687078",predicate:"messageActionChatEditTitle",params:[{name:"title",type:"string"}],type:"MessageAction"},{id:"2144015272",predicate:"messageActionChatEditPhoto",params:[{name:"photo",type:"Photo"}],type:"MessageAction"},{id:"-1780220945",predicate:"messageActionChatDeletePhoto",params:[],type:"MessageAction"},{id:"1581055051",predicate:"messageActionChatAddUser",params:[{name:"user_id",type:"int"}],type:"MessageAction"},{id:"-1297179892",predicate:"messageActionChatDeleteUser",params:[{name:"user_id",type:"int"}],type:"MessageAction"},{id:"-1422222932",predicate:"dialog",params:[{name:"peer",type:"Peer"},{name:"top_message",type:"int"},{name:"unread_count",type:"int"},{name:"notify_settings",type:"PeerNotifySettings"}],type:"Dialog"},{id:"590459437",predicate:"photoEmpty",params:[{name:"id",type:"long"}],type:"Photo"},{id:"582313809",predicate:"photo",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"user_id",type:"int"},{name:"date",type:"int"},{name:"caption",type:"string"},{name:"geo",type:"GeoPoint"},{name:"sizes",type:"Vector<PhotoSize>"}],type:"Photo"},{id:"236446268",predicate:"photoSizeEmpty",params:[{name:"type",type:"string"}],type:"PhotoSize"},{id:"2009052699",predicate:"photoSize",params:[{name:"type",type:"string"},{name:"location",type:"FileLocation"},{name:"w",type:"int"},{name:"h",type:"int"},{name:"size",type:"int"}],type:"PhotoSize"},{id:"-374917894",predicate:"photoCachedSize",params:[{name:"type",type:"string"},{name:"location",type:"FileLocation"},{name:"w",type:"int"},{name:"h",type:"int"},{name:"bytes",type:"bytes"}],type:"PhotoSize"},{id:"-1056548696",predicate:"videoEmpty",params:[{name:"id",type:"long"}],type:"Video"},{id:"948937617",predicate:"video",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"user_id",type:"int"},{name:"date",type:"int"},{name:"caption",type:"string"},{name:"duration",type:"int"},{name:"mime_type",type:"string"},{name:"size",type:"int"},{name:"thumb",type:"PhotoSize"},{name:"dc_id",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"}],type:"Video"},{id:"286776671",predicate:"geoPointEmpty",params:[],type:"GeoPoint"},{id:"541710092",predicate:"geoPoint",params:[{name:"long",type:"double"},{name:"lat",type:"double"}],type:"GeoPoint"},{id:"-486486981",predicate:"auth.checkedPhone",params:[{name:"phone_registered",type:"Bool"},{name:"phone_invited",type:"Bool"}],type:"auth.CheckedPhone"},{id:"-269659687",predicate:"auth.sentCode",params:[{name:"phone_registered",type:"Bool"},{name:"phone_code_hash",type:"string"},{name:"send_call_timeout",type:"int"},{name:"is_password",type:"Bool"}],type:"auth.SentCode"},{id:"-155815004",predicate:"auth.authorization",params:[{name:"expires",type:"int"},{name:"user",type:"User"}],type:"auth.Authorization"},{id:"-543777747",predicate:"auth.exportedAuthorization",params:[{name:"id",type:"int"},{name:"bytes",type:"bytes"}],type:"auth.ExportedAuthorization"},{id:"-1195615476",predicate:"inputNotifyPeer",params:[{name:"peer",type:"InputPeer"}],type:"InputNotifyPeer"},{id:"423314455",predicate:"inputNotifyUsers",params:[],type:"InputNotifyPeer"},{id:"1251338318",predicate:"inputNotifyChats",params:[],type:"InputNotifyPeer"},{id:"-1540769658",predicate:"inputNotifyAll",params:[],type:"InputNotifyPeer"},{id:"-265263912",predicate:"inputPeerNotifyEventsEmpty",params:[],type:"InputPeerNotifyEvents"},{id:"-395694988",predicate:"inputPeerNotifyEventsAll",params:[],type:"InputPeerNotifyEvents"},{id:"1185074840",predicate:"inputPeerNotifySettings",params:[{name:"mute_until",type:"int"},{name:"sound",type:"string"},{name:"show_previews",type:"Bool"},{name:"events_mask",type:"int"}],type:"InputPeerNotifySettings"},{id:"-1378534221",predicate:"peerNotifyEventsEmpty",params:[],type:"PeerNotifyEvents"},{id:"1830677896",predicate:"peerNotifyEventsAll",params:[],type:"PeerNotifyEvents"},{id:"1889961234",predicate:"peerNotifySettingsEmpty",params:[],type:"PeerNotifySettings"},{id:"-1923214866",predicate:"peerNotifySettings",params:[{name:"mute_until",type:"int"},{name:"sound",type:"string"},{name:"show_previews",type:"Bool"},{name:"events_mask",type:"int"}],type:"PeerNotifySettings"},{id:"-860866985",predicate:"wallPaper",params:[{name:"id",type:"int"},{name:"title",type:"string"},{name:"sizes",type:"Vector<PhotoSize>"},{name:"color",type:"int"}],type:"WallPaper"},{id:"1997575642",predicate:"userFull",params:[{name:"user",type:"User"},{name:"link",type:"contacts.Link"},{name:"profile_photo",type:"Photo"},{name:"notify_settings",type:"PeerNotifySettings"},{name:"blocked",type:"Bool"},{name:"real_first_name",type:"string"},{name:"real_last_name",type:"string"}],type:"UserFull"},{id:"-116274796",predicate:"contact",params:[{name:"user_id",type:"int"},{name:"mutual",type:"Bool"}],type:"Contact"},{id:"-805141448",predicate:"importedContact",params:[{name:"user_id",type:"int"},{name:"client_id",type:"long"}],type:"ImportedContact"},{id:"1444661369",predicate:"contactBlocked",params:[{name:"user_id",type:"int"},{name:"date",type:"int"}],type:"ContactBlocked"},{id:"1038193057",predicate:"contactSuggested",params:[{name:"user_id",type:"int"},{name:"mutual_contacts",type:"int"}],type:"ContactSuggested"},{id:"-748155807",predicate:"contactStatus",params:[{name:"user_id",type:"int"},{name:"status",type:"UserStatus"}],type:"ContactStatus"},{id:"909233996",predicate:"chatLocated",params:[{name:"chat_id",type:"int"},{name:"distance",type:"int"}],type:"ChatLocated"},{id:"322183672",predicate:"contacts.foreignLinkUnknown",params:[],type:"contacts.ForeignLink"},{id:"-1484775609",predicate:"contacts.foreignLinkRequested",params:[{name:"has_phone",type:"Bool"}],type:"contacts.ForeignLink"},{id:"468356321",predicate:"contacts.foreignLinkMutual",params:[],type:"contacts.ForeignLink"},{id:"-768992160",predicate:"contacts.myLinkEmpty",params:[],type:"contacts.MyLink"},{id:"1818882030",predicate:"contacts.myLinkRequested",params:[{name:"contact",type:"Bool"}],type:"contacts.MyLink"},{id:"-1035932711",predicate:"contacts.myLinkContact",params:[],type:"contacts.MyLink"},{id:"-322001931",predicate:"contacts.link",params:[{name:"my_link",type:"contacts.MyLink"},{name:"foreign_link",type:"contacts.ForeignLink"},{name:"user",type:"User"}],type:"contacts.Link"},{id:"1871416498",predicate:"contacts.contacts",params:[{name:"contacts",type:"Vector<Contact>"},{name:"users",type:"Vector<User>"}],type:"contacts.Contacts"},{id:"-1219778094",predicate:"contacts.contactsNotModified",params:[],type:"contacts.Contacts"},{id:"-1387117803",predicate:"contacts.importedContacts",params:[{name:"imported",type:"Vector<ImportedContact>"},{name:"retry_contacts",type:"Vector<long>"},{name:"users",type:"Vector<User>"}],type:"contacts.ImportedContacts"},{id:"471043349",predicate:"contacts.blocked",params:[{name:"blocked",type:"Vector<ContactBlocked>"},{name:"users",type:"Vector<User>"}],type:"contacts.Blocked"},{id:"-1878523231",predicate:"contacts.blockedSlice",params:[{name:"count",type:"int"},{name:"blocked",type:"Vector<ContactBlocked>"},{name:"users",type:"Vector<User>"}],type:"contacts.Blocked"},{id:"1447681221",predicate:"contacts.suggested",params:[{name:"results",type:"Vector<ContactSuggested>"},{name:"users",type:"Vector<User>"}],type:"contacts.Suggested"},{id:"364538944",predicate:"messages.dialogs",params:[{name:"dialogs",type:"Vector<Dialog>"},{name:"messages",type:"Vector<Message>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.Dialogs"},{id:"1910543603",predicate:"messages.dialogsSlice",params:[{name:"count",type:"int"},{name:"dialogs",type:"Vector<Dialog>"},{name:"messages",type:"Vector<Message>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.Dialogs"},{id:"-1938715001",predicate:"messages.messages",params:[{name:"messages",type:"Vector<Message>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.Messages"},{id:"189033187",predicate:"messages.messagesSlice",params:[{name:"count",type:"int"},{name:"messages",type:"Vector<Message>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.Messages"},{id:"1062078024",predicate:"messages.messageEmpty",params:[],type:"messages.Message"},{id:"-7289833",predicate:"messages.message",params:[{name:"message",type:"Message"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.Message"},{id:"-1768654661",predicate:"messages.statedMessages",params:[{name:"messages",type:"Vector<Message>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"},{name:"pts",type:"int"},{name:"seq",type:"int"}],type:"messages.StatedMessages"},{id:"-797251802",predicate:"messages.statedMessage",params:[{name:"message",type:"Message"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"},{name:"pts",type:"int"},{name:"seq",type:"int"}],type:"messages.StatedMessage"},{id:"-772484260",predicate:"messages.sentMessage",params:[{name:"id",type:"int"},{name:"date",type:"int"},{name:"pts",type:"int"},{name:"seq",type:"int"}],type:"messages.SentMessage"},{id:"1089011754",predicate:"messages.chat",params:[{name:"chat",type:"Chat"},{name:"users",type:"Vector<User>"}],type:"messages.Chat"},{id:"-2125411368",predicate:"messages.chats",params:[{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.Chats"},{id:"-438840932",predicate:"messages.chatFull",params:[{name:"full_chat",type:"ChatFull"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"messages.ChatFull"},{id:"-1210173710",predicate:"messages.affectedHistory",params:[{name:"pts",type:"int"},{name:"seq",type:"int"},{name:"offset",type:"int"}],type:"messages.AffectedHistory"},{id:"1474492012",predicate:"inputMessagesFilterEmpty",params:[],type:"MessagesFilter"},{id:"-1777752804",predicate:"inputMessagesFilterPhotos",params:[],type:"MessagesFilter"},{id:"-1614803355",predicate:"inputMessagesFilterVideo",params:[],type:"MessagesFilter"},{id:"1458172132",predicate:"inputMessagesFilterPhotoVideo",params:[],type:"MessagesFilter"},{id:"-1629621880",predicate:"inputMessagesFilterDocument",params:[],type:"MessagesFilter"},{id:"-808946398",predicate:"inputMessagesFilterAudio",params:[],type:"MessagesFilter"},{id:"20626867",predicate:"updateNewMessage",params:[{name:"message",type:"Message"},{name:"pts",type:"int"}],type:"Update"},{id:"1318109142",predicate:"updateMessageID",params:[{name:"id",type:"int"},{name:"random_id",type:"long"}],type:"Update"},{id:"-966484431",predicate:"updateReadMessages",params:[{name:"messages",type:"Vector<int>"},{name:"pts",type:"int"}],type:"Update"},{id:"-1456734682",predicate:"updateDeleteMessages",params:[{name:"messages",type:"Vector<int>"},{name:"pts",type:"int"}],type:"Update"},{id:"-782376883",predicate:"updateRestoreMessages",params:[{name:"messages",type:"Vector<int>"},{name:"pts",type:"int"}],type:"Update"},{id:"1548249383",predicate:"updateUserTyping",params:[{name:"user_id",type:"int"},{name:"action",type:"SendMessageAction"}],type:"Update"},{id:"-1704596961",predicate:"updateChatUserTyping",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"int"},{name:"action",type:"SendMessageAction"}],type:"Update"},{id:"125178264",predicate:"updateChatParticipants",params:[{name:"participants",type:"ChatParticipants"}],type:"Update"},{id:"469489699",predicate:"updateUserStatus",params:[{name:"user_id",type:"int"},{name:"status",type:"UserStatus"}],type:"Update"},{id:"-1489818765",predicate:"updateUserName",params:[{name:"user_id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"username",type:"string"}],type:"Update"},{id:"-1791935732",predicate:"updateUserPhoto",params:[{name:"user_id",type:"int"},{name:"date",type:"int"},{name:"photo",type:"UserProfilePhoto"},{name:"previous",type:"Bool"}],type:"Update"},{id:"628472761",predicate:"updateContactRegistered",params:[{name:"user_id",type:"int"},{name:"date",type:"int"}],type:"Update"},{id:"1369737882",predicate:"updateContactLink",params:[{name:"user_id",type:"int"},{name:"my_link",type:"contacts.MyLink"},{name:"foreign_link",type:"contacts.ForeignLink"}],type:"Update"},{id:"1869154659",predicate:"updateActivation",params:[{name:"user_id",type:"int"}],type:"Update"},{id:"-1895411046",predicate:"updateNewAuthorization",params:[{name:"auth_key_id",type:"long"},{name:"date",type:"int"},{name:"device",type:"string"},{name:"location",type:"string"}],type:"Update"},{id:"-1519637954",predicate:"updates.state",params:[{name:"pts",type:"int"},{name:"qts",type:"int"},{name:"date",type:"int"},{name:"seq",type:"int"},{name:"unread_count",type:"int"}],type:"updates.State"},{id:"1567990072",predicate:"updates.differenceEmpty",params:[{name:"date",type:"int"},{name:"seq",type:"int"}],type:"updates.Difference"},{id:"16030880",predicate:"updates.difference",params:[{name:"new_messages",type:"Vector<Message>"},{name:"new_encrypted_messages",type:"Vector<EncryptedMessage>"},{name:"other_updates",type:"Vector<Update>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"},{name:"state",type:"updates.State"}],type:"updates.Difference"},{id:"-1459938943",predicate:"updates.differenceSlice",params:[{name:"new_messages",type:"Vector<Message>"},{name:"new_encrypted_messages",type:"Vector<EncryptedMessage>"},{name:"other_updates",type:"Vector<Update>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"},{name:"intermediate_state",type:"updates.State"}],type:"updates.Difference"},{id:"-484987010",predicate:"updatesTooLong",params:[],type:"Updates"},{id:"-738961532",predicate:"updateShortMessage",params:[{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"message",type:"string"},{name:"pts",type:"int"},{name:"date",type:"int"},{name:"seq",type:"int"}],type:"Updates"},{id:"724548942",predicate:"updateShortChatMessage",params:[{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"chat_id",type:"int"},{name:"message",type:"string"},{name:"pts",type:"int"},{name:"date",type:"int"},{name:"seq",type:"int"}],type:"Updates"},{id:"2027216577",predicate:"updateShort",params:[{name:"update",type:"Update"},{name:"date",type:"int"}],type:"Updates"},{id:"1918567619",predicate:"updatesCombined",params:[{name:"updates",type:"Vector<Update>"},{name:"users",type:"Vector<User>"},{name:"chats",type:"Vector<Chat>"},{name:"date",type:"int"},{name:"seq_start",type:"int"},{name:"seq",type:"int"}],type:"Updates"},{id:"1957577280",predicate:"updates",params:[{name:"updates",type:"Vector<Update>"},{name:"users",type:"Vector<User>"},{name:"chats",type:"Vector<Chat>"},{name:"date",type:"int"},{name:"seq",type:"int"}],type:"Updates"},{id:"-1916114267",predicate:"photos.photos",params:[{name:"photos",type:"Vector<Photo>"},{name:"users",type:"Vector<User>"}],type:"photos.Photos"},{id:"352657236",predicate:"photos.photosSlice",params:[{name:"count",type:"int"},{name:"photos",type:"Vector<Photo>"},{name:"users",type:"Vector<User>"}],type:"photos.Photos"},{id:"539045032",predicate:"photos.photo",params:[{name:"photo",type:"Photo"},{name:"users",type:"Vector<User>"}],type:"photos.Photo"},{id:"157948117",predicate:"upload.file",params:[{name:"type",type:"storage.FileType"},{name:"mtime",type:"int"},{name:"bytes",type:"bytes"}],type:"upload.File"},{id:"784507964",predicate:"dcOption",params:[{name:"id",type:"int"},{name:"hostname",type:"string"},{name:"ip_address",type:"string"},{name:"port",type:"int"}],type:"DcOption"},{id:"777313652",predicate:"config",params:[{name:"date",type:"int"},{name:"test_mode",type:"Bool"},{name:"this_dc",type:"int"},{name:"dc_options",type:"Vector<DcOption>"},{name:"chat_size_max",type:"int"},{name:"broadcast_size_max",type:"int"}],type:"Config"},{id:"-1910892683",predicate:"nearestDc",params:[{name:"country",type:"string"},{name:"this_dc",type:"int"},{name:"nearest_dc",type:"int"}],type:"NearestDc"},{id:"-1987579119",predicate:"help.appUpdate",params:[{name:"id",type:"int"},{name:"critical",type:"Bool"},{name:"url",type:"string"},{name:"text",type:"string"}],type:"help.AppUpdate"},{id:"-1000708810",predicate:"help.noAppUpdate",params:[],type:"help.AppUpdate"},{id:"415997816",predicate:"help.inviteText",params:[{name:"message",type:"string"}],type:"help.InviteText"},{id:"1047852486",predicate:"messages.statedMessagesLinks",params:[{name:"messages",type:"Vector<Message>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"},{name:"links",type:"Vector<contacts.Link>"},{name:"pts",type:"int"},{name:"seq",type:"int"}],type:"messages.StatedMessages"},{id:"-1448138623",predicate:"messages.statedMessageLink",params:[{name:"message",type:"Message"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"},{name:"links",type:"Vector<contacts.Link>"},{name:"pts",type:"int"},{name:"seq",type:"int"}],type:"messages.StatedMessage"},{id:"-371504577",predicate:"messages.sentMessageLink",params:[{name:"id",type:"int"},{name:"date",type:"int"},{name:"pts",type:"int"},{name:"seq",type:"int"},{name:"links",type:"Vector<contacts.Link>"}],type:"messages.SentMessage"},{id:"1960072954",predicate:"inputGeoChat",params:[{name:"chat_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputGeoChat"},{id:"1301143240",predicate:"inputNotifyGeoChatPeer",params:[{name:"peer",type:"InputGeoChat"}],type:"InputNotifyPeer"},{id:"1978329690",predicate:"geoChat",params:[{name:"id",type:"int"},{name:"access_hash",type:"long"},{name:"title",type:"string"},{name:"address",type:"string"},{name:"venue",type:"string"},{name:"geo",type:"GeoPoint"},{name:"photo",type:"ChatPhoto"},{name:"participants_count",type:"int"},{name:"date",type:"int"},{name:"checked_in",type:"Bool"},{name:"version",type:"int"}],type:"Chat"},{id:"1613830811",predicate:"geoChatMessageEmpty",params:[{name:"chat_id",type:"int"},{name:"id",type:"int"}],type:"GeoChatMessage"},{id:"1158019297",predicate:"geoChatMessage",params:[{name:"chat_id",type:"int"},{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"date",type:"int"},{name:"message",type:"string"},{name:"media",type:"MessageMedia"}],type:"GeoChatMessage"},{id:"-749755826",predicate:"geoChatMessageService",params:[{name:"chat_id",type:"int"},{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"date",type:"int"},{name:"action",type:"MessageAction"}],type:"GeoChatMessage"},{id:"397498251",predicate:"geochats.statedMessage",params:[{name:"message",type:"GeoChatMessage"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"},{name:"seq",type:"int"}],type:"geochats.StatedMessage"},{id:"1224651367",predicate:"geochats.located",params:[{name:"results",type:"Vector<ChatLocated>"},{name:"messages",type:"Vector<GeoChatMessage>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"geochats.Located"},{id:"-783127119",predicate:"geochats.messages",params:[{name:"messages",type:"Vector<GeoChatMessage>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"geochats.Messages"},{id:"-1135057944",predicate:"geochats.messagesSlice",params:[{name:"count",type:"int"},{name:"messages",type:"Vector<GeoChatMessage>"},{name:"chats",type:"Vector<Chat>"},{name:"users",type:"Vector<User>"}],type:"geochats.Messages"},{id:"1862504124",predicate:"messageActionGeoChatCreate",params:[{name:"title",type:"string"},{name:"address",type:"string"}],type:"MessageAction"},{id:"209540062",predicate:"messageActionGeoChatCheckin",params:[],type:"MessageAction"},{id:"1516823543",predicate:"updateNewGeoChatMessage",params:[{name:"message",type:"GeoChatMessage"}],type:"Update"},{id:"1662091044",predicate:"wallPaperSolid",params:[{name:"id",type:"int"},{name:"title",type:"string"},{name:"bg_color",type:"int"},{name:"color",type:"int"}],type:"WallPaper"},{id:"314359194",predicate:"updateNewEncryptedMessage",params:[{name:"message",type:"EncryptedMessage"},{name:"qts",type:"int"}],type:"Update"},{id:"386986326",predicate:"updateEncryptedChatTyping",params:[{name:"chat_id",type:"int"}],type:"Update"},{id:"-1264392051",predicate:"updateEncryption",params:[{name:"chat",type:"EncryptedChat"},{name:"date",type:"int"}],type:"Update"},{id:"956179895",predicate:"updateEncryptedMessagesRead",params:[{name:"chat_id",type:"int"},{name:"max_date",type:"int"},{name:"date",type:"int"}],type:"Update"},{id:"-1417756512",predicate:"encryptedChatEmpty",params:[{name:"id",type:"int"}],type:"EncryptedChat"},{id:"1006044124",predicate:"encryptedChatWaiting",params:[{name:"id",type:"int"},{name:"access_hash",type:"long"},{name:"date",type:"int"},{name:"admin_id",type:"int"},{name:"participant_id",type:"int"}],type:"EncryptedChat"},{id:"-931638658",predicate:"encryptedChatRequested",params:[{name:"id",type:"int"},{name:"access_hash",type:"long"},{name:"date",type:"int"},{name:"admin_id",type:"int"},{name:"participant_id",type:"int"},{name:"g_a",type:"bytes"}],type:"EncryptedChat"},{id:"-94974410",predicate:"encryptedChat",params:[{name:"id",type:"int"},{name:"access_hash",type:"long"},{name:"date",type:"int"},{name:"admin_id",type:"int"},{name:"participant_id",type:"int"},{name:"g_a_or_b",type:"bytes"},{name:"key_fingerprint",type:"long"}],type:"EncryptedChat"},{id:"332848423",predicate:"encryptedChatDiscarded",params:[{name:"id",type:"int"}],type:"EncryptedChat"},{id:"-247351839",predicate:"inputEncryptedChat",params:[{name:"chat_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputEncryptedChat"},{id:"-1038136962",predicate:"encryptedFileEmpty",params:[],type:"EncryptedFile"},{id:"1248893260",predicate:"encryptedFile",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"size",type:"int"},{name:"dc_id",type:"int"},{name:"key_fingerprint",type:"int"}],type:"EncryptedFile"},{id:"406307684",predicate:"inputEncryptedFileEmpty",params:[],type:"InputEncryptedFile"},{id:"1690108678",predicate:"inputEncryptedFileUploaded",params:[{name:"id",type:"long"},{name:"parts",type:"int"},{name:"md5_checksum",type:"string"},{name:"key_fingerprint",type:"int"}],type:"InputEncryptedFile"},{id:"1511503333",predicate:"inputEncryptedFile",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputEncryptedFile"},{id:"-182231723",predicate:"inputEncryptedFileLocation",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputFileLocation"},{id:"-317144808",predicate:"encryptedMessage",params:[{name:"random_id",type:"long"},{name:"chat_id",type:"int"},{name:"date",type:"int"},{name:"bytes",type:"bytes"},{name:"file",type:"EncryptedFile"}],type:"EncryptedMessage"},{id:"594758406",predicate:"encryptedMessageService",params:[{name:"random_id",type:"long"},{name:"chat_id",type:"int"},{name:"date",type:"int"},{name:"bytes",type:"bytes"}],type:"EncryptedMessage"},{id:"-1058912715",predicate:"messages.dhConfigNotModified",params:[{name:"random",type:"bytes"}],type:"messages.DhConfig"},{id:"740433629",predicate:"messages.dhConfig",params:[{name:"g",type:"int"},{name:"p",type:"bytes"},{name:"version",type:"int"},{name:"random",type:"bytes"}],type:"messages.DhConfig"},{id:"1443858741",predicate:"messages.sentEncryptedMessage",params:[{name:"date",type:"int"}],type:"messages.SentEncryptedMessage"},{id:"-1802240206",predicate:"messages.sentEncryptedFile",params:[{name:"date",type:"int"},{name:"file",type:"EncryptedFile"}],type:"messages.SentEncryptedMessage"},{id:"-95482955",predicate:"inputFileBig",params:[{name:"id",type:"long"},{name:"parts",type:"int"},{name:"name",type:"string"}],type:"InputFile"},{id:"767652808",predicate:"inputEncryptedFileBigUploaded",params:[{name:"id",type:"long"},{name:"parts",type:"int"},{name:"key_fingerprint",type:"int"}],type:"InputEncryptedFile"},{id:"974056226",predicate:"updateChatParticipantAdd",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"int"},{name:"inviter_id",type:"int"},{name:"version",type:"int"}],type:"Update"},{id:"1851755554",predicate:"updateChatParticipantDelete",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"int"},{name:"version",type:"int"}],type:"Update"},{id:"-1906403213",predicate:"updateDcOptions",params:[{name:"dc_options",type:"Vector<DcOption>"}],type:"Update"},{id:"1313442987",predicate:"inputMediaUploadedAudio",params:[{name:"file",type:"InputFile"},{name:"duration",type:"int"},{name:"mime_type",type:"string"}],type:"InputMedia"},{id:"-1986820223",predicate:"inputMediaAudio",params:[{name:"id",type:"InputAudio"}],type:"InputMedia"},{id:"887592125",predicate:"inputMediaUploadedDocument",params:[{name:"file",type:"InputFile"},{name:"file_name",type:"string"},{name:"mime_type",type:"string"}],type:"InputMedia"},{id:"1044831837",predicate:"inputMediaUploadedThumbDocument",params:[{name:"file",type:"InputFile"},{name:"thumb",type:"InputFile"},{name:"file_name",type:"string"},{name:"mime_type",type:"string"}],type:"InputMedia"},{id:"-779818943",predicate:"inputMediaDocument",params:[{name:"id",type:"InputDocument"}],type:"InputMedia"},{id:"802824708",predicate:"messageMediaDocument",params:[{name:"document",type:"Document"}],type:"MessageMedia"},{id:"-961117440",predicate:"messageMediaAudio",params:[{name:"audio",type:"Audio"}],type:"MessageMedia"},{id:"-648356732",predicate:"inputAudioEmpty",params:[],type:"InputAudio"},{id:"2010398975",predicate:"inputAudio",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputAudio"},{id:"1928391342",predicate:"inputDocumentEmpty",params:[],type:"InputDocument"},{id:"410618194",predicate:"inputDocument",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputDocument"},{id:"1960591437",predicate:"inputAudioFileLocation",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputFileLocation"},{id:"1313188841",predicate:"inputDocumentFileLocation",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputFileLocation"},{id:"1483311320",predicate:"audioEmpty",params:[{name:"id",type:"long"}],type:"Audio"},{id:"-945003370",predicate:"audio",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"user_id",type:"int"},{name:"date",type:"int"},{name:"duration",type:"int"},{name:"mime_type",type:"string"},{name:"size",type:"int"},{name:"dc_id",type:"int"}],type:"Audio"},{id:"922273905",predicate:"documentEmpty",params:[{name:"id",type:"long"}],type:"Document"},{id:"-1627626714",predicate:"document",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"user_id",type:"int"},{name:"date",type:"int"},{name:"file_name",type:"string"},{name:"mime_type",type:"string"},{name:"size",type:"int"},{name:"thumb",type:"PhotoSize"},{name:"dc_id",type:"int"}],type:"Document"},{id:"398898678",predicate:"help.support",params:[{name:"phone_number",type:"string"},{name:"user",type:"User"}],type:"help.Support"},{id:"-1613493288",predicate:"notifyPeer",params:[{name:"peer",type:"Peer"}],type:"NotifyPeer"},{id:"-1261946036",predicate:"notifyUsers",params:[],type:"NotifyPeer"},{id:"-1073230141",predicate:"notifyChats",params:[],type:"NotifyPeer"},{id:"1959820384",predicate:"notifyAll",params:[],type:"NotifyPeer"},{id:"-2131957734",predicate:"updateUserBlocked",params:[{name:"user_id",type:"int"},{name:"blocked",type:"Bool"}],type:"Update"},{id:"-1094555409",predicate:"updateNotifySettings",params:[{name:"peer",type:"NotifyPeer"},{name:"notify_settings",type:"PeerNotifySettings"}],type:"Update"},{id:"-484053553",predicate:"auth.sentAppCode",params:[{name:"phone_registered",type:"Bool"},{name:"phone_code_hash",type:"string"},{name:"send_call_timeout",type:"int"},{name:"is_password",type:"Bool"}],type:"auth.SentCode"},{id:"381645902",predicate:"sendMessageTypingAction",params:[],type:"SendMessageAction"},{id:"-44119819",predicate:"sendMessageCancelAction",params:[],type:"SendMessageAction"},{id:"-1584933265",predicate:"sendMessageRecordVideoAction",params:[],type:"SendMessageAction"},{id:"-1845219337",predicate:"sendMessageUploadVideoAction",params:[],type:"SendMessageAction"},{id:"-718310409",predicate:"sendMessageRecordAudioAction",params:[],type:"SendMessageAction"},{id:"-424899985",predicate:"sendMessageUploadAudioAction",params:[],type:"SendMessageAction"},{id:"-1727382502",predicate:"sendMessageUploadPhotoAction",params:[],type:"SendMessageAction"},{id:"-1884362354",predicate:"sendMessageUploadDocumentAction",params:[],type:"SendMessageAction"},{id:"393186209",predicate:"sendMessageGeoLocationAction",params:[],type:"SendMessageAction"},{id:"1653390447",predicate:"sendMessageChooseContactAction",params:[],type:"SendMessageAction"},{id:"-360210539",predicate:"contactFound",params:[{name:"user_id",type:"int"}],type:"ContactFound"},{id:"90570766",predicate:"contacts.found",params:[{name:"results",type:"Vector<ContactFound>"},{name:"users",type:"Vector<User>"}],type:"contacts.Found"},{id:"942527460",predicate:"updateServiceNotification",params:[{name:"type",type:"string"},{name:"message",type:"string"},{name:"media",type:"MessageMedia"},{name:"popup",type:"Bool"}],type:"Update"},{id:"-496024847",predicate:"userStatusRecently",params:[],type:"UserStatus"},{id:"129960444",predicate:"userStatusLastWeek",params:[],type:"UserStatus"},{id:"2011940674",predicate:"userStatusLastMonth",params:[],type:"UserStatus"},{id:"-298113238",predicate:"updatePrivacy",params:[{name:"key",type:"PrivacyKey"},{name:"rules",type:"Vector<PrivacyRule>"}],type:"Update"},{id:"1335282456",predicate:"inputPrivacyKeyStatusTimestamp",params:[],type:"InputPrivacyKey"},{id:"-1137792208",predicate:"privacyKeyStatusTimestamp",params:[],type:"PrivacyKey"},{id:"218751099",predicate:"inputPrivacyValueAllowContacts",params:[],type:"InputPrivacyRule"},{id:"407582158",predicate:"inputPrivacyValueAllowAll",params:[],type:"InputPrivacyRule"},{id:"320652927",predicate:"inputPrivacyValueAllowUsers",params:[{name:"users",type:"Vector<InputUser>"}],type:"InputPrivacyRule"},{id:"195371015",predicate:"inputPrivacyValueDisallowContacts",params:[],type:"InputPrivacyRule"},{id:"-697604407",predicate:"inputPrivacyValueDisallowAll",params:[],type:"InputPrivacyRule"},{id:"-1877932953",predicate:"inputPrivacyValueDisallowUsers",params:[{name:"users",type:"Vector<InputUser>"}],type:"InputPrivacyRule"},{id:"-123988",predicate:"privacyValueAllowContacts",params:[],type:"PrivacyRule"},{id:"1698855810",predicate:"privacyValueAllowAll",params:[],type:"PrivacyRule"},{id:"1297858060",predicate:"privacyValueAllowUsers",params:[{name:"users",type:"Vector<int>"}],type:"PrivacyRule"},{id:"-125240806",predicate:"privacyValueDisallowContacts",params:[],type:"PrivacyRule"},{id:"-1955338397",predicate:"privacyValueDisallowAll",params:[],type:"PrivacyRule"},{id:"209668535",predicate:"privacyValueDisallowUsers",params:[{name:"users",type:"Vector<int>"}],type:"PrivacyRule"},{id:"1430961007",predicate:"account.privacyRules",params:[{name:"rules",type:"Vector<PrivacyRule>"},{name:"users",type:"Vector<User>"}],type:"account.PrivacyRules"},{id:"-1194283041",predicate:"accountDaysTTL",params:[{name:"days",type:"int"}],type:"AccountDaysTTL"}],methods:[{id:"-878758099",method:"invokeAfterMsg",params:[{name:"msg_id",type:"long"},{name:"query",type:"!X"}],type:"X"},{id:"1036301552",method:"invokeAfterMsgs",params:[{name:"msg_ids",type:"Vector<long>"},{name:"query",type:"!X"}],type:"X"},{id:"1877286395",method:"auth.checkPhone",params:[{name:"phone_number",type:"string"}],type:"auth.CheckedPhone"},{id:"1988976461",method:"auth.sendCode",params:[{name:"phone_number",type:"string"},{name:"sms_type",type:"int"},{name:"api_id",type:"int"},{name:"api_hash",type:"string"},{name:"lang_code",type:"string"}],type:"auth.SentCode"},{id:"63247716",method:"auth.sendCall",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"}],type:"Bool"},{id:"453408308",method:"auth.signUp",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"},{name:"phone_code",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"}],type:"auth.Authorization"},{id:"-1126886015",method:"auth.signIn",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"},{name:"phone_code",type:"string"}],type:"auth.Authorization"},{id:"1461180992",method:"auth.logOut",params:[],type:"Bool"},{id:"-1616179942",method:"auth.resetAuthorizations",params:[],type:"Bool"},{id:"1998331287",method:"auth.sendInvites",params:[{name:"phone_numbers",type:"Vector<string>"},{name:"message",type:"string"}],type:"Bool"},{id:"-440401971",method:"auth.exportAuthorization",params:[{name:"dc_id",type:"int"}],type:"auth.ExportedAuthorization"},{id:"-470837741",method:"auth.importAuthorization",params:[{name:"id",type:"int"},{name:"bytes",type:"bytes"}],type:"auth.Authorization"},{id:"-841733627",method:"auth.bindTempAuthKey",params:[{name:"perm_auth_key_id",type:"long"},{name:"nonce",type:"long"},{name:"expires_at",type:"int"},{name:"encrypted_message",type:"bytes"}],type:"Bool"},{id:"1147957548",method:"account.registerDevice",params:[{name:"token_type",type:"int"},{name:"token",type:"string"},{name:"device_model",type:"string"},{name:"system_version",type:"string"},{name:"app_version",type:"string"},{name:"app_sandbox",type:"Bool"},{name:"lang_code",type:"string"}],type:"Bool"},{id:"1707432768",method:"account.unregisterDevice",params:[{name:"token_type",type:"int"},{name:"token",type:"string"}],type:"Bool"},{id:"-2067899501",method:"account.updateNotifySettings",params:[{name:"peer",type:"InputNotifyPeer"},{name:"settings",type:"InputPeerNotifySettings"}],type:"Bool"},{id:"313765169",method:"account.getNotifySettings",params:[{name:"peer",type:"InputNotifyPeer"}],type:"PeerNotifySettings"},{id:"-612493497",method:"account.resetNotifySettings",params:[],type:"Bool"},{id:"-259486360",method:"account.updateProfile",params:[{name:"first_name",type:"string"},{name:"last_name",type:"string"}],type:"User"},{id:"1713919532",method:"account.updateStatus",params:[{name:"offline",type:"Bool"}],type:"Bool"},{id:"-1068696894",method:"account.getWallPapers",params:[],type:"Vector<WallPaper>"},{id:"227648840",method:"users.getUsers",params:[{name:"id",type:"Vector<InputUser>"}],type:"Vector<User>"},{id:"-902781519",method:"users.getFullUser",params:[{name:"id",type:"InputUser"}],type:"UserFull"},{id:"-995929106",method:"contacts.getStatuses",params:[],type:"Vector<ContactStatus>"},{id:"583445000",method:"contacts.getContacts",params:[{name:"hash",type:"string"}],type:"contacts.Contacts"},{id:"-634342611",method:"contacts.importContacts",params:[{name:"contacts",type:"Vector<InputContact>"},{name:"replace",type:"Bool"}],type:"contacts.ImportedContacts"},{id:"-847825880",method:"contacts.getSuggested",params:[{name:"limit",type:"int"}],type:"contacts.Suggested"},{id:"-1902823612",method:"contacts.deleteContact",params:[{name:"id",type:"InputUser"}],type:"contacts.Link"},{id:"1504393374",method:"contacts.deleteContacts",params:[{name:"id",type:"Vector<InputUser>"}],type:"Bool"},{id:"858475004",method:"contacts.block",params:[{name:"id",type:"InputUser"}],type:"Bool"},{id:"-448724803",method:"contacts.unblock",params:[{name:"id",type:"InputUser"}],type:"Bool"},{id:"-176409329",method:"contacts.getBlocked",params:[{name:"offset",type:"int"},{name:"limit",type:"int"}],type:"contacts.Blocked"},{id:"-2065352905",method:"contacts.exportCard",params:[],type:"Vector<int>"},{id:"1340184318",method:"contacts.importCard",params:[{name:"export_card",type:"Vector<int>"}],type:"User"},{id:"1109588596",method:"messages.getMessages",params:[{name:"id",type:"Vector<int>"}],type:"messages.Messages"},{id:"-321970698",method:"messages.getDialogs",params:[{name:"offset",type:"int"},{name:"max_id",type:"int"},{name:"limit",type:"int"}],type:"messages.Dialogs"},{id:"-1834885329",method:"messages.getHistory",params:[{name:"peer",type:"InputPeer"},{name:"offset",type:"int"},{name:"max_id",type:"int"},{name:"limit",type:"int"}],type:"messages.Messages"},{id:"132772523",method:"messages.search",params:[{name:"peer",type:"InputPeer"},{name:"q",type:"string"},{name:"filter",type:"MessagesFilter"},{name:"min_date",type:"int"},{name:"max_date",type:"int"},{name:"offset",type:"int"},{name:"max_id",type:"int"},{name:"limit",type:"int"}],type:"messages.Messages"},{id:"-287800122",method:"messages.readHistory",params:[{name:"peer",type:"InputPeer"},{name:"max_id",type:"int"},{name:"offset",type:"int"},{name:"read_contents",type:"Bool"}],type:"messages.AffectedHistory"},{id:"-185009311",method:"messages.deleteHistory",params:[{name:"peer",type:"InputPeer"},{name:"offset",type:"int"}],type:"messages.AffectedHistory"},{id:"351460618",method:"messages.deleteMessages",params:[{name:"id",type:"Vector<int>"}],type:"Vector<int>"},{id:"962567550",method:"messages.restoreMessages",params:[{name:"id",type:"Vector<int>"}],type:"Vector<int>"},{id:"682347368",method:"messages.receivedMessages",params:[{name:"max_id",type:"int"}],type:"Vector<int>"},{id:"-1551737264",method:"messages.setTyping",params:[{name:"peer",type:"InputPeer"},{name:"action",type:"SendMessageAction"}],type:"Bool"},{id:"1289620139",method:"messages.sendMessage",params:[{name:"peer",type:"InputPeer"},{name:"message",type:"string"},{name:"random_id",type:"long"}],type:"messages.SentMessage"},{id:"-1547149962",method:"messages.sendMedia",params:[{name:"peer",type:"InputPeer"},{name:"media",type:"InputMedia"},{name:"random_id",type:"long"}],type:"messages.StatedMessage"},{id:"1363988751",method:"messages.forwardMessages",params:[{name:"peer",type:"InputPeer"},{name:"id",type:"Vector<int>"}],type:"messages.StatedMessages"},{id:"1013621127",method:"messages.getChats",params:[{name:"id",type:"Vector<int>"}],type:"messages.Chats"},{id:"998448230",method:"messages.getFullChat",params:[{name:"chat_id",type:"int"}],type:"messages.ChatFull"},{id:"-1262720843",method:"messages.editChatTitle",params:[{name:"chat_id",type:"int"},{name:"title",type:"string"}],type:"messages.StatedMessage"},{id:"-662601187",method:"messages.editChatPhoto",params:[{name:"chat_id",type:"int"},{name:"photo",type:"InputChatPhoto"}],type:"messages.StatedMessage"},{id:"787082910",method:"messages.addChatUser",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"InputUser"},{name:"fwd_limit",type:"int"}],type:"messages.StatedMessage"},{id:"-1010447069",method:"messages.deleteChatUser",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"InputUser"}],type:"messages.StatedMessage"},{id:"1100847854",method:"messages.createChat",params:[{name:"users",type:"Vector<InputUser>"},{name:"title",type:"string"}],type:"messages.StatedMessage"},{id:"-304838614",method:"updates.getState",params:[],type:"updates.State"},{id:"168039573",method:"updates.getDifference",params:[{name:"pts",type:"int"},{name:"date",type:"int"},{name:"qts",type:"int"}],type:"updates.Difference"},{id:"-285902432",method:"photos.updateProfilePhoto",params:[{name:"id",type:"InputPhoto"},{name:"crop",type:"InputPhotoCrop"}],type:"UserProfilePhoto"},{id:"-720397176",method:"photos.uploadProfilePhoto",params:[{name:"file",type:"InputFile"},{name:"caption",type:"string"},{name:"geo_point",type:"InputGeoPoint"},{name:"crop",type:"InputPhotoCrop"}],type:"photos.Photo"},{id:"-1291540959",method:"upload.saveFilePart",params:[{name:"file_id",type:"long"},{name:"file_part",type:"int"},{name:"bytes",type:"bytes"}],type:"Bool"},{id:"-475607115",method:"upload.getFile",params:[{name:"location",type:"InputFileLocation"},{name:"offset",type:"int"},{name:"limit",type:"int"}],type:"upload.File"},{id:"-990308245",method:"help.getConfig",params:[],type:"Config"},{id:"531836966",method:"help.getNearestDc",params:[],type:"NearestDc"},{id:"-938300290",method:"help.getAppUpdate",params:[{name:"device_model",type:"string"},{name:"system_version",type:"string"},{name:"app_version",type:"string"},{name:"lang_code",type:"string"}],type:"help.AppUpdate"},{id:"1862465352",method:"help.saveAppLog",params:[{name:"events",type:"Vector<InputAppEvent>"}],type:"Bool"},{id:"-1532407418",method:"help.getInviteText",params:[{name:"lang_code",type:"string"}],type:"help.InviteText"},{id:"-1209117380",method:"photos.getUserPhotos",params:[{name:"user_id",type:"InputUser"},{name:"offset",type:"int"},{name:"max_id",type:"int"},{name:"limit",type:"int"}],type:"photos.Photos"},{id:"66319602",method:"messages.forwardMessage",params:[{name:"peer",type:"InputPeer"},{name:"id",type:"int"},{name:"random_id",type:"long"}],type:"messages.StatedMessage"},{id:"1102776690",method:"messages.sendBroadcast",params:[{name:"contacts",type:"Vector<InputUser>"},{name:"message",type:"string"},{name:"media",type:"InputMedia"}],type:"messages.StatedMessages"},{id:"2132356495",method:"geochats.getLocated",params:[{name:"geo_point",type:"InputGeoPoint"},{name:"radius",type:"int"},{name:"limit",type:"int"}],type:"geochats.Located"},{id:"-515735953",method:"geochats.getRecents",params:[{name:"offset",type:"int"},{name:"limit",type:"int"}],type:"geochats.Messages"},{id:"1437853947",method:"geochats.checkin",params:[{name:"peer",type:"InputGeoChat"}],type:"geochats.StatedMessage"},{id:"1730338159",method:"geochats.getFullChat",params:[{name:"peer",type:"InputGeoChat"}],type:"messages.ChatFull"},{id:"1284383347",method:"geochats.editChatTitle",params:[{name:"peer",type:"InputGeoChat"},{name:"title",type:"string"},{name:"address",type:"string"}],type:"geochats.StatedMessage"},{id:"903355029",method:"geochats.editChatPhoto",params:[{name:"peer",type:"InputGeoChat"},{name:"photo",type:"InputChatPhoto"}],type:"geochats.StatedMessage"},{id:"-808598451",method:"geochats.search",params:[{name:"peer",type:"InputGeoChat"},{name:"q",type:"string"},{name:"filter",type:"MessagesFilter"},{name:"min_date",type:"int"},{name:"max_date",type:"int"},{name:"offset",type:"int"},{name:"max_id",type:"int"},{name:"limit",type:"int"}],type:"geochats.Messages"},{id:"-1254131096",method:"geochats.getHistory",params:[{name:"peer",type:"InputGeoChat"},{name:"offset",type:"int"},{name:"max_id",type:"int"},{name:"limit",type:"int"}],type:"geochats.Messages"},{id:"146319145",method:"geochats.setTyping",params:[{name:"peer",type:"InputGeoChat"},{name:"typing",type:"Bool"}],type:"Bool"},{id:"102432836",method:"geochats.sendMessage",params:[{name:"peer",type:"InputGeoChat"},{name:"message",type:"string"},{name:"random_id",type:"long"}],type:"geochats.StatedMessage"},{id:"-1192173825",method:"geochats.sendMedia",params:[{name:"peer",type:"InputGeoChat"},{name:"media",type:"InputMedia"},{name:"random_id",type:"long"}],type:"geochats.StatedMessage"},{id:"235482646",method:"geochats.createGeoChat",params:[{name:"title",type:"string"},{name:"geo_point",type:"InputGeoPoint"},{name:"address",type:"string"},{name:"venue",type:"string"}],type:"geochats.StatedMessage"},{id:"651135312",method:"messages.getDhConfig",params:[{name:"version",type:"int"},{name:"random_length",type:"int"}],type:"messages.DhConfig"},{id:"-162681021",method:"messages.requestEncryption",params:[{name:"user_id",type:"InputUser"},{name:"random_id",type:"int"},{name:"g_a",type:"bytes"}],type:"EncryptedChat"},{id:"1035731989",method:"messages.acceptEncryption",params:[{name:"peer",type:"InputEncryptedChat"},{name:"g_b",type:"bytes"},{name:"key_fingerprint",type:"long"}],type:"EncryptedChat"},{id:"-304536635",method:"messages.discardEncryption",params:[{name:"chat_id",type:"int"}],type:"Bool"},{id:"2031374829",method:"messages.setEncryptedTyping",params:[{name:"peer",type:"InputEncryptedChat"},{name:"typing",type:"Bool"}],type:"Bool"},{id:"2135648522",method:"messages.readEncryptedHistory",params:[{name:"peer",type:"InputEncryptedChat"},{name:"max_date",type:"int"}],type:"Bool"},{id:"-1451792525",method:"messages.sendEncrypted",params:[{name:"peer",type:"InputEncryptedChat"},{name:"random_id",type:"long"},{name:"data",type:"bytes"}],type:"messages.SentEncryptedMessage"},{id:"-1701831834",method:"messages.sendEncryptedFile",params:[{name:"peer",type:"InputEncryptedChat"},{name:"random_id",type:"long"},{name:"data",type:"bytes"},{name:"file",type:"InputEncryptedFile"}],type:"messages.SentEncryptedMessage"},{id:"852769188",method:"messages.sendEncryptedService",params:[{name:"peer",type:"InputEncryptedChat"},{name:"random_id",type:"long"},{name:"data",type:"bytes"}],type:"messages.SentEncryptedMessage"},{id:"1436924774",method:"messages.receivedQueue",params:[{name:"max_qts",type:"int"}],type:"Vector<long>"},{id:"-562337987",method:"upload.saveBigFilePart",params:[{name:"file_id",type:"long"},{name:"file_part",type:"int"},{name:"file_total_parts",type:"int"},{name:"bytes",type:"bytes"}],type:"Bool"},{id:"1769565673",method:"initConnection",params:[{name:"api_id",type:"int"},{name:"device_model",type:"string"},{name:"system_version",type:"string"},{name:"app_version",type:"string"},{name:"lang_code",type:"string"},{name:"query",type:"!X"}],type:"X"},{id:"-1663104819",method:"help.getSupport",params:[],type:"help.Support"},{id:"229241832",method:"auth.sendSms",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"}],type:"Bool"},{id:"894131138",method:"messages.readMessageContents",params:[{name:"id",type:"Vector<int>"}],type:"Vector<int>"},{id:"655677548",method:"account.checkUsername",params:[{name:"username",type:"string"}],type:"Bool"},{id:"1040964988",method:"account.updateUsername",params:[{name:"username",type:"string"}],type:"User"},{id:"301470424",method:"contacts.search",params:[{name:"q",type:"string"},{name:"limit",type:"int"}],type:"contacts.Found"},{id:"-623130288",method:"account.getPrivacy",params:[{name:"key",type:"InputPrivacyKey"}],type:"account.PrivacyRules"},{id:"-906486552",method:"account.setPrivacy",params:[{name:"key",type:"InputPrivacyKey"},{name:"rules",type:"Vector<InputPrivacyRule>"}],type:"account.PrivacyRules"},{id:"1099779595",method:"account.deleteAccount",params:[{name:"reason",type:"string"}],type:"Bool"},{id:"150761757",method:"account.getAccountTTL",params:[],type:"AccountDaysTTL"},{id:"608323678",method:"account.setAccountTTL",params:[{name:"ttl",type:"AccountDaysTTL"}],type:"Bool"},{id:"-627372787",method:"invokeWithLayer",params:[{name:"layer",type:"int"},{name:"query",type:"!X"}],type:"X"}]},Config.Schema.API.layer=19,Config.Emoji={"00a9":["©",["copyright"]],"00ae":["®",["registered"]],"203c":["‼",["bangbang"]],2049:["⁉",["interrobang"]],2122:["™",["tm"]],2139:["ℹ",["information_source"]],2194:["↔",["left_right_arrow"]],2195:["↕",["arrow_up_down"]],2196:["↖",["arrow_upper_left"]],2197:["↗",["arrow_upper_right"]],2198:["↘",["arrow_lower_right"]],2199:["↙",["arrow_lower_left"]],"21a9":["↩",["leftwards_arrow_with_hook"]],"21aa":["↪",["arrow_right_hook"]],"231a":["⌚",["watch"]],"231b":["⌛",["hourglass"]],"23e9":["⏩",["fast_forward"]],"23ea":["⏪",["rewind"]],"23eb":["⏫",["arrow_double_up"]],"23ec":["⏬",["arrow_double_down"]],"23f0":["⏰",["alarm_clock"]],"23f3":["⏳",["hourglass_flowing_sand"]],"24c2":["Ⓜ",["m"]],"25aa":["▪",["black_small_square"]],"25ab":["▫",["white_small_square"]],"25b6":["▶",["arrow_forward"]],"25c0":["◀",["arrow_backward"]],"25fb":["◻",["white_medium_square"]],"25fc":["◼",["black_medium_square"]],"25fd":["◽",["white_medium_small_square"]],"25fe":["◾",["black_medium_small_square"]],2600:["☀",["sunny"]],2601:["☁",["cloud"]],"260e":["☎",["phone","telephone"]],2611:["☑",["ballot_box_with_check"]],2614:["☔",["umbrella"]],2615:["☕",["coffee"]],"261d":["☝",["point_up"]],"263a":["☺",["relaxed"]],2648:["♈",["aries"]],2649:["♉",["taurus"]],"264a":["♊",["gemini"]],"264b":["♋",["cancer"]],"264c":["♌",["leo"]],"264d":["♍",["virgo"]],"264e":["♎",["libra"]],"264f":["♏",["scorpius"]],2650:["♐",["sagittarius"]],2651:["♑",["capricorn"]],2652:["♒",["aquarius"]],2653:["♓",["pisces"]],2660:["♠",["spades"]],2663:["♣",["clubs"]],2665:["♥",["hearts"]],2666:["♦",["diamonds"]],2668:["♨",["hotsprings"]],"267b":["♻",["recycle"]],"267f":["♿",["wheelchair"]],2693:["⚓",["anchor"]],"26a0":["⚠",["warning"]],"26a1":["⚡",["zap"]],"26aa":["⚪",["white_circle"]],"26ab":["⚫",["black_circle"]],"26bd":["⚽",["soccer"]],"26be":["⚾",["baseball"]],"26c4":["⛄",["snowman"]],"26c5":["⛅",["partly_sunny"]],"26ce":["⛎",["ophiuchus"]],"26d4":["⛔",["no_entry"]],"26ea":["⛪",["church"]],"26f2":["⛲",["fountain"]],"26f3":["⛳",["golf"]],"26f5":["⛵",["boat","sailboat"]],"26fa":["⛺",["tent"]],"26fd":["⛽",["fuelpump"]],2702:["✂",["scissors"]],2705:["✅",["white_check_mark"]],2708:["✈",["airplane"]],2709:["✉",["email","envelope"]],"270a":["✊",["fist"]],"270b":["✋",["hand","raised_hand"]],"270c":["✌",["v"]],"270f":["✏",["pencil2"]],2712:["✒",["black_nib"]],2714:["✔",["heavy_check_mark"]],2716:["✖",["heavy_multiplication_x"]],2728:["✨",["sparkles"]],2733:["✳",["eight_spoked_asterisk"]],2734:["✴",["eight_pointed_black_star"]],2744:["❄",["snowflake"]],2747:["❇",["sparkle"]],"274c":["❌",["x"]],"274e":["❎",["negative_squared_cross_mark"]],2753:["❓",["question"]],2754:["❔",["grey_question"]],2755:["❕",["grey_exclamation"]],2757:["❗",["exclamation","heavy_exclamation_mark"]],2764:["❤",["heart"],"<3"],2795:["➕",["heavy_plus_sign"]],2796:["➖",["heavy_minus_sign"]],2797:["➗",["heavy_division_sign"]],"27a1":["➡",["arrow_right"]],"27b0":["➰",["curly_loop"]],"27bf":["➿",["loop"]],2934:["⤴",["arrow_heading_up"]],2935:["⤵",["arrow_heading_down"]],"2b05":["⬅",["arrow_left"]],"2b06":["⬆",["arrow_up"]],"2b07":["⬇",["arrow_down"]],"2b1b":["⬛",["black_large_square"]],"2b1c":["⬜",["white_large_square"]],"2b50":["⭐",["star"]],"2b55":["⭕",["o"]],3030:["〰",["wavy_dash"]],"303d":["〽",["part_alternation_mark"]],3297:["㊗",["congratulations"]],3299:["㊙",["secret"]],"1f004":["🀄",["mahjong"]],"1f0cf":["🃏",["black_joker"]],"1f170":["🅰",["a"]],"1f171":["🅱",["b"]],"1f17e":["🅾",["o2"]],"1f17f":["🅿",["parking"]],"1f18e":["🆎",["ab"]],"1f191":["🆑",["cl"]],"1f192":["🆒",["cool"]],"1f193":["🆓",["free"]],"1f194":["🆔",["id"]],"1f195":["🆕",["new"]],"1f196":["🆖",["ng"]],"1f197":["🆗",["ok"]],"1f198":["🆘",["sos"]],"1f199":["🆙",["up"]],"1f19a":["🆚",["vs"]],"1f201":["🈁",["koko"]],"1f202":["🈂",["sa"]],"1f21a":["🈚",["u7121"]],"1f22f":["🈯",["u6307"]],"1f232":["🈲",["u7981"]],"1f233":["🈳",["u7a7a"]],"1f234":["🈴",["u5408"]],"1f235":["🈵",["u6e80"]],"1f236":["🈶",["u6709"]],"1f237":["🈷",["u6708"]],"1f238":["🈸",["u7533"]],"1f239":["🈹",["u5272"]],"1f23a":["🈺",["u55b6"]],"1f250":["🉐",["ideograph_advantage"]],"1f251":["🉑",["accept"]],"1f300":["🌀",["cyclone"]],"1f301":["🌁",["foggy"]],"1f302":["🌂",["closed_umbrella"]],"1f303":["🌃",["night_with_stars"]],"1f304":["🌄",["sunrise_over_mountains"]],"1f305":["🌅",["sunrise"]],"1f306":["🌆",["city_sunset"]],"1f307":["🌇",["city_sunrise"]],"1f308":["🌈",["rainbow"]],"1f309":["🌉",["bridge_at_night"]],"1f30a":["🌊",["ocean"]],"1f30b":["🌋",["volcano"]],"1f30c":["🌌",["milky_way"]],"1f30d":["🌍",["earth_africa"]],"1f30e":["🌎",["earth_americas"]],"1f30f":["🌏",["earth_asia"]],"1f310":["🌐",["globe_with_meridians"]],"1f311":["🌑",["new_moon"]],"1f312":["🌒",["waxing_crescent_moon"]],"1f313":["🌓",["first_quarter_moon"]],"1f314":["🌔",["moon","waxing_gibbous_moon"]],"1f315":["🌕",["full_moon"]],"1f316":["🌖",["waning_gibbous_moon"]],"1f317":["🌗",["last_quarter_moon"]],"1f318":["🌘",["waning_crescent_moon"]],"1f319":["🌙",["crescent_moon"]],"1f320":["🌠",["stars"]],"1f31a":["🌚",["new_moon_with_face"]],"1f31b":["🌛",["first_quarter_moon_with_face"]],"1f31c":["🌜",["last_quarter_moon_with_face"]],"1f31d":["🌝",["full_moon_with_face"]],"1f31e":["🌞",["sun_with_face"]],"1f31f":["🌟",["star2"]],"1f330":["🌰",["chestnut"]],"1f331":["🌱",["seedling"]],"1f332":["🌲",["evergreen_tree"]],"1f333":["🌳",["deciduous_tree"]],"1f334":["🌴",["palm_tree"]],"1f335":["🌵",["cactus"]],"1f337":["🌷",["tulip"]],"1f338":["🌸",["cherry_blossom"]],"1f339":["🌹",["rose"]],"1f33a":["🌺",["hibiscus"]],"1f33b":["🌻",["sunflower"]],"1f33c":["🌼",["blossom"]],"1f33d":["🌽",["corn"]],"1f33e":["🌾",["ear_of_rice"]],"1f33f":["🌿",["herb"]],"1f340":["🍀",["four_leaf_clover"]],"1f341":["🍁",["maple_leaf"]],"1f342":["🍂",["fallen_leaf"]],"1f343":["🍃",["leaves"]],"1f344":["🍄",["mushroom"]],"1f345":["🍅",["tomato"]],"1f346":["🍆",["eggplant"]],"1f347":["🍇",["grapes"]],"1f348":["🍈",["melon"]],"1f349":["🍉",["watermelon"]],"1f34a":["🍊",["tangerine"]],"1f34b":["🍋",["lemon"]],"1f34c":["🍌",["banana"]],"1f34d":["🍍",["pineapple"]],"1f34e":["🍎",["apple"]],"1f34f":["🍏",["green_apple"]],"1f350":["🍐",["pear"]],"1f351":["🍑",["peach"]],"1f352":["🍒",["cherries"]],"1f353":["🍓",["strawberry"]],"1f354":["🍔",["hamburger"]],"1f355":["🍕",["pizza"]],"1f356":["🍖",["meat_on_bone"]],"1f357":["🍗",["poultry_leg"]],"1f358":["🍘",["rice_cracker"]],"1f359":["🍙",["rice_ball"]],"1f35a":["🍚",["rice"]],"1f35b":["🍛",["curry"]],"1f35c":["🍜",["ramen"]],"1f35d":["🍝",["spaghetti"]],"1f35e":["🍞",["bread"]],"1f35f":["🍟",["fries"]],"1f360":["🍠",["sweet_potato"]],"1f361":["🍡",["dango"]],"1f362":["🍢",["oden"]],"1f363":["🍣",["sushi"]],"1f364":["🍤",["fried_shrimp"]],"1f365":["🍥",["fish_cake"]],"1f366":["🍦",["icecream"]],"1f367":["🍧",["shaved_ice"]],"1f368":["🍨",["ice_cream"]],"1f369":["🍩",["doughnut"]],"1f36a":["🍪",["cookie"]],"1f36b":["🍫",["chocolate_bar"]],"1f36c":["🍬",["candy"]],"1f36d":["🍭",["lollipop"]],"1f36e":["🍮",["custard"]],"1f36f":["🍯",["honey_pot"]],"1f370":["🍰",["cake"]],"1f371":["🍱",["bento"]],"1f372":["🍲",["stew"]],"1f373":["🍳",["egg"]],"1f374":["🍴",["fork_and_knife"]],"1f375":["🍵",["tea"]],"1f376":["🍶",["sake"]],"1f377":["🍷",["wine_glass"]],"1f378":["🍸",["cocktail"]],"1f379":["🍹",["tropical_drink"]],"1f37a":["🍺",["beer"]],"1f37b":["🍻",["beers"]],"1f37c":["🍼",["baby_bottle"]],"1f380":["🎀",["ribbon"]],"1f381":["🎁",["gift"]],"1f382":["🎂",["birthday"]],"1f383":["🎃",["jack_o_lantern"]],"1f384":["🎄",["christmas_tree"]],"1f385":["🎅",["santa"]],"1f386":["🎆",["fireworks"]],"1f387":["🎇",["sparkler"]],"1f388":["🎈",["balloon"]],"1f389":["🎉",["tada"]],"1f38a":["🎊",["confetti_ball"]],"1f38b":["🎋",["tanabata_tree"]],"1f38c":["🎌",["crossed_flags"]],"1f38d":["🎍",["bamboo"]],"1f38e":["🎎",["dolls"]],"1f38f":["🎏",["flags"]],"1f390":["🎐",["wind_chime"]],"1f391":["🎑",["rice_scene"]],"1f392":["🎒",["school_satchel"]],"1f393":["🎓",["mortar_board"]],"1f3a0":["🎠",["carousel_horse"]],"1f3a1":["🎡",["ferris_wheel"]],"1f3a2":["🎢",["roller_coaster"]],"1f3a3":["🎣",["fishing_pole_and_fish"]],"1f3a4":["🎤",["microphone"]],"1f3a5":["🎥",["movie_camera"]],"1f3a6":["🎦",["cinema"]],"1f3a7":["🎧",["headphones"]],"1f3a8":["🎨",["art"]],"1f3a9":["🎩",["tophat"]],"1f3aa":["🎪",["circus_tent"]],"1f3ab":["🎫",["ticket"]],"1f3ac":["🎬",["clapper"]],"1f3ad":["🎭",["performing_arts"]],"1f3ae":["🎮",["video_game"]],"1f3af":["🎯",["dart"]],"1f3b0":["🎰",["slot_machine"]],"1f3b1":["🎱",["8ball"]],"1f3b2":["🎲",["game_die"]],"1f3b3":["🎳",["bowling"]],"1f3b4":["🎴",["flower_playing_cards"]],"1f3b5":["🎵",["musical_note"]],"1f3b6":["🎶",["notes"]],"1f3b7":["🎷",["saxophone"]],"1f3b8":["🎸",["guitar"]],"1f3b9":["🎹",["musical_keyboard"]],"1f3ba":["🎺",["trumpet"]],"1f3bb":["🎻",["violin"]],"1f3bc":["🎼",["musical_score"]],"1f3bd":["🎽",["running_shirt_with_sash"]],"1f3be":["🎾",["tennis"]],"1f3bf":["🎿",["ski"]],"1f3c0":["🏀",["basketball"]],"1f3c1":["🏁",["checkered_flag"]],"1f3c2":["🏂",["snowboarder"]],"1f3c3":["🏃",["runner","running"]],"1f3c4":["🏄",["surfer"]],"1f3c6":["🏆",["trophy"]],"1f3c7":["🏇",["horse_racing"]],"1f3c8":["🏈",["football"]],"1f3c9":["🏉",["rugby_football"]],"1f3ca":["🏊",["swimmer"]],"1f3e0":["🏠",["house"]],"1f3e1":["🏡",["house_with_garden"]],"1f3e2":["🏢",["office"]],"1f3e3":["🏣",["post_office"]],"1f3e4":["🏤",["european_post_office"]],"1f3e5":["🏥",["hospital"]],"1f3e6":["🏦",["bank"]],"1f3e7":["🏧",["atm"]],"1f3e8":["🏨",["hotel"]],"1f3e9":["🏩",["love_hotel"]],"1f3ea":["🏪",["convenience_store"]],"1f3eb":["🏫",["school"]],"1f3ec":["🏬",["department_store"]],"1f3ed":["🏭",["factory"]],"1f3ee":["🏮",["izakaya_lantern","lantern"]],"1f3ef":["🏯",["japanese_castle"]],"1f3f0":["🏰",["european_castle"]],"1f400":["🐀",["rat"]],"1f401":["🐁",["mouse2"]],"1f402":["🐂",["ox"]],"1f403":["🐃",["water_buffalo"]],"1f404":["🐄",["cow2"]],"1f405":["🐅",["tiger2"]],"1f406":["🐆",["leopard"]],"1f407":["🐇",["rabbit2"]],"1f408":["🐈",["cat2"]],"1f409":["🐉",["dragon"]],"1f40a":["🐊",["crocodile"]],"1f40b":["🐋",["whale2"]],"1f40c":["🐌",["snail"]],"1f40d":["🐍",["snake"]],"1f40e":["🐎",["racehorse"]],"1f40f":["🐏",["ram"]],"1f410":["🐐",["goat"]],"1f411":["🐑",["sheep"]],"1f412":["🐒",["monkey"]],"1f413":["🐓",["rooster"]],"1f414":["🐔",["chicken"]],"1f415":["🐕",["dog2"]],"1f416":["🐖",["pig2"]],"1f417":["🐗",["boar"]],"1f418":["🐘",["elephant"]],"1f419":["🐙",["octopus"]],"1f41a":["🐚",["shell"]],"1f41b":["🐛",["bug"]],"1f41c":["🐜",["ant"]],"1f41d":["🐝",["bee","honeybee"]],"1f41e":["🐞",["beetle"]],"1f41f":["🐟",["fish"]],"1f420":["🐠",["tropical_fish"]],"1f421":["🐡",["blowfish"]],"1f422":["🐢",["turtle"]],"1f423":["🐣",["hatching_chick"]],"1f424":["🐤",["baby_chick"]],"1f425":["🐥",["hatched_chick"]],"1f426":["🐦",["bird"]],"1f427":["🐧",["penguin"]],"1f428":["🐨",["koala"]],"1f429":["🐩",["poodle"]],"1f42a":["🐪",["dromedary_camel"]],"1f42b":["🐫",["camel"]],"1f42c":["🐬",["dolphin","flipper"]],"1f42d":["🐭",["mouse"]],"1f42e":["🐮",["cow"]],"1f42f":["🐯",["tiger"]],"1f430":["🐰",["rabbit"]],"1f431":["🐱",["cat"]],"1f432":["🐲",["dragon_face"]],"1f433":["🐳",["whale"]],"1f434":["🐴",["horse"]],"1f435":["🐵",["monkey_face"]],"1f436":["🐶",["dog"]],"1f437":["🐷",["pig"]],"1f438":["🐸",["frog"]],"1f439":["🐹",["hamster"]],"1f43a":["🐺",["wolf"]],"1f43b":["🐻",["bear"]],"1f43c":["🐼",["panda_face"]],"1f43d":["🐽",["pig_nose"]],"1f43e":["🐾",["feet","paw_prints"]],"1f440":["👀",["eyes"]],"1f442":["👂",["ear"]],"1f443":["👃",["nose"]],"1f444":["👄",["lips"]],"1f445":["👅",["tongue"]],"1f446":["👆",["point_up_2"]],"1f447":["👇",["point_down"]],"1f448":["👈",["point_left"]],"1f449":["👉",["point_right"]],"1f44a":["👊",["facepunch","punch"]],"1f44b":["👋",["wave"]],"1f44c":["👌",["ok_hand"]],"1f44d":["👍",["+1","thumbsup"]],"1f44e":["👎",["-1","thumbsdown"]],"1f44f":["👏",["clap"]],"1f450":["👐",["open_hands"]],"1f451":["👑",["crown"]],"1f452":["👒",["womans_hat"]],"1f453":["👓",["eyeglasses"]],"1f454":["👔",["necktie"]],"1f455":["👕",["shirt","tshirt"]],"1f456":["👖",["jeans"]],"1f457":["👗",["dress"]],"1f458":["👘",["kimono"]],"1f459":["👙",["bikini"]],"1f45a":["👚",["womans_clothes"]],"1f45b":["👛",["purse"]],"1f45c":["👜",["handbag"]],"1f45d":["👝",["pouch"]],"1f45e":["👞",["mans_shoe","shoe"]],"1f45f":["👟",["athletic_shoe"]],"1f460":["👠",["high_heel"]],"1f461":["👡",["sandal"]],"1f462":["👢",["boot"]],"1f463":["👣",["footprints"]],"1f464":["👤",["bust_in_silhouette"]],"1f465":["👥",["busts_in_silhouette"]],"1f466":["👦",["boy"]],"1f467":["👧",["girl"]],"1f468":["👨",["man"]],"1f469":["👩",["woman"]],"1f46a":["👪",["family"]],"1f46b":["👫",["couple"]],"1f46c":["👬",["two_men_holding_hands"]],"1f46d":["👭",["two_women_holding_hands"]],"1f46e":["👮",["cop"]],"1f46f":["👯",["dancers"]],"1f470":["👰",["bride_with_veil"]],"1f471":["👱",["person_with_blond_hair"]],"1f472":["👲",["man_with_gua_pi_mao"]],"1f473":["👳",["man_with_turban"]],"1f474":["👴",["older_man"]],"1f475":["👵",["older_woman"]],"1f476":["👶",["baby"]],"1f477":["👷",["construction_worker"]],"1f478":["👸",["princess"]],"1f479":["👹",["japanese_ogre"]],"1f47a":["👺",["japanese_goblin"]],"1f47b":["👻",["ghost"]],"1f47c":["👼",["angel"]],"1f47d":["👽",["alien"]],"1f47e":["👾",["space_invader"]],"1f47f":["👿",["imp"]],"1f480":["💀",["skull"]],"1f481":["💁",["information_desk_person"]],"1f482":["💂",["guardsman"]],"1f483":["💃",["dancer"]],"1f484":["💄",["lipstick"]],"1f485":["💅",["nail_care"]],"1f486":["💆",["massage"]],"1f487":["💇",["haircut"]],"1f488":["💈",["barber"]],"1f489":["💉",["syringe"]],"1f48a":["💊",["pill"]],"1f48b":["💋",["kiss"]],"1f48c":["💌",["love_letter"]],"1f48d":["💍",["ring"]],"1f48e":["💎",["gem"]],"1f48f":["💏",["couplekiss"]],"1f490":["💐",["bouquet"]],"1f491":["💑",["couple_with_heart"]],"1f492":["💒",["wedding"]],"1f493":["💓",["heartbeat"]],"1f494":["💔",["broken_heart"],"</3"],"1f495":["💕",["two_hearts"]],"1f496":["💖",["sparkling_heart"]],"1f497":["💗",["heartpulse"]],"1f498":["💘",["cupid"]],"1f499":["💙",["blue_heart"],"<3"],"1f49a":["💚",["green_heart"],"<3"],"1f49b":["💛",["yellow_heart"],"<3"],"1f49c":["💜",["purple_heart"],"<3"],"1f49d":["💝",["gift_heart"]],"1f49e":["💞",["revolving_hearts"]],"1f49f":["💟",["heart_decoration"]],"1f4a0":["💠",["diamond_shape_with_a_dot_inside"]],"1f4a1":["💡",["bulb"]],"1f4a2":["💢",["anger"]],"1f4a3":["💣",["bomb"]],"1f4a4":["💤",["zzz"]],"1f4a5":["💥",["boom","collision"]],"1f4a6":["💦",["sweat_drops"]],"1f4a7":["💧",["droplet"]],"1f4a8":["💨",["dash"]],"1f4a9":["💩",["hankey","poop","shit"]],"1f4aa":["💪",["muscle"]],"1f4ab":["💫",["dizzy"]],"1f4ac":["💬",["speech_balloon"]],"1f4ad":["💭",["thought_balloon"]],"1f4ae":["💮",["white_flower"]],"1f4af":["💯",["100"]],"1f4b0":["💰",["moneybag"]],"1f4b1":["💱",["currency_exchange"]],"1f4b2":["💲",["heavy_dollar_sign"]],"1f4b3":["💳",["credit_card"]],"1f4b4":["💴",["yen"]],"1f4b5":["💵",["dollar"]],"1f4b6":["💶",["euro"]],"1f4b7":["💷",["pound"]],"1f4b8":["💸",["money_with_wings"]],"1f4b9":["💹",["chart"]],"1f4ba":["💺",["seat"]],"1f4bb":["💻",["computer"]],"1f4bc":["💼",["briefcase"]],"1f4bd":["💽",["minidisc"]],"1f4be":["💾",["floppy_disk"]],"1f4bf":["💿",["cd"]],"1f4c0":["📀",["dvd"]],"1f4c1":["📁",["file_folder"]],"1f4c2":["📂",["open_file_folder"]],"1f4c3":["📃",["page_with_curl"]],"1f4c4":["📄",["page_facing_up"]],"1f4c5":["📅",["date"]],"1f4c6":["📆",["calendar"]],"1f4c7":["📇",["card_index"]],"1f4c8":["📈",["chart_with_upwards_trend"]],"1f4c9":["📉",["chart_with_downwards_trend"]],"1f4ca":["📊",["bar_chart"]],"1f4cb":["📋",["clipboard"]],"1f4cc":["📌",["pushpin"]],"1f4cd":["📍",["round_pushpin"]],"1f4ce":["📎",["paperclip"]],"1f4cf":["📏",["straight_ruler"]],"1f4d0":["📐",["triangular_ruler"]],"1f4d1":["📑",["bookmark_tabs"]],"1f4d2":["📒",["ledger"]],"1f4d3":["📓",["notebook"]],"1f4d4":["📔",["notebook_with_decorative_cover"]],"1f4d5":["📕",["closed_book"]],"1f4d6":["📖",["book","open_book"]],"1f4d7":["📗",["green_book"]],"1f4d8":["📘",["blue_book"]],"1f4d9":["📙",["orange_book"]],"1f4da":["📚",["books"]],"1f4db":["📛",["name_badge"]],"1f4dc":["📜",["scroll"]],"1f4dd":["📝",["memo","pencil"]],"1f4de":["📞",["telephone_receiver"]],"1f4df":["📟",["pager"]],"1f4e0":["📠",["fax"]],"1f4e1":["📡",["satellite"]],"1f4e2":["📢",["loudspeaker"]],"1f4e3":["📣",["mega"]],"1f4e4":["📤",["outbox_tray"]],"1f4e5":["📥",["inbox_tray"]],"1f4e6":["📦",["package"]],"1f4e7":["📧",["e-mail"]],"1f4e8":["📨",["incoming_envelope"]],"1f4e9":["📩",["envelope_with_arrow"]],"1f4ea":["📪",["mailbox_closed"]],"1f4eb":["📫",["mailbox"]],"1f4ec":["📬",["mailbox_with_mail"]],"1f4ed":["📭",["mailbox_with_no_mail"]],"1f4ee":["📮",["postbox"]],"1f4ef":["📯",["postal_horn"]],"1f4f0":["📰",["newspaper"]],"1f4f1":["📱",["iphone"]],"1f4f2":["📲",["calling"]],"1f4f3":["📳",["vibration_mode"]],"1f4f4":["📴",["mobile_phone_off"]],"1f4f5":["📵",["no_mobile_phones"]],"1f4f6":["📶",["signal_strength"]],"1f4f7":["📷",["camera"]],"1f4f9":["📹",["video_camera"]],"1f4fa":["📺",["tv"]],"1f4fb":["📻",["radio"]],"1f4fc":["📼",["vhs"]],"1f500":["🔀",["twisted_rightwards_arrows"]],"1f501":["🔁",["repeat"]],"1f502":["🔂",["repeat_one"]],"1f503":["🔃",["arrows_clockwise"]],"1f504":["🔄",["arrows_counterclockwise"]],"1f505":["🔅",["low_brightness"]],"1f506":["🔆",["high_brightness"]],"1f507":["🔇",["mute"]],"1f508":["🔉",["speaker"]],"1f509":["🔉",["sound"]],"1f50a":["🔊",["loud_sound"]],"1f50b":["🔋",["battery"]],"1f50c":["🔌",["electric_plug"]],"1f50d":["🔍",["mag"]],"1f50e":["🔎",["mag_right"]],"1f50f":["🔏",["lock_with_ink_pen"]],"1f510":["🔐",["closed_lock_with_key"]],"1f511":["🔑",["key"]],"1f512":["🔒",["lock"]],"1f513":["🔓",["unlock"]],"1f514":["🔔",["bell"]],"1f515":["🔕",["no_bell"]],"1f516":["🔖",["bookmark"]],"1f517":["🔗",["link"]],"1f518":["🔘",["radio_button"]],"1f519":["🔙",["back"]],"1f51a":["🔚",["end"]],"1f51b":["🔛",["on"]],"1f51c":["🔜",["soon"]],"1f51d":["🔝",["top"]],"1f51e":["🔞",["underage"]],"1f51f":["🔟",["keycap_ten"]],"1f520":["🔠",["capital_abcd"]],"1f521":["🔡",["abcd"]],"1f522":["🔢",["1234"]],"1f523":["🔣",["symbols"]],"1f524":["🔤",["abc"]],"1f525":["🔥",["fire"]],"1f526":["🔦",["flashlight"]],"1f527":["🔧",["wrench"]],"1f528":["🔨",["hammer"]],"1f529":["🔩",["nut_and_bolt"]],"1f52a":["🔪",["hocho"]],"1f52b":["🔫",["gun"]],"1f52c":["🔬",["microscope"]],"1f52d":["🔭",["telescope"]],"1f52e":["🔮",["crystal_ball"]],"1f52f":["🔯",["six_pointed_star"]],"1f530":["🔰",["beginner"]],"1f531":["🔱",["trident"]],"1f532":["🔲",["black_square_button"]],"1f533":["🔳",["white_square_button"]],"1f534":["🔴",["red_circle"]],"1f535":["🔵",["large_blue_circle"]],"1f536":["🔶",["large_orange_diamond"]],"1f537":["🔷",["large_blue_diamond"]],"1f538":["🔸",["small_orange_diamond"]],"1f539":["🔹",["small_blue_diamond"]],"1f53a":["🔺",["small_red_triangle"]],"1f53b":["🔻",["small_red_triangle_down"]],"1f53c":["🔼",["arrow_up_small"]],"1f53d":["🔽",["arrow_down_small"]],"1f550":["🕐",["clock1"]],"1f551":["🕑",["clock2"]],"1f552":["🕒",["clock3"]],"1f553":["🕓",["clock4"]],"1f554":["🕔",["clock5"]],"1f555":["🕕",["clock6"]],"1f556":["🕖",["clock7"]],"1f557":["🕗",["clock8"]],"1f558":["🕘",["clock9"]],"1f559":["🕙",["clock10"]],"1f55a":["🕚",["clock11"]],"1f55b":["🕛",["clock12"]],"1f55c":["🕜",["clock130"]],"1f55d":["🕝",["clock230"]],"1f55e":["🕞",["clock330"]],"1f55f":["🕟",["clock430"]],"1f560":["🕠",["clock530"]],"1f561":["🕡",["clock630"]],"1f562":["🕢",["clock730"]],"1f563":["🕣",["clock830"]],"1f564":["🕤",["clock930"]],"1f565":["🕥",["clock1030"]],"1f566":["🕦",["clock1130"]],"1f567":["🕧",["clock1230"]],"1f5fb":["🗻",["mount_fuji"]],"1f5fc":["🗼",["tokyo_tower"]],"1f5fd":["🗽",["statue_of_liberty"]],"1f5fe":["🗾",["japan"]],"1f5ff":["🗿",["moyai"]],"1f600":["😀",["grinning"]],"1f601":["😁",["grin"]],"1f602":["😂",["joy"]],"1f603":["😃",["smiley"],":)"],"1f604":["😄",["smile"],":)"],"1f605":["😅",["sweat_smile"]],"1f606":["😆",["laughing","satisfied"]],"1f607":["😇",["innocent"]],"1f608":["😈",["smiling_imp"]],"1f609":["😉",["wink"],";)"],"1f60a":["😊",["blush"]],"1f60b":["😋",["yum"]],"1f60c":["😌",["relieved"]],"1f60d":["😍",["heart_eyes"]],"1f60e":["😎",["sunglasses"]],"1f60f":["😏",["smirk"]],"1f610":["😐",["neutral_face"]],"1f611":["😑",["expressionless"]],"1f612":["😒",["unamused"]],"1f613":["😓",["sweat"]],"1f614":["😔",["pensive"]],"1f615":["😕",["confused"]],"1f616":["😖",["confounded"]],"1f617":["😗",["kissing"]],"1f618":["😘",["kissing_heart"]],"1f619":["😙",["kissing_smiling_eyes"]],"1f61a":["😚",["kissing_closed_eyes"]],"1f61b":["😛",["stuck_out_tongue"]],"1f61c":["😜",["stuck_out_tongue_winking_eye"],";p"],"1f61d":["😝",["stuck_out_tongue_closed_eyes"]],"1f61e":["😞",["disappointed"],":("],"1f61f":["😟",["worried"]],"1f620":["😠",["angry"]],"1f621":["😡",["rage"]],"1f622":["😢",["cry"],":'("],"1f623":["😣",["persevere"]],"1f624":["😤",["triumph"]],"1f625":["😥",["disappointed_relieved"]],"1f626":["😦",["frowning"]],"1f627":["😧",["anguished"]],"1f628":["😨",["fearful"]],"1f629":["😩",["weary"]],"1f62a":["😪",["sleepy"]],"1f62b":["😫",["tired_face"]],"1f62c":["😬",["grimacing"]],"1f62d":["😭",["sob"],":'("],"1f62e":["😮",["open_mouth"]],"1f62f":["😯",["hushed"]],"1f630":["😰",["cold_sweat"]],"1f631":["😱",["scream"]],"1f632":["😲",["astonished"]],"1f633":["😳",["flushed"]],"1f634":["😴",["sleeping"]],"1f635":["😵",["dizzy_face"]],"1f636":["😶",["no_mouth"]],"1f637":["😷",["mask"]],"1f638":["😸",["smile_cat"]],"1f639":["😹",["joy_cat"]],"1f63a":["😺",["smiley_cat"]],"1f63b":["😻",["heart_eyes_cat"]],"1f63c":["😼",["smirk_cat"]],"1f63d":["😽",["kissing_cat"]],"1f63e":["😾",["pouting_cat"]],"1f63f":["😿",["crying_cat_face"]],"1f640":["🙀",["scream_cat"]],"1f645":["🙅",["no_good"]],"1f646":["🙆",["ok_woman"]],"1f647":["🙇",["bow"]],"1f648":["🙈",["see_no_evil"]],"1f649":["🙉",["hear_no_evil"]],"1f64a":["🙊",["speak_no_evil"]],"1f64b":["🙋",["raising_hand"]],"1f64c":["🙌",["raised_hands"]],"1f64d":["🙍",["person_frowning"]],"1f64e":["🙎",["person_with_pouting_face"]],"1f64f":["🙏",["pray"]],"1f680":["🚀",["rocket"]],"1f681":["🚁",["helicopter"]],"1f682":["🚂",["steam_locomotive"]],"1f683":["🚃",["railway_car"]],"1f68b":["🚋",["train"]],"1f684":["🚄",["bullettrain_side"]],"1f685":["🚅",["bullettrain_front"]],"1f686":["🚆",["train2"]],"1f687":["🚇",["metro"]],"1f688":["🚈",["light_rail"]],"1f689":["🚉",["station"]],"1f68a":["🚊",["tram"]],"1f68c":["🚌",["bus"]],"1f68d":["🚍",["oncoming_bus"]],"1f68e":["🚎",["trolleybus"]],"1f68f":["🚏",["busstop"]],"1f690":["🚐",["minibus"]],"1f691":["🚑",["ambulance"]],"1f692":["🚒",["fire_engine"]],"1f693":["🚓",["police_car"]],"1f694":["🚔",["oncoming_police_car"]],"1f695":["🚕",["taxi"]],"1f696":["🚖",["oncoming_taxi"]],"1f697":["🚗",["car","red_car"]],"1f698":["🚘",["oncoming_automobile"]],"1f699":["🚙",["blue_car"]],"1f69a":["🚚",["truck"]],"1f69b":["🚛",["articulated_lorry"]],"1f69c":["🚜",["tractor"]],"1f69d":["🚝",["monorail"]],"1f69e":["🚞",["mountain_railway"]],"1f69f":["🚟",["suspension_railway"]],"1f6a0":["🚠",["mountain_cableway"]],"1f6a1":["🚡",["aerial_tramway"]],"1f6a2":["🚢",["ship"]],"1f6a3":["🚣",["rowboat"]],"1f6a4":["🚤",["speedboat"]],"1f6a5":["🚥",["traffic_light"]],"1f6a6":["🚦",["vertical_traffic_light"]],"1f6a7":["🚧",["construction"]],"1f6a8":["🚨",["rotating_light"]],"1f6a9":["🚩",["triangular_flag_on_post"]],"1f6aa":["🚪",["door"]],"1f6ab":["🚫",["no_entry_sign"]],"1f6ac":["🚬",["smoking"]],"1f6ad":["🚭",["no_smoking"]],"1f6ae":["🚮",["put_litter_in_its_place"]],"1f6af":["🚯",["do_not_litter"]],"1f6b0":["🚰",["potable_water"]],"1f6b1":["🚱",["non-potable_water"]],"1f6b2":["🚲",["bike"]],"1f6b3":["🚳",["no_bicycles"]],"1f6b4":["🚴",["bicyclist"]],"1f6b5":["🚵",["mountain_bicyclist"]],"1f6b6":["🚶",["walking"]],"1f6b7":["🚷",["no_pedestrians"]],"1f6b8":["🚸",["children_crossing"]],"1f6b9":["🚹",["mens"]],"1f6ba":["🚺",["womens"]],"1f6bb":["🚻",["restroom"]],"1f6bc":["🚼",["baby_symbol"]],"1f6bd":["🚽",["toilet"]],"1f6be":["🚾",["wc"]],"1f6bf":["🚿",["shower"]],"1f6c0":["🛀",["bath"]],"1f6c1":["🛁",["bathtub"]],"1f6c2":["🛂",["passport_control"]],"1f6c3":["🛃",["customs"]],"1f6c4":["🛄",["baggage_claim"]],"1f6c5":["🛅",["left_luggage"]],"0023":["#⃣",["hash"]],"0030":["0⃣",["zero"]],"0031":["1⃣",["one"]],"0032":["2⃣",["two"]],"0033":["3⃣",["three"]],"0034":["4⃣",["four"]],"0035":["5⃣",["five"]],"0036":["6⃣",["six"]],"0037":["7⃣",["seven"]],"0038":["8⃣",["eight"]],"0039":["9⃣",["nine"]],"1f1e8-1f1f3":["🇨🇳",["cn"]],"1f1e9-1f1ea":["🇩🇪",["de"]],"1f1ea-1f1f8":["🇪🇸",["es"]],"1f1eb-1f1f7":["🇫🇷",["fr"]],"1f1ec-1f1e7":["🇬🇧",["gb","uk"]],"1f1ee-1f1f9":["🇮🇹",["it"]],"1f1ef-1f1f5":["🇯🇵",["jp"]],"1f1f0-1f1f7":["🇰🇷",["kr"]],"1f1f7-1f1fa":["🇷🇺",["ru"]],"1f1fa-1f1f8":["🇺🇸",["us"]]},Config.EmojiCategories=[["1f604","1f603","1f600","1f60a","263a","1f609","1f60d","1f618","1f61a","1f617","1f619","1f61c","1f61d","1f61b","1f633","1f601","1f614","1f60c","1f612","1f61e","1f623","1f622","1f602","1f62d","1f62a","1f625","1f630","1f605","1f613","1f629","1f62b","1f628","1f631","1f620","1f621","1f624","1f616","1f606","1f60b","1f637","1f60e","1f634","1f635","1f632","1f61f","1f626","1f627","1f608","1f47f","1f62e","1f62c","1f610","1f615","1f62f","1f636","1f607","1f60f","1f611","1f472","1f473","1f46e","1f477","1f482","1f476","1f466","1f467","1f468","1f469","1f474","1f475","1f471","1f47c","1f478","1f63a","1f638","1f63b","1f63d","1f63c","1f640","1f63f","1f639","1f63e","1f479","1f47a","1f648","1f649","1f64a","1f480","1f47d","1f4a9","1f525","2728","1f31f","1f4ab","1f4a5","1f4a2","1f4a6","1f4a7","1f4a4","1f4a8","1f442","1f440","1f443","1f445","1f444","1f44d","1f44e","1f44c","1f44a","270a","270c","1f44b","270b","1f450","1f446","1f447","1f449","1f448","1f64c","1f64f","261d","1f44f","1f4aa","1f6b6","1f3c3","1f483","1f46b","1f46a","1f46c","1f46d","1f48f","1f491","1f46f","1f646","1f645","1f481","1f64b","1f486","1f487","1f485","1f470","1f64e","1f64d","1f647","1f3a9","1f451","1f452","1f45f","1f45e","1f461","1f460","1f462","1f455","1f454","1f45a","1f457","1f3bd","1f456","1f458","1f459","1f4bc","1f45c","1f45d","1f45b","1f453","1f380","1f302","1f484","1f49b","1f499","1f49c","1f49a","2764","1f494","1f497","1f493","1f495","1f496","1f49e","1f498","1f48c","1f48b","1f48d","1f48e","1f464","1f465","1f4ac","1f463","1f4ad"],["1f436","1f43a","1f431","1f42d","1f439","1f430","1f438","1f42f","1f428","1f43b","1f437","1f43d","1f42e","1f417","1f435","1f412","1f434","1f411","1f418","1f43c","1f427","1f426","1f424","1f425","1f423","1f414","1f40d","1f422","1f41b","1f41d","1f41c","1f41e","1f40c","1f419","1f41a","1f420","1f41f","1f42c","1f433","1f40b","1f404","1f40f","1f400","1f403","1f405","1f407","1f409","1f40e","1f410","1f413","1f415","1f416","1f401","1f402","1f432","1f421","1f40a","1f42b","1f42a","1f406","1f408","1f429","1f43e","1f490","1f338","1f337","1f340","1f339","1f33b","1f33a","1f341","1f343","1f342","1f33f","1f33e","1f344","1f335","1f334","1f332","1f333","1f330","1f331","1f33c","1f310","1f31e","1f31d","1f31a","1f311","1f312","1f313","1f314","1f315","1f316","1f317","1f318","1f31c","1f31b","1f319","1f30d","1f30e","1f30f","1f30b","1f30c","1f320","2b50","2600","26c5","2601","26a1","2614","2744","26c4","1f300","1f301","1f308","1f30a"],["1f38d","1f49d","1f38e","1f392","1f393","1f38f","1f386","1f387","1f390","1f391","1f383","1f47b","1f385","1f384","1f381","1f38b","1f389","1f38a","1f388","1f38c","1f52e","1f3a5","1f4f7","1f4f9","1f4fc","1f4bf","1f4c0","1f4bd","1f4be","1f4bb","1f4f1","260e","1f4de","1f4df","1f4e0","1f4e1","1f4fa","1f4fb","1f50a","1f509","1f508","1f507","1f514","1f515","1f4e3","1f4e2","23f3","231b","23f0","231a","1f513","1f512","1f50f","1f510","1f511","1f50e","1f4a1","1f526","1f506","1f505","1f50c","1f50b","1f50d","1f6c0","1f6c1","1f6bf","1f6bd","1f527","1f529","1f528","1f6aa","1f6ac","1f4a3","1f52b","1f52a","1f48a","1f489","1f4b0","1f4b4","1f4b5","1f4b7","1f4b6","1f4b3","1f4b8","1f4f2","1f4e7","1f4e5","1f4e4","2709","1f4e9","1f4e8","1f4ef","1f4eb","1f4ea","1f4ec","1f4ed","1f4ee","1f4e6","1f4dd","1f4c4","1f4c3","1f4d1","1f4ca","1f4c8","1f4c9","1f4dc","1f4cb","1f4c5","1f4c6","1f4c7","1f4c1","1f4c2","2702","1f4cc","1f4ce","2712","270f","1f4cf","1f4d0","1f4d5","1f4d7","1f4d8","1f4d9","1f4d3","1f4d4","1f4d2","1f4da","1f4d6","1f516","1f4db","1f52c","1f52d","1f4f0","1f3a8","1f3ac","1f3a4","1f3a7","1f3bc","1f3b5","1f3b6","1f3b9","1f3bb","1f3ba","1f3b7","1f3b8","1f47e","1f3ae","1f0cf","1f3b4","1f004","1f3b2","1f3af","1f3c8","1f3c0","26bd","26be","1f3be","1f3b1","1f3c9","1f3b3","26f3","1f6b5","1f6b4","1f3c1","1f3c7","1f3c6","1f3bf","1f3c2","1f3ca","1f3c4","1f3a3","2615","1f375","1f376","1f37c","1f37a","1f37b","1f378","1f379","1f377","1f374","1f355","1f354","1f35f","1f357","1f356","1f35d","1f35b","1f364","1f371","1f363","1f365","1f359","1f358","1f35a","1f35c","1f372","1f362","1f361","1f373","1f35e","1f369","1f36e","1f366","1f368","1f367","1f382","1f370","1f36a","1f36b","1f36c","1f36d","1f36f","1f34e","1f34f","1f34a","1f34b","1f352","1f347","1f349","1f353","1f351","1f348","1f34c","1f350","1f34d","1f360","1f346","1f345","1f33d"],["1f3e0","1f3e1","1f3eb","1f3e2","1f3e3","1f3e5","1f3e6","1f3ea","1f3e9","1f3e8","1f492","26ea","1f3ec","1f3e4","1f307","1f306","1f3ef","1f3f0","26fa","1f3ed","1f5fc","1f5fe","1f5fb","1f304","1f305","1f303","1f5fd","1f309","1f3a0","1f3a1","26f2","1f3a2","1f6a2","26f5","1f6a4","1f6a3","2693","1f680","2708","1f4ba","1f681","1f682","1f68a","1f689","1f69e","1f686","1f684","1f685","1f688","1f687","1f69d","1f683","1f68b","1f68e","1f68c","1f68d","1f699","1f698","1f697","1f695","1f696","1f69b","1f69a","1f6a8","1f693","1f694","1f692","1f691","1f690","1f6b2","1f6a1","1f69f","1f6a0","1f69c","1f488","1f68f","1f3ab","1f6a6","1f6a5","26a0","1f6a7","1f530","26fd","1f3ee","1f3b0","2668","1f5ff","1f3aa","1f3ad","1f4cd","1f6a9","1f1ef-1f1f5","1f1f0-1f1f7","1f1e9-1f1ea","1f1e8-1f1f3","1f1fa-1f1f8","1f1eb-1f1f7","1f1ea-1f1f8","1f1ee-1f1f9","1f1f7-1f1fa","1f1ec-1f1e7"],["0031","0032","0033","0034","0035","0036","0037","0038","0039","0030","1f51f","1f522","0023","1f523","2b06","2b07","2b05","27a1","1f520","1f521","1f524","2197","2196","2198","2199","2194","2195","1f504","25c0","25b6","1f53c","1f53d","21a9","21aa","2139","23ea","23e9","23eb","23ec","2935","2934","1f197","1f500","1f501","1f502","1f195","1f199","1f192","1f193","1f196","1f4f6","1f3a6","1f201","1f22f","1f233","1f235","1f234","1f232","1f250","1f239","1f23a","1f236","1f21a","1f6bb","1f6b9","1f6ba","1f6bc","1f6be","1f6b0","1f6ae","1f17f","267f","1f6ad","1f237","1f238","1f202","24c2","1f6c2","1f6c4","1f6c5","1f6c3","1f251","3299","3297","1f191","1f198","1f194","1f6ab","1f51e","1f4f5","1f6af","1f6b1","1f6b3","1f6b7","1f6b8","26d4","2733","2747","274e","2705","2734","1f49f","1f19a","1f4f3","1f4f4","1f170","1f171","1f18e","1f17e","1f4a0","27bf","267b","2648","2649","264a","264b","264c","264d","264e","264f","2650","2651","2652","2653","26ce","1f52f","1f3e7","1f4b9","1f4b2","1f4b1","00a9","00ae","2122","274c","203c","2049","2757","2753","2755","2754","2b55","1f51d","1f51a","1f519","1f51b","1f51c","1f503","1f55b","1f567","1f550","1f55c","1f551","1f55d","1f552","1f55e","1f553","1f55f","1f554","1f560","1f555","1f556","1f557","1f558","1f559","1f55a","1f561","1f562","1f563","1f564","1f565","1f566","2716","2795","2796","2797","2660","2665","2663","2666","1f4ae","1f4af","2714","2611","1f518","1f517","27b0","3030","303d","1f531","25fc","25fb","25fe","25fd","25aa","25ab","1f53a","1f532","1f533","26ab","26aa","1f534","1f535","1f53b","2b1c","2b1b","1f536","1f537","1f538","1f539"]],Config.EmojiCategorySpritesheetDimens=[[7,27],[4,29],[7,33],[3,34],[7,34]],Config.CountryCodes=[["AB","country_select_modal_country_ab","+7 840","+7 940","+995 44"],["AF","country_select_modal_country_af","+93"],["AX","country_select_modal_country_ax","+358 18"],["AL","country_select_modal_country_al","+355"],["DZ","country_select_modal_country_dz","+213"],["AS","country_select_modal_country_as","+1 684"],["AD","country_select_modal_country_ad","+376"],["AO","country_select_modal_country_ao","+244"],["AI","country_select_modal_country_ai","+1 264"],["AG","country_select_modal_country_ag","+1 268"],["AR","country_select_modal_country_ar","+54"],["AM","country_select_modal_country_am","+374"],["AW","country_select_modal_country_aw","+297"],["SH","country_select_modal_country_sh_ac","+247"],["AU","country_select_modal_country_au","+61"],["AU","country_select_modal_country_au_et","+672"],["AT","country_select_modal_country_at","+43"],["AZ","country_select_modal_country_az","+994"],["BS","country_select_modal_country_bs","+1 242"],["BH","country_select_modal_country_bh","+973"],["BD","country_select_modal_country_bd","+880"],["BB","country_select_modal_country_bb","+1 246"],["AG","country_select_modal_country_ag_bar","+1 268"],["BY","country_select_modal_country_by","+375"],["BE","country_select_modal_country_be","+32"],["BZ","country_select_modal_country_bz","+501"],["BJ","country_select_modal_country_bj","+229"],["BM","country_select_modal_country_bm","+1 441"],["BT","country_select_modal_country_bt","+975"],["BO","country_select_modal_country_bo","+591"],["BQ","country_select_modal_country_bq","+599 7"],["BA","country_select_modal_country_ba","+387"],["BW","country_select_modal_country_bw","+267"],["BR","country_select_modal_country_br","+55"],["IO","country_select_modal_country_io","+246"],["VG","country_select_modal_country_vg","+1 284"],["BN","country_select_modal_country_bn","+673"],["BG","country_select_modal_country_bg","+359"],["BF","country_select_modal_country_bf","+226"],["MY","country_select_modal_country_mm","+95"],["BI","country_select_modal_country_bi","+257"],["KH","country_select_modal_country_kh","+855"],["CM","country_select_modal_country_cm","+237"],["CA","country_select_modal_country_ca","+1"],["CV","country_select_modal_country_cv","+238"],["KY","country_select_modal_country_ky","+1 345"],["CF","country_select_modal_country_cf","+236"],["TD","country_select_modal_country_td","+235"],["CL","country_select_modal_country_cl","+56"],["CN","country_select_modal_country_cn","+86"],["CX","country_select_modal_country_cx","+61"],["CC","country_select_modal_country_cc","+61"],["CO","country_select_modal_country_co","+57"],["KM","country_select_modal_country_km","+269"],["CG","country_select_modal_country_cg","+242"],["CD","country_select_modal_country_cd","+243"],["CK","country_select_modal_country_ck","+682"],["CR","country_select_modal_country_cr","+506"],["CI","country_select_modal_country_ci","+225"],["HR","country_select_modal_country_hr","+385"],["CU","country_select_modal_country_cu","+53"],["CW","country_select_modal_country_cw","+599 9"],["CY","country_select_modal_country_cy","+357"],["CZ","country_select_modal_country_cz","+420"],["DK","country_select_modal_country_dk","+45"],["DG","country_select_modal_country_dg","+246"],["DJ","country_select_modal_country_dj","+253"],["DM","country_select_modal_country_dm","+1 767"],["DO","country_select_modal_country_do","+1 809","+1 829","+1 849"],["TL","country_select_modal_country_tl","+670"],["EC","country_select_modal_country_ec","+593"],["EG","country_select_modal_country_eg","+20"],["SV","country_select_modal_country_sv","+503"],["GQ","country_select_modal_country_gq","+240"],["ER","country_select_modal_country_er","+291"],["EE","country_select_modal_country_ee","+372"],["ET","country_select_modal_country_et","+251"],["FK","country_select_modal_country_fk","+500"],["FO","country_select_modal_country_fo","+298"],["FJ","country_select_modal_country_fj","+679"],["FI","country_select_modal_country_fi","+358"],["FR","country_select_modal_country_fr","+33"],["GF","country_select_modal_country_gf","+594"],["PF","country_select_modal_country_pf","+689"],["GA","country_select_modal_country_ga","+241"],["GM","country_select_modal_country_gm","+220"],["GE","country_select_modal_country_ge","+995"],["DE","country_select_modal_country_de","+49"],["GH","country_select_modal_country_gh","+233"],["GI","country_select_modal_country_gi","+350"],["GR","country_select_modal_country_gr","+30"],["GL","country_select_modal_country_gl","+299"],["GD","country_select_modal_country_gd","+1 473"],["GP","country_select_modal_country_gp","+590"],["GU","country_select_modal_country_gu","+1 671"],["GT","country_select_modal_country_gt","+502"],["GG","country_select_modal_country_gg","+44"],["GN","country_select_modal_country_gn","+224"],["GW","country_select_modal_country_gw","+245"],["GY","country_select_modal_country_gy","+592"],["HT","country_select_modal_country_ht","+509"],["HN","country_select_modal_country_hn","+504"],["HK","country_select_modal_country_hk","+852"],["HU","country_select_modal_country_hu","+36"],["IS","country_select_modal_country_is","+354"],["IN","country_select_modal_country_in","+91"],["ID","country_select_modal_country_id","+62"],["IR","country_select_modal_country_ir","+98"],["IQ","country_select_modal_country_iq","+964"],["IE","country_select_modal_country_ie","+353"],["IL","country_select_modal_country_il","+972"],["IT","country_select_modal_country_it","+39"],["JM","country_select_modal_country_jm","+1 876"],["SJ","country_select_modal_country_sj","+47 79"],["JP","country_select_modal_country_jp","+81"],["JE","country_select_modal_country_je","+44"],["JO","country_select_modal_country_jo","+962"],["KZ","country_select_modal_country_kz","+7 6","+7 7"],["KE","country_select_modal_country_ke","+254"],["KI","country_select_modal_country_ki","+686"],["KP","country_select_modal_country_kp","+850"],["KR","country_select_modal_country_kr","+82"],["KW","country_select_modal_country_kw","+965"],["KG","country_select_modal_country_kg","+996"],["LA","country_select_modal_country_la","+856"],["LV","country_select_modal_country_lv","+371"],["LB","country_select_modal_country_lb","+961"],["LS","country_select_modal_country_ls","+266"],["LR","country_select_modal_country_lr","+231"],["LY","country_select_modal_country_ly","+218"],["LI","country_select_modal_country_li","+423"],["LT","country_select_modal_country_lt","+370"],["LU","country_select_modal_country_lu","+352"],["MO","country_select_modal_country_mo","+853"],["MK","country_select_modal_country_mk","+389"],["MG","country_select_modal_country_mg","+261"],["MW","country_select_modal_country_mw","+265"],["MY","country_select_modal_country_my","+60"],["MV","country_select_modal_country_mv","+960"],["ML","country_select_modal_country_ml","+223"],["MT","country_select_modal_country_mt","+356"],["MH","country_select_modal_country_mh","+692"],["MQ","country_select_modal_country_mq","+596"],["MR","country_select_modal_country_mr","+222"],["MU","country_select_modal_country_mu","+230"],["YT","country_select_modal_country_yt","+262"],["MX","country_select_modal_country_mx","+52"],["FM","country_select_modal_country_fm","+691"],["MD","country_select_modal_country_md","+373"],["MC","country_select_modal_country_mc","+377"],["MN","country_select_modal_country_mn","+976"],["ME","country_select_modal_country_me","+382"],["MS","country_select_modal_country_ms","+1 664"],["MA","country_select_modal_country_ma","+212"],["MZ","country_select_modal_country_mz","+258"],["NA","country_select_modal_country_na","+264"],["NR","country_select_modal_country_nr","+674"],["NP","country_select_modal_country_np","+977"],["NL","country_select_modal_country_nl","+31"],["NC","country_select_modal_country_nc","+687"],["NZ","country_select_modal_country_nz","+64"],["NI","country_select_modal_country_ni","+505"],["NE","country_select_modal_country_ne","+227"],["NG","country_select_modal_country_ng","+234"],["NU","country_select_modal_country_nu","+683"],["NF","country_select_modal_country_nf","+672"],["MP","country_select_modal_country_mp","+1 670"],["NO","country_select_modal_country_no","+47"],["OM","country_select_modal_country_om","+968"],["PK","country_select_modal_country_pk","+92"],["PW","country_select_modal_country_pw","+680"],["PS","country_select_modal_country_ps","+970"],["PA","country_select_modal_country_pa","+507"],["PG","country_select_modal_country_pg","+675"],["PY","country_select_modal_country_py","+595"],["PE","country_select_modal_country_pe","+51"],["PH","country_select_modal_country_ph","+63"],["PN","country_select_modal_country_pn","+64"],["PL","country_select_modal_country_pl","+48"],["PT","country_select_modal_country_pt","+351"],["PR","country_select_modal_country_pr","+1 787","+1 939"],["QA","country_select_modal_country_qa","+974"],["RE","country_select_modal_country_re","+262"],["RO","country_select_modal_country_ro","+40"],["RU","country_select_modal_country_ru","+7"],["RW","country_select_modal_country_rw","+250"],["BL","country_select_modal_country_bl","+590"],["SH","country_select_modal_country_sh","+290"],["KN","country_select_modal_country_kn","+1 869"],["LC","country_select_modal_country_lc","+1 758"],["MF","country_select_modal_country_mf","+590"],["PM","country_select_modal_country_pm","+508"],["VC","country_select_modal_country_vc","+1 784"],["WS","country_select_modal_country_ws","+685"],["SM","country_select_modal_country_sm","+378"],["ST","country_select_modal_country_st","+239"],["SA","country_select_modal_country_sa","+966"],["SN","country_select_modal_country_sn","+221"],["RS","country_select_modal_country_rs","+381"],["SC","country_select_modal_country_sc","+248"],["SL","country_select_modal_country_sl","+232"],["SG","country_select_modal_country_sg","+65"],["BQ","country_select_modal_country_nl_bq3","+599 3"],["SX","country_select_modal_country_sx","+1 721"],["SK","country_select_modal_country_sk","+421"],["SI","country_select_modal_country_si","+386"],["SB","country_select_modal_country_sb","+677"],["SO","country_select_modal_country_so","+252"],["ZA","country_select_modal_country_za","+27"],["GS","country_select_modal_country_gs","+500"],[!1,"country_select_modal_country_ge_so","+995 34"],["SS","country_select_modal_country_ss","+211"],["ES","country_select_modal_country_es","+34"],["LK","country_select_modal_country_lk","+94"],["SD","country_select_modal_country_sd","+249"],["SR","country_select_modal_country_sr","+597"],["SJ","country_select_modal_country_sj_no","+47 79"],["SZ","country_select_modal_country_sz","+268"],["SE","country_select_modal_country_se","+46"],["CH","country_select_modal_country_ch","+41"],["SY","country_select_modal_country_sy","+963"],["TW","country_select_modal_country_tw","+886"],["TJ","country_select_modal_country_tj","+992"],["TZ","country_select_modal_country_tz","+255"],["TH","country_select_modal_country_th","+66"],["TG","country_select_modal_country_tg","+228"],["TK","country_select_modal_country_tk","+690"],["TO","country_select_modal_country_to","+676"],["TT","country_select_modal_country_tt","+1 868"],["TN","country_select_modal_country_tn","+216"],["TR","country_select_modal_country_tr","+90"],["TM","country_select_modal_country_tm","+993"],["TC","country_select_modal_country_tc","+1 649"],["TV","country_select_modal_country_tv","+688"],["UG","country_select_modal_country_ug","+256"],["UA","country_select_modal_country_ua","+380"],["AE","country_select_modal_country_ae","+971"],["UK","country_select_modal_country_uk","+44"],["US","country_select_modal_country_us","+1"],["UY","country_select_modal_country_uy","+598"],["VI","country_select_modal_country_vi","+1 340"],["UZ","country_select_modal_country_uz","+998"],["VU","country_select_modal_country_vu","+678"],["VE","country_select_modal_country_ve","+58"],["VA","country_select_modal_country_va","+39 06 698","+379"],["VN","country_select_modal_country_vn","+84"],["WF","country_select_modal_country_wf","+681"],["YE","country_select_modal_country_ye","+967"],["ZM","country_select_modal_country_zm","+260"],[!1,"country_select_modal_country_tz_uk","+255"],["ZW","country_select_modal_country_zw","+263"]],Config.LangCountries={es:"ES",ru:"RU",en:"US",de:"DE",it:"IT",nl:"NL",fr:"FR",ca:"ES","es-419":"MX",ar:"SA",he:"IL",tr:"TR",id:"ID",pl:"PL"},function(e){function t(e){s=e |
|
|
}function n(){l=!0}function i(){return l?(l=!1,""):s}function a(){var e,t,n,a=Array.prototype.slice.call(arguments),o=a.pop(),r=[],s=1==a.length,l=!0,p=i();for(t=0;t<a.length;t++)if(n=a[t]=p+a[t],"xt_"!=n.substr(0,3)&&void 0!==c[n])r.push(c[n]);else if(u){try{e=localStorage.getItem(n)}catch(m){u=!1}try{e=void 0===e||null===e?!1:JSON.parse(e)}catch(m){e=!1}r.push(c[n]=e)}else d?l=!1:r.push(c[n]=!1);return l?o(s?r[0]:r):void chrome.storage.local.get(a,function(e){var i;for(r=[],t=0;t<a.length;t++)n=a[t],i=e[n],i=void 0===i||null===i?!1:JSON.parse(i),r.push(c[n]=i);o(s?r[0]:r)})}function o(e,t){var n,a,o={},r=i();for(n in e)if(e.hasOwnProperty(n))if(a=e[n],n=r+n,c[n]=a,a=JSON.stringify(a),u)try{localStorage.setItem(n,a)}catch(s){u=!1}else o[n]=a;return u||!d?void(t&&t()):void chrome.storage.local.set(o,t)}function r(){var e,t,n,a=Array.prototype.slice.call(arguments),o=i();for("function"==typeof a[a.length-1]&&(n=a.pop()),e=0;e<a.length;e++)if(t=a[e]=o+a[e],delete c[t],u)try{localStorage.removeItem(t)}catch(r){u=!1}d?chrome.storage.local.remove(a,n):n&&n()}var s="",l=!1,c={},d=!!(e.chrome&&chrome.storage&&chrome.storage.local),u=!d&&!!e.localStorage;e.ConfigStorage={prefix:t,noPrefix:n,get:a,set:o,remove:r}}(this),function(){try{window==window.top||window.chrome&&chrome.app&&chrome.app.window?document.documentElement.style.display="block":top.location=self.location}catch(e){console.error("CJ protection",e)}if(window.safeConfirm=function(e,t){"string"==typeof e&&(e={message:e});var n=!1;try{n=confirm(e.message)}catch(i){n=!0}setTimeout(function(){t(n)},10)},window.applicationCache&&!Config.Modes.packed&&window.addEventListener){var t=window.applicationCache,n=!1,i=!1,a=function(e){clearTimeout(i),i=setTimeout(function(){try{t.update()}catch(e){console.log("appCache.update: "+e)}},e||3e5)},o=function(){t.addEventListener("updateready",function(){t.status==t.UPDATEREADY&&(n||(safeConfirm({type:"WEBOGRAM_UPDATED_RELOAD",message:"A new version of Webogram is downloaded. Launch it?"},function(e){e?window.location.reload():n=!0}),a()))},!1),t.addEventListener("noupdate",function(){a()},!1),t.addEventListener("error",function(){a()},!1)};a(3e3),window.addEventListener("load",o)}}(),function(){var e=[Config.Navigator.osX?"osx":"non_osx",Config.Navigator.retina?"is_2x":"is_1x"];Config.Modes.ios_standalone&&e.push("ios_standalone"),$(document.body).addClass(e.join(" ")),ConfigStorage.get("current_layout","i18n_locale",function(e){var t=e[0],n=e[1],i="en-us",a={dom:!1,i18n_ng:!1,i18n_messages:!1,i18n_fallback:!1},o=function(){var e,t=!0;for(e in a)if(a.hasOwnProperty(e)&&a[e]===!1){t=!1;break}t&&(a.boot=!1,angular.bootstrap(document,["myApp"]))};switch(t){case"mobile":Config.Mobile=!0;break;case"desktop":Config.Mobile=!1;break;default:Config.Mobile=Config.Navigator.mobile||$(window).width()<480}$("head").append('<link rel="stylesheet" href="css/'+(Config.Mobile?"mobile.css":"desktop.css")+'" />'),n||(n=(navigator.language||"").toLowerCase(),n=Config.I18n.aliases[n]||n);for(var r=0;r<Config.I18n.supported.length;r++)if(Config.I18n.supported[r]==n){Config.I18n.locale=n;break}a.i18n_ng=Config.I18n.locale==i,$.getJSON("js/locales/"+Config.I18n.locale+".json").success(function(e){Config.I18n.messages=e,a.i18n_messages=!0,Config.I18n.locale==i&&(a.i18n_fallback=!0),o()}),Config.I18n.locale!=i&&$.getJSON("js/locales/"+i+".json").success(function(e){Config.I18n.fallback_messages=e,a.i18n_fallback=!0,o()}),$(document).ready(function(){a.dom=!0,a.i18n_ng?o():$("<script>").appendTo("body").on("load",function(){a.i18n_ng=!0,o()}).attr("src","vendor/angular/i18n/angular-locale_"+Config.I18n.locale+".js")})})}(),function(e,t,n){"use strict";var i,a,o,r,s,l,c,d,u,p,m,h,f,g,_,y,v,b,w,$,k,C,S,M,x,A,T,E,I,D,P;S={paneClass:"nano-pane",sliderClass:"nano-slider",contentClass:"nano-content",iOSNativeScrolling:!1,preventPageScrolling:!1,disableResize:!1,alwaysVisible:!1,flashDelay:1500,sliderMinHeight:20,sliderMaxHeight:null,documentContext:null,windowContext:null},b="scrollbar",v="scroll",u="mousedown",p="mouseenter",m="mousemove",f="mousewheel",h="mouseup",y="resize",s="drag",l="enter",$="up",_="panedown",o="DOMMouseScroll",r="down",k="wheel",c="keydown",d="keyup",w="touchmove",i="Microsoft Internet Explorer"===t.navigator.appName&&/msie 7./i.test(t.navigator.appVersion)&&t.ActiveXObject,a=null,T=t.requestAnimationFrame,C=t.cancelAnimationFrame,I=n.createElement("div").style,P=function(){var e,t,n,i,a,o;for(i=["t","webkitT","MozT","msT","OT"],e=a=0,o=i.length;o>a;e=++a)if(n=i[e],t=i[e]+"ransform",t in I)return i[e].substr(0,i[e].length-1);return!1}(),D=function(e){return P===!1?!1:""===P?e:P+e.charAt(0).toUpperCase()+e.substr(1)},E=D("transform"),x=E!==!1,M=function(){var e,t,i;return e=n.createElement("div"),t=e.style,t.position="absolute",t.width="100px",t.height="100px",t.overflow=v,t.top="-9999px",n.body.appendChild(e),i=e.offsetWidth-e.clientWidth,n.body.removeChild(e),i},A=function(){var e,n,i;return n=t.navigator.userAgent,(e=/(?=.+Mac OS X)(?=.+Firefox)/.test(n))?(i=/Firefox\/\d{2}\./.exec(n),i&&(i=i[0].replace(/\D+/g,"")),e&&+i>23):!1},g=function(){function c(i,o){this.el=i,this.options=o,a||(a=M()),this.$el=e(this.el),this.doc=e(this.options.documentContext||n),this.win=e(this.options.windowContext||t),this.body=this.doc.find("body"),this.$content=this.$el.children("."+o.contentClass),this.$content.attr("tabindex",this.options.tabIndex||0),this.content=this.$content[0],this.previousPosition=0,this.options.iOSNativeScrolling&&(null!=this.el.style.WebkitOverflowScrolling||navigator.userAgent.match(/mobi.+Gecko/i))?this.nativeScrolling():this.generate(),this.createEvents(),this.addEvents(),this.reset()}return c.prototype.preventScrolling=function(e,t){if(this.isActive)if(e.type===o)(t===r&&e.originalEvent.detail>0||t===$&&e.originalEvent.detail<0)&&e.preventDefault();else if(e.type===f){if(!e.originalEvent||!e.originalEvent.wheelDelta)return;(t===r&&e.originalEvent.wheelDelta<0||t===$&&e.originalEvent.wheelDelta>0)&&e.preventDefault()}},c.prototype.nativeScrolling=function(){this.$content.css({WebkitOverflowScrolling:"touch"}),this.iOSNativeScrolling=!0,this.isActive=!0},c.prototype.updateScrollValues=function(){var e,t;e=this.content,this.maxScrollTop=e.scrollHeight-e.clientHeight,this.prevScrollTop=this.contentScrollTop||0,this.contentScrollTop=e.scrollTop,t=this.contentScrollTop>this.previousPosition?"down":this.contentScrollTop<this.previousPosition?"up":"same",this.previousPosition=this.contentScrollTop,"same"!==t&&this.$el.trigger("update",{position:this.contentScrollTop,maximum:this.maxScrollTop,direction:t}),this.iOSNativeScrolling||(this.maxSliderTop=this.paneHeight-this.sliderHeight,this.sliderTop=0===this.maxScrollTop?0:this.contentScrollTop*this.maxSliderTop/this.maxScrollTop)},c.prototype.setOnScrollStyles=function(){var e;x?(e={},e[E]="translate(0, "+this.sliderTop+"px)"):e={top:this.sliderTop},T?(C&&this.scrollRAF&&C(this.scrollRAF),this.scrollRAF=T(function(t){return function(){return t.scrollRAF=null,t.slider.css(e)}}(this))):this.slider.css(e)},c.prototype.createEvents=function(){this.events={down:function(e){return function(t){return e.isBeingDragged=!0,e.offsetY=t.pageY-e.slider.offset().top,e.slider.is(t.target)||(e.offsetY=0),e.pane.addClass("active"),e.doc.bind(m,e.events[s]).bind(h,e.events[$]),e.body.bind(p,e.events[l]),!1}}(this),drag:function(e){return function(t){return e.sliderY=t.pageY-e.$el.offset().top-e.paneTop-(e.offsetY||.5*e.sliderHeight),e.scroll(),e.contentScrollTop>=e.maxScrollTop&&e.prevScrollTop!==e.maxScrollTop?e.$el.trigger("scrollend"):0===e.contentScrollTop&&0!==e.prevScrollTop&&e.$el.trigger("scrolltop"),!1}}(this),up:function(e){return function(){return e.isBeingDragged=!1,e.pane.removeClass("active"),e.doc.unbind(m,e.events[s]).unbind(h,e.events[$]),e.body.unbind(p,e.events[l]),!1}}(this),resize:function(e){return function(){e.reset()}}(this),panedown:function(e){return function(t){return e.sliderY=(t.offsetY||t.originalEvent.layerY)-.5*e.sliderHeight,e.scroll(),e.events.down(t),!1}}(this),scroll:function(e){return function(t){e.updateScrollValues(),e.isBeingDragged||(e.iOSNativeScrolling||(e.sliderY=e.sliderTop,e.setOnScrollStyles()),null!=t&&(e.contentScrollTop>=e.maxScrollTop?(e.options.preventPageScrolling&&e.preventScrolling(t,r),e.prevScrollTop!==e.maxScrollTop&&e.$el.trigger("scrollend")):0===e.contentScrollTop&&(e.options.preventPageScrolling&&e.preventScrolling(t,$),0!==e.prevScrollTop&&e.$el.trigger("scrolltop"))))}}(this),wheel:function(e){return function(t){var n;if(null!=t)return n=t.delta||t.wheelDelta||t.originalEvent&&t.originalEvent.wheelDelta||-t.detail||t.originalEvent&&-t.originalEvent.detail,n&&(e.sliderY+=-n/3),e.scroll(),!1}}(this),enter:function(e){return function(t){var n;if(e.isBeingDragged)return 1!==(t.buttons||t.which)?(n=e.events)[$].apply(n,arguments):void 0}}(this)}},c.prototype.addEvents=function(){var e;this.removeEvents(),e=this.events,this.options.disableResize||this.win.bind(y,e[y]),this.iOSNativeScrolling||(this.slider.bind(u,e[r]),this.pane.bind(u,e[_]).bind(""+f+" "+o,e[k])),this.$content.bind(""+v+" "+f+" "+o+" "+w,e[v])},c.prototype.removeEvents=function(){var e;e=this.events,this.win.unbind(y,e[y]),this.iOSNativeScrolling||(this.slider.unbind(),this.pane.unbind()),this.$content.unbind(""+v+" "+f+" "+o+" "+w,e[v])},c.prototype.generate=function(){var e,n,i,o,r,s,l;return o=this.options,s=o.paneClass,l=o.sliderClass,e=o.contentClass,(r=this.$el.children("."+s)).length||r.children("."+l).length||this.$el.append('<div class="'+s+'"><div class="'+l+'" /></div>'),this.pane=this.$el.children("."+s),this.slider=this.pane.find("."+l),0===a&&A()?(i=t.getComputedStyle(this.content,null).getPropertyValue("padding-right").replace(/[^0-9.]+/g,""),n={right:-14,paddingRight:+i+14}):a&&(n={right:-a},this.$el.addClass("has-scrollbar")),null!=n&&this.$content.css(n),this},c.prototype.restore=function(){this.stopped=!1,this.iOSNativeScrolling||this.pane.show(),this.addEvents()},c.prototype.reset=function(){var e,t,n,o,r,s,l,c,d,u,p,m;return this.iOSNativeScrolling?void(this.contentHeight=this.content.scrollHeight):(this.$el.find("."+this.options.paneClass).length||this.generate().stop(),this.stopped&&this.restore(),e=this.content,o=e.style,r=o.overflowY,i&&this.$content.css({height:this.$content.height()}),t=e.scrollHeight+a,u=parseInt(this.$el.css("max-height"),10),u>0&&(this.$el.height(""),this.$el.height(e.scrollHeight>u?u:e.scrollHeight)),l=this.pane.outerHeight(!1),d=parseInt(this.pane.css("top"),10),s=parseInt(this.pane.css("bottom"),10),c=l+d+s,m=Math.round(c/t*c),m<this.options.sliderMinHeight?m=this.options.sliderMinHeight:null!=this.options.sliderMaxHeight&&m>this.options.sliderMaxHeight&&(m=this.options.sliderMaxHeight),r===v&&o.overflowX!==v&&(m+=a),this.maxSliderTop=c-m,this.contentHeight=t,this.paneHeight=l,this.paneOuterHeight=c,this.sliderHeight=m,this.paneTop=d,this.slider.height(m),this.events.scroll(),this.pane.show(),this.isActive=!0,e.scrollHeight===e.clientHeight||this.pane.outerHeight(!0)>=e.scrollHeight&&r!==v?(this.pane.hide(),this.isActive=!1):this.el.clientHeight===e.scrollHeight&&r===v?this.slider.hide():this.slider.show(),this.pane.css({opacity:this.options.alwaysVisible?1:"",visibility:this.options.alwaysVisible?"visible":""}),n=this.$content.css("position"),("static"===n||"relative"===n)&&(p=parseInt(this.$content.css("right"),10),p&&this.$content.css({right:"",marginRight:p})),this)},c.prototype.scroll=function(){return this.isActive?(this.sliderY=Math.max(0,this.sliderY),this.sliderY=Math.min(this.maxSliderTop,this.sliderY),this.$content.scrollTop(this.maxScrollTop*this.sliderY/this.maxSliderTop),this.iOSNativeScrolling||(this.updateScrollValues(),this.setOnScrollStyles()),this):void 0},c.prototype.scrollBottom=function(e){return this.isActive?(this.$content.scrollTop(this.contentHeight-this.$content.height()-e).trigger(f),this.stop().restore(),this):void 0},c.prototype.scrollTop=function(e){return this.isActive?(this.$content.scrollTop(+e).trigger(f),this.stop().restore(),this):void 0},c.prototype.scrollTo=function(e){return this.isActive?(this.scrollTop(this.$el.find(e).get(0).offsetTop),this):void 0},c.prototype.stop=function(){return C&&this.scrollRAF&&(C(this.scrollRAF),this.scrollRAF=null),this.stopped=!0,this.removeEvents(),this.iOSNativeScrolling||this.pane.hide(),this},c.prototype.destroy=function(){return this.stopped||this.stop(),!this.iOSNativeScrolling&&this.pane.length&&this.pane.remove(),i&&this.$content.height(""),this.$content.removeAttr("tabindex"),this.$el.hasClass("has-scrollbar")&&(this.$el.removeClass("has-scrollbar"),this.$content.css({right:""})),this},c.prototype.flash=function(){return!this.iOSNativeScrolling&&this.isActive?(this.reset(),this.pane.addClass("flashed"),setTimeout(function(e){return function(){e.pane.removeClass("flashed")}}(this),this.options.flashDelay),this):void 0},c}(),e.fn.nanoScroller=function(t){return this.each(function(){var n,i;if((i=this.nanoscroller)||(n=e.extend({},S,t),this.nanoscroller=i=new g(this,n)),t&&"object"==typeof t){if(e.extend(i.options,t),null!=t.scrollBottom)return i.scrollBottom(t.scrollBottom);if(null!=t.scrollTop)return i.scrollTop(t.scrollTop);if(t.scrollTo)return i.scrollTo(t.scrollTo);if("bottom"===t.scroll)return i.scrollBottom(0);if("top"===t.scroll)return i.scrollTop(0);if(t.scroll&&t.scroll instanceof e)return i.scrollTo(t.scroll);if(t.stop)return i.stop();if(t.destroy)return i.destroy();if(t.flash)return i.flash()}return i.reset()})},e.fn.nanoScroller.Constructor=g}(jQuery,window,document),function(e,t,n){var i=1,a=3,o=["p","div","pre","form"],r=27,s=9;e.emojiarea={path:"",spritesheetPath:"",spritesheetDimens:[],iconSize:20,icons:{},defaults:{button:null,buttonLabel:"Emojis",buttonPosition:"after"}};var l=":joy:,:kissing_heart:,:heart:,:heart_eyes:,:blush:,:grin:,:+1:,:relaxed:,:pensive:,:smile:,:sob:,:kiss:,:unamused:,:flushed:,:stuck_out_tongue_winking_eye:,:see_no_evil:,:wink:,:smiley:,:cry:,:stuck_out_tongue_closed_eyes:,:scream:,:rage:,:smirk:,:disappointed:,:sweat_smile:,:kissing_closed_eyes:,:speak_no_evil:,:relieved:,:grinning:,:yum:,:laughing:,:ok_hand:,:neutral_face:,:confused:".split(",");e.fn.emojiarea=function(t){return t=e.extend({},e.emojiarea.defaults,t),this.each(function(){var i=e(this);"contentEditable"in n.body&&t.wysiwyg!==!1?new p(i,t):new u(i,t)})};var c={};c.restoreSelection=function(){return t.getSelection?function(e){var n=t.getSelection();n.removeAllRanges();for(var i=0,a=e.length;a>i;++i)n.addRange(e[i])}:n.selection&&n.selection.createRange?function(e){e&&e.select()}:void 0}(),c.saveSelection=function(){return t.getSelection?function(){var e=t.getSelection(),n=[];if(e.rangeCount)for(var i=0,a=e.rangeCount;a>i;++i)n.push(e.getRangeAt(i));return n}:n.selection&&n.selection.createRange?function(){var e=n.selection;return"none"!==e.type.toLowerCase()?e.createRange():null}:void 0}(),c.replaceSelection=function(){return t.getSelection?function(e){var i,a=t.getSelection(),o="string"==typeof e?n.createTextNode(e):e;a.getRangeAt&&a.rangeCount&&(i=a.getRangeAt(0),i.deleteContents(),i.insertNode(n.createTextNode(" ")),i.insertNode(o),i.setStart(o,0),t.setTimeout(function(){i=n.createRange(),i.setStartAfter(o),i.collapse(!0),a.removeAllRanges(),a.addRange(i)},0))}:n.selection&&n.selection.createRange?function(e){var t=n.selection.createRange();"string"==typeof e?t.text=e:t.pasteHTML(e.outerHTML)}:void 0}(),c.insertAtCursor=function(e,t){e=" "+e;var i,a,o,r=t.value;"undefined"!=typeof t.selectionStart&&"undefined"!=typeof t.selectionEnd?(a=t.selectionStart,i=t.selectionEnd,t.value=r.substring(0,a)+e+r.substring(t.selectionEnd),t.selectionStart=t.selectionEnd=a+e.length):"undefined"!=typeof n.selection&&"undefined"!=typeof n.selection.createRange&&(t.focus(),o=n.selection.createRange(),o.text=e,o.select())},c.extend=function(e,t){if("undefined"!=typeof e&&e||(e={}),"object"==typeof t)for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},c.escapeRegex=function(e){return(e+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")},c.htmlEntities=function(e){return String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},c.emojiInserted=function(e){ConfigStorage.get("emojis_recent",function(t){t=t||l||[];var n=t.indexOf(e);return n?(-1!=n&&t.splice(n,1),t.unshift(e),t.length>42&&(t=t.slice(42)),void ConfigStorage.set({emojis_recent:t})):!1})};var d=function(){};d.prototype.setup=function(){var e=this;this.$editor.on("focus",function(){e.hasFocus=!0}),this.$editor.on("blur",function(){e.hasFocus=!1}),this.setupButton()},d.prototype.setupButton=function(){var t,n=this;this.options.button?t=e(this.options.button):this.options.button!==!1?(t=e('<a href="javascript:void(0)">'),t.html(this.options.buttonLabel),t.addClass("emoji-button"),t.attr({title:this.options.buttonLabel}),this.$editor[this.options.buttonPosition](t)):t=e(""),t.on("click",function(e){m.show(n),e.stopPropagation()}),this.$button=t},d.createIcon=function(t,n){var i=t[0],a=t[1],o=t[2],r=t[3],s=e.emojiarea.spritesheetPath,l=n&&Config.Mobile?26:e.emojiarea.iconSize,d=-(l*o),u=-(l*a),p=e.emojiarea.spritesheetDimens[i][1]*l,m=e.emojiarea.spritesheetDimens[i][0]*l,h="display:inline-block;";return h+="width:"+l+"px;",h+="height:"+l+"px;",h+="background:url('"+s.replace("!",i)+"') "+d+"px "+u+"px no-repeat;",h+="background-size:"+p+"px "+m+"px;",'<img src="img/blank.gif" class="img" style="'+h+'" alt="'+c.htmlEntities(r)+'">'};var u=function(e,t){this.options=t,this.$textarea=e,this.$editor=e,this.setup()};u.prototype.insert=function(t){e.emojiarea.icons.hasOwnProperty(t)&&(c.insertAtCursor(t,this.$textarea[0]),c.emojiInserted(t,this.menu),this.$textarea.trigger("change"))},u.prototype.val=function(){return this.$textarea.val()},c.extend(u.prototype,d.prototype);var p=function(t,i){var a=this;this.options=i||{},this.$textarea=t,this.$editor=e("<div>").addClass("emoji-wysiwyg-editor"),this.$editor.text(t.val()),this.$editor.attr({contenteditable:"true"});var o="blur change";this.options.norealTime||(o+=" keyup"),this.$editor.on(o,function(e){return a.onChange.apply(a,[e])}),this.$editor.on("paste",function(e){return a.onPaste.apply(a,[e])}),this.$editor.on("mousedown focus",function(){n.execCommand("enableObjectResizing",!1,!1)}),this.$editor.on("blur",function(){n.execCommand("enableObjectResizing",!0,!0)});var r=this.$editor.text(),s=e.emojiarea.icons;for(var l in s)s.hasOwnProperty(l)&&(r=r.replace(new RegExp(c.escapeRegex(l),"g"),d.createIcon(s[l])));this.$editor.html(r),t.hide().after(this.$editor),this.setup(),e(n.body).on("mousedown",function(){a.hasFocus&&(a.selection=c.saveSelection())})};p.prototype.onPaste=function(e){var t,i=(e.originalEvent||e).clipboardData,a=i&&i.items||[];for(t=0;t<a.length;t++)if("file"==a[t].kind)return e.preventDefault(),!0;var o=(e.originalEvent||e).clipboardData.getData("text/plain"),r=this;return setTimeout(function(){r.onChange()},0),o.length?(n.execCommand("insertText",!1,o),cancelEvent(e)):!0},p.prototype.onChange=function(){this.$textarea.val(this.val()).trigger("change")},p.prototype.insert=function(t){var n=e(d.createIcon(e.emojiarea.icons[t]));n[0].attachEvent&&n[0].attachEvent("onresizestart",function(e){e.returnValue=!1},!1),this.$editor.trigger("focus"),this.selection&&c.restoreSelection(this.selection);try{c.replaceSelection(n[0])}catch(i){}var a=this;setTimeout(function(){a.selection=c.saveSelection()},100),c.emojiInserted(t,this.menu),this.onChange()},p.prototype.val=function(){for(var e=[],t=[],n=function(){e.push(t.join("")),t=[]},r=function(e){if(e.nodeType===a)t.push(e.nodeValue);else if(e.nodeType===i){var s=e.tagName.toLowerCase(),l=-1!==o.indexOf(s);if(l&&t.length&&n(),"img"===s){var c=e.getAttribute("alt")||"";return void(c&&t.push(c))}"br"===s&&n();for(var d=e.childNodes,u=0;u<d.length;u++)r(d[u]);l&&t.length&&n()}},s=this.$editor[0].childNodes,l=0;l<s.length;l++)r(s[l]);return t.length&&n(),e.join("\n")},c.extend(p.prototype,d.prototype);var m=function(){var i=this,a=e(n.body),o=e(t);this.visible=!1,this.emojiarea=null,this.$menu=e("<div>"),this.$menu.addClass("emoji-menu"),this.$menu.hide(),this.$itemsTailWrap=e('<div class="emoji-items-wrap1"></div>').appendTo(this.$menu),this.$categoryTabs=e('<table class="emoji-menu-tabs"><tr><td><a class="emoji-menu-tab icon-recent" ></a></td><td><a class="emoji-menu-tab icon-smile" ></a></td><td><a class="emoji-menu-tab icon-flower"></a></td><td><a class="emoji-menu-tab icon-bell"></a></td><td><a class="emoji-menu-tab icon-car"></a></td><td><a class="emoji-menu-tab icon-grid"></a></td></tr></table>').appendTo(this.$itemsTailWrap),this.$itemsWrap=e('<div class="emoji-items-wrap nano mobile_scrollable_wrap"></div>').appendTo(this.$itemsTailWrap),this.$items=e('<div class="emoji-items nano-content">').appendTo(this.$itemsWrap),a.append(this.$menu),Config.Mobile||this.$itemsWrap.nanoScroller({preventPageScrolling:!0,tabIndex:-1}),a.on("keydown",function(e){(e.keyCode===r||e.keyCode===s)&&i.hide()}),a.on("message_send",function(){i.hide()}),a.on("mouseup",function(e){e=e.originalEvent||e;for(var n=e.originalTarget||e.target||t;n&&n!=t;)if(n=n.parentNode,n==i.$menu[0]||i.emojiarea&&n==i.emojiarea.$button[0])return;i.hide()}),o.on("resize",function(){i.visible&&i.reposition()}),this.$menu.on("mouseup","a",function(e){return e.stopPropagation(),!1}),this.$menu.on("click","a",function(n){if(e(this).hasClass("emoji-menu-tab"))return i.getTabIndex(this)!==i.currentCategory&&i.selectCategory(i.getTabIndex(this)),!1;var a=e(".label",e(this)).text();return t.setTimeout(function(){i.onItemSelected(a),(n.ctrlKey||n.metaKey)&&i.hide()},0),n.stopPropagation(),!1}),this.selectCategory(0)};m.prototype.getTabIndex=function(e){return this.$categoryTabs.find(".emoji-menu-tab").index(e)},m.prototype.selectCategory=function(e){this.$categoryTabs.find(".emoji-menu-tab").each(function(t){t===e?this.className+="-selected":this.className=this.className.replace("-selected","")}),this.currentCategory=e,this.load(e),Config.Mobile||this.$itemsWrap.nanoScroller({scroll:"top"})},m.prototype.onItemSelected=function(e){this.emojiarea.insert(e)},m.prototype.load=function(t){var n=[],i=e.emojiarea.icons,a=e.emojiarea.path,o=this;a.length&&"/"!==a.charAt(a.length-1)&&(a+="/");var r=function(){o.$items.html(n.join("")),Config.Mobile||setTimeout(function(){o.$itemsWrap.nanoScroller()},100)};if(t>0){for(var s in i)i.hasOwnProperty(s)&&i[s][0]===t-1&&n.push('<a href="javascript:void(0)" title="'+c.htmlEntities(s)+'">'+d.createIcon(i[s],!0)+'<span class="label">'+c.htmlEntities(s)+"</span></a>");r()}else ConfigStorage.get("emojis_recent",function(e){e=e||l||[];var t,a;for(a=0;a<e.length;a++)t=e[a],i[t]&&n.push('<a href="javascript:void(0)" title="'+c.htmlEntities(t)+'">'+d.createIcon(i[t],!0)+'<span class="label">'+c.htmlEntities(t)+"</span></a>");r()})},m.prototype.reposition=function(){var e=this.emojiarea.$button,t=e.offset();t.top+=e.outerHeight(),t.left+=Math.round(e.outerWidth()/2),this.$menu.css({top:t.top,left:t.left})},m.prototype.hide=function(){this.emojiarea&&(this.emojiarea.menu=null,this.emojiarea.$button.removeClass("on"),this.emojiarea=null),this.visible=!1,this.$menu.hide()},m.prototype.show=function(e){return this.emojiarea&&this.emojiarea===e?this.hide():(e.$button.addClass("on"),this.emojiarea=e,this.emojiarea.menu=this,this.reposition(),this.$menu.show(),this.currentCategory||this.load(0),void(this.visible=!0))},m.show=function(){var e=null;return function(t){e=e||new m,e.show(t)}}()}(jQuery,window,document),function(e,t,n){"use strict";function i(e,t){return t=t||Error,function(){var n,i,a=arguments[0],o="["+(e?e+":":"")+a+"] ",r=arguments[1],s=arguments,l=function(e){return"function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?JSON.stringify(e):e};for(n=o+r.replace(/\{\d+\}/g,function(e){var t,n=+e.slice(1,-1);return n+2<s.length?(t=s[n+2],"function"==typeof t?t.toString().replace(/ ?\{[\s\S]*$/,""):"undefined"==typeof t?"undefined":"string"!=typeof t?H(t):t):e}),n=n+"\nhttp://errors.angularjs.org/1.3.2/"+(e?e+"/":"")+a,i=2;i<arguments.length;i++)n=n+(2==i?"?":"&")+"p"+(i-2)+"="+encodeURIComponent(l(arguments[i]));return new t(n)}}function a(e){if(null==e||S(e))return!1;var t=e.length;return e.nodeType===ca&&t?!0:b(e)||na(e)||0===t||"number"==typeof t&&t>0&&t-1 in e}function o(e,t,n){var i,r;if(e)if(k(e))for(i in e)"prototype"==i||"length"==i||"name"==i||e.hasOwnProperty&&!e.hasOwnProperty(i)||t.call(n,e[i],i,e);else if(na(e)||a(e)){var s="object"!=typeof e;for(i=0,r=e.length;r>i;i++)(s||i in e)&&t.call(n,e[i],i,e)}else if(e.forEach&&e.forEach!==o)e.forEach(t,n,e);else for(i in e)e.hasOwnProperty(i)&&t.call(n,e[i],i,e);return e}function r(e){return Object.keys(e).sort()}function s(e,t,n){for(var i=r(e),a=0;a<i.length;a++)t.call(n,e[i[a]],i[a]);return i}function l(e){return function(t,n){e(n,t)}}function c(){return++ea}function d(e,t){t?e.$$hashKey=t:delete e.$$hashKey}function u(e){for(var t=e.$$hashKey,n=1,i=arguments.length;i>n;n++){var a=arguments[n];if(a)for(var o=Object.keys(a),r=0,s=o.length;s>r;r++){var l=o[r];e[l]=a[l]}}return d(e,t),e}function p(e){return parseInt(e,10)}function m(e,t){return u(new(u(function(){},{prototype:e})),t)}function h(){}function f(e){return e}function g(e){return function(){return e}}function _(e){return"undefined"==typeof e}function y(e){return"undefined"!=typeof e}function v(e){return null!==e&&"object"==typeof e}function b(e){return"string"==typeof e}function w(e){return"number"==typeof e}function $(e){return"[object Date]"===Yi.call(e)}function k(e){return"function"==typeof e}function C(e){return"[object RegExp]"===Yi.call(e)}function S(e){return e&&e.window===e}function M(e){return e&&e.$evalAsync&&e.$watch}function x(e){return"[object File]"===Yi.call(e)}function A(e){return"[object Blob]"===Yi.call(e)}function T(e){return"boolean"==typeof e}function E(e){return e&&k(e.then)}function I(e){return!(!e||!(e.nodeName||e.prop&&e.attr&&e.find))}function D(e){var t,n={},i=e.split(",");for(t=0;t<i.length;t++)n[i[t]]=!0;return n}function P(e){return Ri(e.nodeName||e[0].nodeName)}function N(e,t){var n=e.indexOf(t);return n>=0&&e.splice(n,1),t}function L(e,t,n,i){if(S(e)||M(e))throw Ji("cpws","Can't copy! Making copies of Window or Scope instances is not supported.");if(t){if(e===t)throw Ji("cpi","Can't copy! Source and destination are identical.");if(n=n||[],i=i||[],v(e)){var a=n.indexOf(e);if(-1!==a)return i[a];n.push(e),i.push(t)}var r;if(na(e)){t.length=0;for(var s=0;s<e.length;s++)r=L(e[s],null,n,i),v(e[s])&&(n.push(e[s]),i.push(r)),t.push(r)}else{var l=t.$$hashKey;na(t)?t.length=0:o(t,function(e,n){delete t[n]});for(var c in e)e.hasOwnProperty(c)&&(r=L(e[c],null,n,i),v(e[c])&&(n.push(e[c]),i.push(r)),t[c]=r);d(t,l)}}else if(t=e,e)if(na(e))t=L(e,[],n,i);else if($(e))t=new Date(e.getTime());else if(C(e))t=new RegExp(e.source,e.toString().match(/[^\/]*$/)[0]),t.lastIndex=e.lastIndex;else if(v(e)){var u=Object.create(Object.getPrototypeOf(e));t=L(e,u,n,i)}return t}function O(e,t){if(na(e)){t=t||[];for(var n=0,i=e.length;i>n;n++)t[n]=e[n]}else if(v(e)){t=t||{};for(var a in e)("$"!==a.charAt(0)||"$"!==a.charAt(1))&&(t[a]=e[a])}return t||e}function U(e,t){if(e===t)return!0;if(null===e||null===t)return!1;if(e!==e&&t!==t)return!0;var i,a,o,r=typeof e,s=typeof t;if(r==s&&"object"==r){if(!na(e)){if($(e))return $(t)?U(e.getTime(),t.getTime()):!1;if(C(e)&&C(t))return e.toString()==t.toString();if(M(e)||M(t)||S(e)||S(t)||na(t))return!1;o={};for(a in e)if("$"!==a.charAt(0)&&!k(e[a])){if(!U(e[a],t[a]))return!1;o[a]=!0}for(a in t)if(!o.hasOwnProperty(a)&&"$"!==a.charAt(0)&&t[a]!==n&&!k(t[a]))return!1;return!0}if(!na(t))return!1;if((i=e.length)==t.length){for(a=0;i>a;a++)if(!U(e[a],t[a]))return!1;return!0}}return!1}function B(e,t,n){return e.concat(Ki.call(t,n))}function R(e,t){return Ki.call(e,t||0)}function F(e,t){var n=arguments.length>2?R(arguments,2):[];return!k(t)||t instanceof RegExp?t:n.length?function(){return arguments.length?t.apply(e,n.concat(Ki.call(arguments,0))):t.apply(e,n)}:function(){return arguments.length?t.apply(e,arguments):t.call(e)}}function q(e,i){var a=i;return"string"==typeof e&&"$"===e.charAt(0)&&"$"===e.charAt(1)?a=n:S(i)?a="$WINDOW":i&&t===i?a="$DOCUMENT":M(i)&&(a="$SCOPE"),a}function H(e,t){return"undefined"==typeof e?n:JSON.stringify(e,q,t?" ":null)}function j(e){return b(e)?JSON.parse(e):e}function V(e){e=zi(e).clone();try{e.empty()}catch(t){}var n=zi("<div>").append(e).html();try{return e[0].nodeType===da?Ri(n):n.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(e,t){return"<"+Ri(t)})}catch(t){return Ri(n)}}function z(e){try{return decodeURIComponent(e)}catch(t){}}function W(e){var t,n,i={};return o((e||"").split("&"),function(e){if(e&&(t=e.replace(/\+/g,"%20").split("="),n=z(t[0]),y(n))){var a=y(t[1])?z(t[1]):!0;Fi.call(i,n)?na(i[n])?i[n].push(a):i[n]=[i[n],a]:i[n]=a}}),i}function G(e){var t=[];return o(e,function(e,n){na(e)?o(e,function(e){t.push(X(n,!0)+(e===!0?"":"="+X(e,!0)))}):t.push(X(n,!0)+(e===!0?"":"="+X(e,!0)))}),t.length?t.join("&"):""}function K(e){return X(e,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function X(e,t){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,t?"%20":"+")}function Z(e,t){var n,i,a=ra.length;for(e=zi(e),i=0;a>i;++i)if(n=ra[i]+t,b(n=e.attr(n)))return n;return null}function Y(e,t){var n,i,a={};o(ra,function(t){var a=t+"app";!n&&e.hasAttribute&&e.hasAttribute(a)&&(n=e,i=e.getAttribute(a))}),o(ra,function(t){var a,o=t+"app";!n&&(a=e.querySelector("["+o.replace(":","\\:")+"]"))&&(n=a,i=a.getAttribute(o))}),n&&(a.strictDi=null!==Z(n,"strict-di"),t(n,i?[i]:[],a))}function J(n,i,a){v(a)||(a={});var r={strictDi:!1};a=u(r,a);var s=function(){if(n=zi(n),n.injector()){var e=n[0]===t?"document":V(n);throw Ji("btstrpd","App Already Bootstrapped with this Element '{0}'",e.replace(/</,"<").replace(/>/,">"))}i=i||[],i.unshift(["$provide",function(e){e.value("$rootElement",n)}]),a.debugInfoEnabled&&i.push(["$compileProvider",function(e){e.debugInfoEnabled(!0)}]),i.unshift("ng");var o=Ft(i,a.strictDi);return o.invoke(["$rootScope","$rootElement","$compile","$injector",function(e,t,n,i){e.$apply(function(){t.data("$injector",i),n(t)(e)})}]),o},l=/^NG_ENABLE_DEBUG_INFO!/,c=/^NG_DEFER_BOOTSTRAP!/;return e&&l.test(e.name)&&(a.debugInfoEnabled=!0,e.name=e.name.replace(l,"")),e&&!c.test(e.name)?s():(e.name=e.name.replace(c,""),void(Qi.resumeBootstrap=function(e){o(e,function(e){i.push(e)}),s()}))}function Q(){e.name="NG_ENABLE_DEBUG_INFO!"+e.name,e.location.reload()}function et(e){return Qi.element(e).injector().get("$$testability")}function tt(e,t){return t=t||"_",e.replace(sa,function(e,n){return(n?t:"")+e.toLowerCase()})}function nt(){var t;la||(Wi=e.jQuery,Wi&&Wi.fn.on?(zi=Wi,u(Wi.fn,{scope:Aa.scope,isolateScope:Aa.isolateScope,controller:Aa.controller,injector:Aa.injector,inheritedData:Aa.inheritedData}),t=Wi.cleanData,Wi.cleanData=function(e){var n;if(ta)ta=!1;else for(var i,a=0;null!=(i=e[a]);a++)n=Wi._data(i,"events"),n&&n.$destroy&&Wi(i).triggerHandler("$destroy");t(e)}):zi=_t,Qi.element=zi,la=!0)}function it(e,t,n){if(!e)throw Ji("areq","Argument '{0}' is {1}",t||"?",n||"required");return e}function at(e,t,n){return n&&na(e)&&(e=e[e.length-1]),it(k(e),t,"not a function, got "+(e&&"object"==typeof e?e.constructor.name||"Object":typeof e)),e}function ot(e,t){if("hasOwnProperty"===e)throw Ji("badname","hasOwnProperty is not a valid {0} name",t)}function rt(e,t,n){if(!t)return e;for(var i,a=t.split("."),o=e,r=a.length,s=0;r>s;s++)i=a[s],e&&(e=(o=e)[i]);return!n&&k(e)?F(o,e):e}function st(e){var t=e[0],n=e[e.length-1],i=[t];do{if(t=t.nextSibling,!t)break;i.push(t)}while(t!==n);return zi(i)}function lt(){return Object.create(null)}function ct(e){function t(e,t,n){return e[t]||(e[t]=n())}var n=i("$injector"),a=i("ng"),o=t(e,"angular",Object); |
|
|
return o.$$minErr=o.$$minErr||i,t(o,"module",function(){var e={};return function(i,o,r){var s=function(e,t){if("hasOwnProperty"===e)throw a("badname","hasOwnProperty is not a valid {0} name",t)};return s(i,"module"),o&&e.hasOwnProperty(i)&&(e[i]=null),t(e,i,function(){function e(e,n,i,a){return a||(a=t),function(){return a[i||"push"]([e,n,arguments]),c}}if(!o)throw n("nomod","Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.",i);var t=[],a=[],s=[],l=e("$injector","invoke","push",a),c={_invokeQueue:t,_configBlocks:a,_runBlocks:s,requires:o,name:i,provider:e("$provide","provider"),factory:e("$provide","factory"),service:e("$provide","service"),value:e("$provide","value"),constant:e("$provide","constant","unshift"),animation:e("$animateProvider","register"),filter:e("$filterProvider","register"),controller:e("$controllerProvider","register"),directive:e("$compileProvider","directive"),config:l,run:function(e){return s.push(e),this}};return r&&l(r),c})}})}function dt(t){u(t,{bootstrap:J,copy:L,extend:u,equals:U,element:zi,forEach:o,injector:Ft,noop:h,bind:F,toJson:H,fromJson:j,identity:f,isUndefined:_,isDefined:y,isString:b,isFunction:k,isObject:v,isNumber:w,isElement:I,isArray:na,version:ha,isDate:$,lowercase:Ri,uppercase:qi,callbacks:{counter:0},getTestability:et,$$minErr:i,$$csp:oa,reloadWithDebugInfo:Q}),Gi=ct(e);try{Gi("ngLocale")}catch(n){Gi("ngLocale",[]).provider("$locale",pn)}Gi("ng",["ngLocale"],["$provide",function(e){e.provider({$$sanitizeUri:jn}),e.provider("$compile",Gt).directive({a:bo,input:Ro,textarea:Ro,form:So,script:Er,select:Pr,style:Lr,option:Nr,ngBind:ar,ngBindHtml:rr,ngBindTemplate:or,ngClass:sr,ngClassEven:cr,ngClassOdd:lr,ngCloak:dr,ngController:ur,ngForm:Mo,ngHide:Cr,ngIf:hr,ngInclude:fr,ngInit:_r,ngNonBindable:yr,ngPluralize:vr,ngRepeat:br,ngShow:kr,ngStyle:Sr,ngSwitch:Mr,ngSwitchWhen:xr,ngSwitchDefault:Ar,ngOptions:Dr,ngTransclude:Tr,ngModel:Ko,ngList:er,ngChange:Xo,pattern:Yo,ngPattern:Yo,required:Zo,ngRequired:Zo,minlength:Qo,ngMinlength:Qo,maxlength:Jo,ngMaxlength:Jo,ngValue:nr,ngModelOptions:ir}).directive({ngInclude:gr}).directive(wo).directive(pr),e.provider({$anchorScroll:qt,$animate:Ba,$browser:Vt,$cacheFactory:zt,$controller:Yt,$document:Jt,$exceptionHandler:Qt,$filter:ti,$interpolate:dn,$interval:un,$http:rn,$httpBackend:ln,$location:Sn,$log:Mn,$parse:Un,$rootScope:Hn,$q:Bn,$$q:Rn,$sce:Gn,$sceDelegate:Wn,$sniffer:Kn,$templateCache:Wt,$templateRequest:Xn,$$testability:Zn,$timeout:Yn,$window:ei,$$rAF:qn,$$asyncCallback:Ht})}])}function ut(){return++ga}function pt(e){return e.replace(va,function(e,t,n,i){return i?n.toUpperCase():n}).replace(ba,"Moz$1")}function mt(e){return!Ca.test(e)}function ht(e){var t=e.nodeType;return t===ca||!t||t===pa}function ft(e,t){var n,i,a,r,s=t.createDocumentFragment(),l=[];if(mt(e))l.push(t.createTextNode(e));else{for(n=n||s.appendChild(t.createElement("div")),i=(Sa.exec(e)||["",""])[1].toLowerCase(),a=xa[i]||xa._default,n.innerHTML=a[1]+e.replace(Ma,"<$1></$2>")+a[2],r=a[0];r--;)n=n.lastChild;l=B(l,n.childNodes),n=s.firstChild,n.textContent=""}return s.textContent="",s.innerHTML="",o(l,function(e){s.appendChild(e)}),s}function gt(e,n){n=n||t;var i;return(i=ka.exec(e))?[n.createElement(i[1])]:(i=ft(e,n))?i.childNodes:[]}function _t(e){if(e instanceof _t)return e;var t;if(b(e)&&(e=ia(e),t=!0),!(this instanceof _t)){if(t&&"<"!=e.charAt(0))throw $a("nosel","Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");return new _t(e)}t?xt(this,gt(e)):xt(this,e)}function yt(e){return e.cloneNode(!0)}function vt(e,t){if(t||wt(e),e.querySelectorAll)for(var n=e.querySelectorAll("*"),i=0,a=n.length;a>i;i++)wt(n[i])}function bt(e,t,n,i){if(y(i))throw $a("offargs","jqLite#off() does not support the `selector` argument");var a=$t(e),r=a&&a.events,s=a&&a.handle;if(s)if(t)o(t.split(" "),function(t){if(y(n)){var i=r[t];if(N(i||[],n),i&&i.length>0)return}ya(e,t,s),delete r[t]});else for(t in r)"$destroy"!==t&&ya(e,t,s),delete r[t]}function wt(e,t){var i=e.ng339,a=i&&fa[i];if(a){if(t)return void delete a.data[t];a.handle&&(a.events.$destroy&&a.handle({},"$destroy"),bt(e)),delete fa[i],e.ng339=n}}function $t(e,t){var i=e.ng339,a=i&&fa[i];return t&&!a&&(e.ng339=i=ut(),a=fa[i]={events:{},data:{},handle:n}),a}function kt(e,t,n){if(ht(e)){var i=y(n),a=!i&&t&&!v(t),o=!t,r=$t(e,!a),s=r&&r.data;if(i)s[t]=n;else{if(o)return s;if(a)return s&&s[t];u(s,t)}}}function Ct(e,t){return e.getAttribute?(" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+t+" ")>-1:!1}function St(e,t){t&&e.setAttribute&&o(t.split(" "),function(t){e.setAttribute("class",ia((" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+ia(t)+" "," ")))})}function Mt(e,t){if(t&&e.setAttribute){var n=(" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");o(t.split(" "),function(e){e=ia(e),-1===n.indexOf(" "+e+" ")&&(n+=e+" ")}),e.setAttribute("class",ia(n))}}function xt(e,t){if(t)if(t.nodeType)e[e.length++]=t;else{var n=t.length;if("number"==typeof n&&t.window!==t){if(n)for(var i=0;n>i;i++)e[e.length++]=t[i]}else e[e.length++]=t}}function At(e,t){return Tt(e,"$"+(t||"ngController")+"Controller")}function Tt(e,t,i){e.nodeType==pa&&(e=e.documentElement);for(var a=na(t)?t:[t];e;){for(var o=0,r=a.length;r>o;o++)if((i=zi.data(e,a[o]))!==n)return i;e=e.parentNode||e.nodeType===ma&&e.host}}function Et(e){for(vt(e,!0);e.firstChild;)e.removeChild(e.firstChild)}function It(e,t){t||vt(e);var n=e.parentNode;n&&n.removeChild(e)}function Dt(t,n){n=n||e,"complete"===n.document.readyState?n.setTimeout(t):zi(n).on("load",t)}function Pt(e,t){var n=Ta[t.toLowerCase()];return n&&Ea[P(e)]&&n}function Nt(e,t){var n=e.nodeName;return("INPUT"===n||"TEXTAREA"===n)&&Ia[t]}function Lt(e,t){var n=function(n,i){n.isDefaultPrevented=function(){return n.defaultPrevented};var a=t[i||n.type],o=a?a.length:0;if(o){if(_(n.immediatePropagationStopped)){var r=n.stopImmediatePropagation;n.stopImmediatePropagation=function(){n.immediatePropagationStopped=!0,n.stopPropagation&&n.stopPropagation(),r&&r.call(n)}}n.isImmediatePropagationStopped=function(){return n.immediatePropagationStopped===!0},o>1&&(a=O(a));for(var s=0;o>s;s++)n.isImmediatePropagationStopped()||a[s].call(e,n)}};return n.elem=e,n}function Ot(e,t){var n=e&&e.$$hashKey;if(n)return"function"==typeof n&&(n=e.$$hashKey()),n;var i=typeof e;return n="function"==i||"object"==i&&null!==e?e.$$hashKey=i+":"+(t||c)():i+":"+e}function Ut(e,t){if(t){var n=0;this.nextUid=function(){return++n}}o(e,this.put,this)}function Bt(e){var t=e.toString().replace(La,""),n=t.match(Da);return n?"function("+(n[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function Rt(e,t,n){var i,a,r,s;if("function"==typeof e){if(!(i=e.$inject)){if(i=[],e.length){if(t)throw b(n)&&n||(n=e.name||Bt(e)),Oa("strictdi","{0} is not using explicit annotation and cannot be invoked in strict mode",n);a=e.toString().replace(La,""),r=a.match(Da),o(r[1].split(Pa),function(e){e.replace(Na,function(e,t,n){i.push(n)})})}e.$inject=i}}else na(e)?(s=e.length-1,at(e[s],"fn"),i=e.slice(0,s)):at(e,"fn",!0);return i}function Ft(e,t){function i(e){return function(t,n){return v(t)?void o(t,l(e)):e(t,n)}}function a(e,t){if(ot(e,"service"),(k(t)||na(t))&&(t=M.instantiate(t)),!t.$get)throw Oa("pget","Provider '{0}' must define $get factory method.",e);return S[e+w]=t}function r(e,t){return function(){var i=A.invoke(t,this,n,e);if(_(i))throw Oa("undef","Provider '{0}' must return a value from $get factory method.",e);return i}}function s(e,t,n){return a(e,{$get:n!==!1?r(e,t):t})}function c(e,t){return s(e,["$injector",function(e){return e.instantiate(t)}])}function d(e,t){return s(e,g(t),!1)}function u(e,t){ot(e,"constant"),S[e]=t,x[e]=t}function p(e,t){var n=M.get(e+w),i=n.$get;n.$get=function(){var e=A.invoke(i,n);return A.invoke(t,null,{$delegate:e})}}function m(e){var t,n=[];return o(e,function(e){function i(e){var t,n;for(t=0,n=e.length;n>t;t++){var i=e[t],a=M.get(i[0]);a[i[1]].apply(a,i[2])}}if(!C.get(e)){C.put(e,!0);try{b(e)?(t=Gi(e),n=n.concat(m(t.requires)).concat(t._runBlocks),i(t._invokeQueue),i(t._configBlocks)):k(e)?n.push(M.invoke(e)):na(e)?n.push(M.invoke(e)):at(e,"module")}catch(a){throw na(e)&&(e=e[e.length-1]),a.message&&a.stack&&-1==a.stack.indexOf(a.message)&&(a=a.message+"\n"+a.stack),Oa("modulerr","Failed to instantiate module {0} due to:\n{1}",e,a.stack||a.message||a)}}}),n}function f(e,n){function i(t){if(e.hasOwnProperty(t)){if(e[t]===y)throw Oa("cdep","Circular dependency found: {0}",t+" <- "+$.join(" <- "));return e[t]}try{return $.unshift(t),e[t]=y,e[t]=n(t)}catch(i){throw e[t]===y&&delete e[t],i}finally{$.shift()}}function a(e,n,a,o){"string"==typeof a&&(o=a,a=null);var r,s,l,c=[],d=Rt(e,t,o);for(s=0,r=d.length;r>s;s++){if(l=d[s],"string"!=typeof l)throw Oa("itkn","Incorrect injection token! Expected service name as string, got {0}",l);c.push(a&&a.hasOwnProperty(l)?a[l]:i(l))}return na(e)&&(e=e[r]),e.apply(n,c)}function o(e,t,n){var i,o,r=function(){};return r.prototype=(na(e)?e[e.length-1]:e).prototype,i=new r,o=a(e,i,t,n),v(o)||k(o)?o:i}return{invoke:a,instantiate:o,get:i,annotate:Rt,has:function(t){return S.hasOwnProperty(t+w)||e.hasOwnProperty(t)}}}t=t===!0;var y={},w="Provider",$=[],C=new Ut([],!0),S={$provide:{provider:i(a),factory:i(s),service:i(c),value:i(d),constant:i(u),decorator:p}},M=S.$injector=f(S,function(){throw Oa("unpr","Unknown provider: {0}",$.join(" <- "))}),x={},A=x.$injector=f(x,function(e){var t=M.get(e+w);return A.invoke(t.$get,t,n,e)});return o(m(e),function(e){A.invoke(e||h)}),A}function qt(){var e=!0;this.disableAutoScrolling=function(){e=!1},this.$get=["$window","$location","$rootScope",function(t,n,i){function a(e){var t=null;return Array.prototype.some.call(e,function(e){return"a"===P(e)?(t=e,!0):void 0}),t}function o(){var e=s.yOffset;if(k(e))e=e();else if(I(e)){var n=e[0],i=t.getComputedStyle(n);e="fixed"!==i.position?0:n.getBoundingClientRect().bottom}else w(e)||(e=0);return e}function r(e){if(e){e.scrollIntoView();var n=o();if(n){var i=e.getBoundingClientRect().top;t.scrollBy(0,i-n)}}else t.scrollTo(0,0)}function s(){var e,t=n.hash();t?(e=l.getElementById(t))?r(e):(e=a(l.getElementsByName(t)))?r(e):"top"===t&&r(null):r(null)}var l=t.document;return e&&i.$watch(function(){return n.hash()},function(e,t){(e!==t||""!==e)&&Dt(function(){i.$evalAsync(s)})}),s}]}function Ht(){this.$get=["$$rAF","$timeout",function(e,t){return e.supported?function(t){return e(t)}:function(e){return t(e,0,!1)}}]}function jt(e,t,i,a){function r(e){try{e.apply(null,R(arguments,1))}finally{if($--,0===$)for(;k.length;)try{k.pop()()}catch(t){i.error(t)}}}function s(e,t){!function n(){o(S,function(e){e()}),C=t(n,e)}()}function l(){c(),d()}function c(){M=e.history.state,M=_(M)?null:M,U(M,P)&&(M=P),P=M}function d(){(A!==p.url()||x!==M)&&(A=p.url(),x=M,o(I,function(e){e(p.url(),M)}))}function u(e){try{return decodeURIComponent(e)}catch(t){return e}}var p=this,m=t[0],f=e.location,g=e.history,y=e.setTimeout,v=e.clearTimeout,w={};p.isMock=!1;var $=0,k=[];p.$$completeOutstandingRequest=r,p.$$incOutstandingRequestCount=function(){$++},p.notifyWhenNoOutstandingRequests=function(e){o(S,function(e){e()}),0===$?e():k.push(e)};var C,S=[];p.addPollFn=function(e){return _(C)&&s(100,y),S.push(e),e};var M,x,A=f.href,T=t.find("base"),E=null;c(),x=M,p.url=function(t,n,i){if(_(i)&&(i=null),f!==e.location&&(f=e.location),g!==e.history&&(g=e.history),t){var o=x===i;if(A===t&&(!a.history||o))return;var r=A&&_n(A)===_n(t);return A=t,x=i,!a.history||r&&o?(r||(E=t),n?f.replace(t):f.href=t):(g[n?"replaceState":"pushState"](i,"",t),c(),x=M),p}return E||f.href.replace(/%27/g,"'")},p.state=function(){return M};var I=[],D=!1,P=null;p.onUrlChange=function(t){return D||(a.history&&zi(e).on("popstate",l),zi(e).on("hashchange",l),D=!0),I.push(t),t},p.$$checkUrlChange=d,p.baseHref=function(){var e=T.attr("href");return e?e.replace(/^(https?\:)?\/\/[^\/]*/,""):""};var N={},L="",O=p.baseHref();p.cookies=function(e,t){var a,o,r,s,l;if(!e){if(m.cookie!==L)for(L=m.cookie,o=L.split("; "),N={},s=0;s<o.length;s++)r=o[s],l=r.indexOf("="),l>0&&(e=u(r.substring(0,l)),N[e]===n&&(N[e]=u(r.substring(l+1))));return N}t===n?m.cookie=encodeURIComponent(e)+"=;path="+O+";expires=Thu, 01 Jan 1970 00:00:00 GMT":b(t)&&(a=(m.cookie=encodeURIComponent(e)+"="+encodeURIComponent(t)+";path="+O).length+1,a>4096&&i.warn("Cookie '"+e+"' possibly not set or overflowed because it was too large ("+a+" > 4096 bytes)!"))},p.defer=function(e,t){var n;return $++,n=y(function(){delete w[n],r(e)},t||0),w[n]=!0,n},p.defer.cancel=function(e){return w[e]?(delete w[e],v(e),r(h),!0):!1}}function Vt(){this.$get=["$window","$log","$sniffer","$document",function(e,t,n,i){return new jt(e,i,t,n)}]}function zt(){this.$get=function(){function e(e,n){function a(e){e!=p&&(m?m==e&&(m=e.n):m=e,o(e.n,e.p),o(e,p),p=e,p.n=null)}function o(e,t){e!=t&&(e&&(e.p=t),t&&(t.n=e))}if(e in t)throw i("$cacheFactory")("iid","CacheId '{0}' is already taken!",e);var r=0,s=u({},n,{id:e}),l={},c=n&&n.capacity||Number.MAX_VALUE,d={},p=null,m=null;return t[e]={put:function(e,t){if(c<Number.MAX_VALUE){var n=d[e]||(d[e]={key:e});a(n)}if(!_(t))return e in l||r++,l[e]=t,r>c&&this.remove(m.key),t},get:function(e){if(c<Number.MAX_VALUE){var t=d[e];if(!t)return;a(t)}return l[e]},remove:function(e){if(c<Number.MAX_VALUE){var t=d[e];if(!t)return;t==p&&(p=t.p),t==m&&(m=t.n),o(t.n,t.p),delete d[e]}delete l[e],r--},removeAll:function(){l={},r=0,d={},p=m=null},destroy:function(){l=null,s=null,d=null,delete t[e]},info:function(){return u({},s,{size:r})}}}var t={};return e.info=function(){var e={};return o(t,function(t,n){e[n]=t.info()}),e},e.get=function(e){return t[e]},e}}function Wt(){this.$get=["$cacheFactory",function(e){return e("templates")}]}function Gt(e,i){function a(e,t){var n=/^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/,i={};return o(e,function(e,a){var o=e.match(n);if(!o)throw Ra("iscp","Invalid isolate scope definition for directive '{0}'. Definition: {... {1}: '{2}' ...}",t,a,e);i[a]={mode:o[1][0],collection:"*"===o[2],optional:"?"===o[3],attrName:o[4]||a}}),i}var r={},s="Directive",c=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,d=/(([\w\-]+)(?:\:([^;]+))?;?)/,p=D("ngSrc,ngSrcset,src,srcset"),_=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,w=/^(on[a-z]+|formaction)$/;this.directive=function C(t,n){return ot(t,"directive"),b(t)?(it(n,"directiveFactory"),r.hasOwnProperty(t)||(r[t]=[],e.factory(t+s,["$injector","$exceptionHandler",function(e,n){var i=[];return o(r[t],function(o,r){try{var s=e.invoke(o);k(s)?s={compile:g(s)}:!s.compile&&s.link&&(s.compile=g(s.link)),s.priority=s.priority||0,s.index=r,s.name=s.name||t,s.require=s.require||s.controller&&s.name,s.restrict=s.restrict||"EA",v(s.scope)&&(s.$$isolateBindings=a(s.scope,s.name)),i.push(s)}catch(l){n(l)}}),i}])),r[t].push(n)):o(t,l(C)),this},this.aHrefSanitizationWhitelist=function(e){return y(e)?(i.aHrefSanitizationWhitelist(e),this):i.aHrefSanitizationWhitelist()},this.imgSrcSanitizationWhitelist=function(e){return y(e)?(i.imgSrcSanitizationWhitelist(e),this):i.imgSrcSanitizationWhitelist()};var $=!0;this.debugInfoEnabled=function(e){return y(e)?($=e,this):$},this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(e,i,a,l,g,y,C,S,x,A,T){function E(e,t){try{e.addClass(t)}catch(n){}}function I(e,t,n,i,a){e instanceof zi||(e=zi(e)),o(e,function(t,n){t.nodeType==da&&t.nodeValue.match(/\S+/)&&(e[n]=zi(t).wrap("<span></span>").parent()[0])});var r=L(e,t,e,n,i,a);I.$$addScopeClass(e);var s=null;return function(t,n,i){it(t,"scope"),i=i||{};var a=i.parentBoundTranscludeFn,o=i.transcludeControllers,l=i.futureParentElement;a&&a.$$boundTransclude&&(a=a.$$boundTransclude),s||(s=D(l));var c;if(c="html"!==s?zi(J(s,zi("<div>").append(e).html())):n?Aa.clone.call(e):e,o)for(var d in o)c.data("$"+d+"Controller",o[d].instance);return I.$$addScopeInfo(c,t),n&&n(c,t),r&&r(t,c,c,a),c}}function D(e){var t=e&&e[0];return t&&"foreignobject"!==P(t)&&t.toString().match(/SVG/)?"svg":"html"}function L(e,t,i,a,o,r){function s(e,i,a,o){var r,s,l,c,d,u,p,m,g;if(h){var _=i.length;for(g=new Array(_),d=0;d<f.length;d+=3)p=f[d],g[p]=i[p]}else g=i;for(d=0,u=f.length;u>d;)l=g[f[d++]],r=f[d++],s=f[d++],r?(r.scope?(c=e.$new(),I.$$addScopeInfo(zi(l),c)):c=e,m=r.transcludeOnThisElement?O(e,r.transclude,o,r.elementTranscludeOnThisElement):!r.templateOnThisElement&&o?o:!o&&t?O(e,t):null,r(s,c,l,a,m)):s&&s(e,l.childNodes,n,o)}for(var l,c,d,u,p,m,h,f=[],g=0;g<e.length;g++)l=new rt,c=B(e[g],[],l,0===g?a:n,o),d=c.length?H(c,e[g],l,t,i,null,[],[],r):null,d&&d.scope&&I.$$addScopeClass(l.$$element),p=d&&d.terminal||!(u=e[g].childNodes)||!u.length?null:L(u,d?(d.transcludeOnThisElement||!d.templateOnThisElement)&&d.transclude:t),(d||p)&&(f.push(g,d,p),m=!0,h=h||d),r=null;return m?s:null}function O(e,t,n){var i=function(i,a,o,r,s){return i||(i=e.$new(!1,s),i.$$transcluded=!0),t(i,a,{parentBoundTranscludeFn:n,transcludeControllers:o,futureParentElement:r})};return i}function B(e,t,n,i,a){var o,r,s=e.nodeType,l=n.$attr;switch(s){case ca:z(t,Kt(P(e)),"E",i,a);for(var u,p,m,h,f,g,_=e.attributes,y=0,v=_&&_.length;v>y;y++){var w=!1,$=!1;u=_[y],p=u.name,f=ia(u.value),h=Kt(p),(g=ut.test(h))&&(p=tt(h.substr(6),"-"));var k=h.replace(/(Start|End)$/,"");W(k)&&h===k+"Start"&&(w=p,$=p.substr(0,p.length-5)+"end",p=p.substr(0,p.length-6)),m=Kt(p.toLowerCase()),l[m]=p,(g||!n.hasOwnProperty(m))&&(n[m]=f,Pt(e,m)&&(n[m]=!0)),et(e,t,f,m,g),z(t,m,"A",i,a,w,$)}if(r=e.className,b(r)&&""!==r)for(;o=d.exec(r);)m=Kt(o[2]),z(t,m,"C",i,a)&&(n[m]=ia(o[3])),r=r.substr(o.index+o[0].length);break;case da:Y(t,e.nodeValue);break;case ua:try{o=c.exec(e.nodeValue),o&&(m=Kt(o[1]),z(t,m,"M",i,a)&&(n[m]=ia(o[2])))}catch(C){}}return t.sort(X),t}function F(e,t,n){var i=[],a=0;if(t&&e.hasAttribute&&e.hasAttribute(t)){do{if(!e)throw Ra("uterdir","Unterminated attribute, found '{0}' but no matching '{1}' found.",t,n);e.nodeType==ca&&(e.hasAttribute(t)&&a++,e.hasAttribute(n)&&a--),i.push(e),e=e.nextSibling}while(a>0)}else i.push(e);return zi(i)}function q(e,t,n){return function(i,a,o,r,s){return a=F(a[0],t,n),e(i,a,o,r,s)}}function H(e,r,s,l,c,d,u,p,m){function h(e,t,n,i){e&&(n&&(e=q(e,n,i)),e.require=S.require,e.directiveName=x,(N===S||S.$$isolateScope)&&(e=at(e,{isolateScope:!0})),u.push(e)),t&&(n&&(t=q(t,n,i)),t.require=S.require,t.directiveName=x,(N===S||S.$$isolateScope)&&(t=at(t,{isolateScope:!0})),p.push(t))}function f(e,t,n,i){var a,r,s="data",l=!1,c=n;if(b(t)){if(r=t.match(_),t=t.substring(r[0].length),r[3]&&(r[1]?r[3]=null:r[1]=r[3]),"^"===r[1]?s="inheritedData":"^^"===r[1]&&(s="inheritedData",c=n.parent()),"?"===r[2]&&(l=!0),a=null,i&&"data"===s&&(a=i[t])&&(a=a.instance),a=a||c[s]("$"+t+"Controller"),!a&&!l)throw Ra("ctreq","Controller '{0}', required by directive '{1}', can't be found!",t,e);return a||null}return na(t)&&(a=[],o(t,function(t){a.push(f(e,t,n,i))})),a}function w(e,t,a,l,c){function d(e,t,i){var a;return M(e)||(i=t,t=e,e=n),W&&(a=w),i||(i=W?k.parent():k),c(e,t,a,i,T)}var m,h,_,v,b,w,$,k,S;if(r===a?(S=s,k=s.$$element):(k=zi(a),S=new rt(k,s)),N&&(b=t.$new(!0)),c&&($=d,$.$$boundTransclude=c),P&&(C={},w={},o(P,function(e){var n,i={$scope:e===N||e.$$isolateScope?b:t,$element:k,$attrs:S,$transclude:$};v=e.controller,"@"==v&&(v=S[e.name]),n=y(v,i,!0,e.controllerAs),w[e.name]=n,W||k.data("$"+e.name+"Controller",n.instance),C[e.name]=n})),N){I.$$addScopeInfo(k,b,!0,!(L&&(L===N||L===N.$$originalDirective))),I.$$addScopeClass(k,!0);var x=C&&C[N.name],A=b;x&&x.identifier&&N.bindToController===!0&&(A=x.instance),o(b.$$isolateBindings=N.$$isolateBindings,function(e,n){var a,o,r,s,l=e.attrName,c=e.optional,d=e.mode;switch(d){case"@":S.$observe(l,function(e){A[n]=e}),S.$$observers[l].$$scope=t,S[l]&&(A[n]=i(S[l])(t));break;case"=":if(c&&!S[l])return;o=g(S[l]),s=o.literal?U:function(e,t){return e===t||e!==e&&t!==t},r=o.assign||function(){throw a=A[n]=o(t),Ra("nonassign","Expression '{0}' used with directive '{1}' is non-assignable!",S[l],N.name)},a=A[n]=o(t);var u=function(e){return s(e,A[n])||(s(e,a)?r(t,e=A[n]):A[n]=e),a=e};u.$stateful=!0;var p;p=e.collection?t.$watchCollection(S[l],u):t.$watch(g(S[l],u),null,o.literal),b.$on("$destroy",p);break;case"&":o=g(S[l]),A[n]=function(e){return o(t,e)}}})}for(C&&(o(C,function(e){e()}),C=null),m=0,h=u.length;h>m;m++)_=u[m],ot(_,_.isolateScope?b:t,k,S,_.require&&f(_.directiveName,_.require,k,w),$);var T=t;for(N&&(N.template||null===N.templateUrl)&&(T=b),e&&e(T,a.childNodes,n,c),m=p.length-1;m>=0;m--)_=p[m],ot(_,_.isolateScope?b:t,k,S,_.require&&f(_.directiveName,_.require,k,w),$)}m=m||{};for(var $,C,S,x,A,T,E,D=-Number.MAX_VALUE,P=m.controllerDirectives,N=m.newIsolateScopeDirective,L=m.templateDirective,O=m.nonTlbTranscludeDirective,H=!1,z=!1,W=m.hasElementTranscludeDirective,X=s.$$element=zi(r),Y=d,Q=l,et=0,tt=e.length;tt>et;et++){S=e[et];var it=S.$$start,st=S.$$end;if(it&&(X=F(r,it,st)),A=n,D>S.priority)break;if((E=S.scope)&&(S.templateUrl||(v(E)?(Z("new/isolated scope",N||$,S,X),N=S):Z("new/isolated scope",N,S,X)),$=$||S),x=S.name,!S.templateUrl&&S.controller&&(E=S.controller,P=P||{},Z("'"+x+"' controller",P[x],S,X),P[x]=S),(E=S.transclude)&&(H=!0,S.$$tlb||(Z("transclusion",O,S,X),O=S),"element"==E?(W=!0,D=S.priority,A=X,X=s.$$element=zi(t.createComment(" "+x+": "+s[x]+" ")),r=X[0],nt(c,R(A),r),Q=I(A,l,D,Y&&Y.name,{nonTlbTranscludeDirective:O})):(A=zi(yt(r)).contents(),X.empty(),Q=I(A,l))),S.template)if(z=!0,Z("template",L,S,X),L=S,E=k(S.template)?S.template(X,s):S.template,E=dt(E),S.replace){if(Y=S,A=mt(E)?[]:Zt(J(S.templateNamespace,ia(E))),r=A[0],1!=A.length||r.nodeType!==ca)throw Ra("tplrt","Template for directive '{0}' must have exactly one root element. {1}",x,"");nt(c,X,r);var lt={$attr:{}},ct=B(r,[],lt),ut=e.splice(et+1,e.length-(et+1));N&&j(ct),e=e.concat(ct).concat(ut),G(s,lt),tt=e.length}else X.html(E);if(S.templateUrl)z=!0,Z("template",L,S,X),L=S,S.replace&&(Y=S),w=K(e.splice(et,e.length-et),X,s,c,H&&Q,u,p,{controllerDirectives:P,newIsolateScopeDirective:N,templateDirective:L,nonTlbTranscludeDirective:O}),tt=e.length;else if(S.compile)try{T=S.compile(X,s,Q),k(T)?h(null,T,it,st):T&&h(T.pre,T.post,it,st)}catch(pt){a(pt,V(X))}S.terminal&&(w.terminal=!0,D=Math.max(D,S.priority))}return w.scope=$&&$.scope===!0,w.transcludeOnThisElement=H,w.elementTranscludeOnThisElement=W,w.templateOnThisElement=z,w.transclude=Q,m.hasElementTranscludeDirective=W,w}function j(e){for(var t=0,n=e.length;n>t;t++)e[t]=m(e[t],{$$isolateScope:!0})}function z(t,i,o,l,c,d,u){if(i===c)return null;var p=null;if(r.hasOwnProperty(i))for(var h,f=e.get(i+s),g=0,_=f.length;_>g;g++)try{h=f[g],(l===n||l>h.priority)&&-1!=h.restrict.indexOf(o)&&(d&&(h=m(h,{$$start:d,$$end:u})),t.push(h),p=h)}catch(y){a(y)}return p}function W(t){if(r.hasOwnProperty(t))for(var n,i=e.get(t+s),a=0,o=i.length;o>a;a++)if(n=i[a],n.multiElement)return!0;return!1}function G(e,t){var n=t.$attr,i=e.$attr,a=e.$$element;o(e,function(i,a){"$"!=a.charAt(0)&&(t[a]&&t[a]!==i&&(i+=("style"===a?";":" ")+t[a]),e.$set(a,i,!0,n[a]))}),o(t,function(t,o){"class"==o?(E(a,t),e["class"]=(e["class"]?e["class"]+" ":"")+t):"style"==o?(a.attr("style",a.attr("style")+";"+t),e.style=(e.style?e.style+";":"")+t):"$"==o.charAt(0)||e.hasOwnProperty(o)||(e[o]=t,i[o]=n[o])})}function K(e,t,n,i,a,r,s,c){var d,p,m=[],h=t[0],f=e.shift(),g=u({},f,{templateUrl:null,transclude:null,replace:null,$$originalDirective:f}),_=k(f.templateUrl)?f.templateUrl(t,n):f.templateUrl,y=f.templateNamespace;return t.empty(),l(x.getTrustedResourceUrl(_)).then(function(l){var u,b,w,$;if(l=dt(l),f.replace){if(w=mt(l)?[]:Zt(J(y,ia(l))),u=w[0],1!=w.length||u.nodeType!==ca)throw Ra("tplrt","Template for directive '{0}' must have exactly one root element. {1}",f.name,_);b={$attr:{}},nt(i,t,u);var k=B(u,[],b);v(f.scope)&&j(k),e=k.concat(e),G(n,b)}else u=h,t.html(l);for(e.unshift(g),d=H(e,u,n,a,t,f,r,s,c),o(i,function(e,n){e==u&&(i[n]=t[0])}),p=L(t[0].childNodes,a);m.length;){var C=m.shift(),S=m.shift(),M=m.shift(),x=m.shift(),A=t[0];if(!C.$$destroyed){if(S!==h){var T=S.className;c.hasElementTranscludeDirective&&f.replace||(A=yt(u)),nt(M,zi(S),A),E(zi(A),T)}$=d.transcludeOnThisElement?O(C,d.transclude,x):x,d(p,C,A,i,$)}}m=null}),function(e,t,n,i,a){var o=a;t.$$destroyed||(m?(m.push(t),m.push(n),m.push(i),m.push(o)):(d.transcludeOnThisElement&&(o=O(t,d.transclude,a)),d(p,t,n,i,o)))}}function X(e,t){var n=t.priority-e.priority;return 0!==n?n:e.name!==t.name?e.name<t.name?-1:1:e.index-t.index}function Z(e,t,n,i){if(t)throw Ra("multidir","Multiple directives [{0}, {1}] asking for {2} on: {3}",t.name,n.name,e,V(i))}function Y(e,t){var n=i(t,!0);n&&e.push({priority:0,compile:function(e){var t=e.parent(),i=!!t.length;return i&&I.$$addBindingClass(t),function(e,t){var a=t.parent();i||I.$$addBindingClass(a),I.$$addBindingInfo(a,n.expressions),e.$watch(n,function(e){t[0].nodeValue=e})}}})}function J(e,n){switch(e=Ri(e||"html")){case"svg":case"math":var i=t.createElement("div");return i.innerHTML="<"+e+">"+n+"</"+e+">",i.childNodes[0].childNodes;default:return n}}function Q(e,t){if("srcdoc"==t)return x.HTML;var n=P(e);return"xlinkHref"==t||"form"==n&&"action"==t||"img"!=n&&("src"==t||"ngSrc"==t)?x.RESOURCE_URL:void 0}function et(e,t,n,a,o){var r=i(n,!0);if(r){if("multiple"===a&&"select"===P(e))throw Ra("selmulti","Binding to the 'multiple' attribute is not supported. Element: {0}",V(e));t.push({priority:100,compile:function(){return{pre:function(t,n,s){var l=s.$$observers||(s.$$observers={});if(w.test(a))throw Ra("nodomevents","Interpolations for HTML DOM event attributes are disallowed. Please use the ng- versions (such as ng-click instead of onclick) instead.");s[a]&&(r=i(s[a],!0,Q(e,a),p[a]||o),r&&(s[a]=r(t),(l[a]||(l[a]=[])).$$inter=!0,(s.$$observers&&s.$$observers[a].$$scope||t).$watch(r,function(e,t){"class"===a&&e!=t?s.$updateClass(e,t):s.$set(a,e)})))}}}})}}function nt(e,n,i){var a,o,r=n[0],s=n.length,l=r.parentNode;if(e)for(a=0,o=e.length;o>a;a++)if(e[a]==r){e[a++]=i;for(var c=a,d=c+s-1,u=e.length;u>c;c++,d++)u>d?e[c]=e[d]:delete e[c];e.length-=s-1,e.context===r&&(e.context=i);break}l&&l.replaceChild(i,r);var p=t.createDocumentFragment();p.appendChild(r),zi(i).data(zi(r).data()),Wi?(ta=!0,Wi.cleanData([r])):delete zi.cache[r[zi.expando]];for(var m=1,h=n.length;h>m;m++){var f=n[m];zi(f).remove(),p.appendChild(f),delete n[m]}n[0]=i,n.length=1}function at(e,t){return u(function(){return e.apply(null,arguments)},e,t)}function ot(e,t,n,i,o,r){try{e(t,n,i,o,r)}catch(s){a(s,V(n))}}var rt=function(e,t){if(t){var n,i,a,o=Object.keys(t);for(n=0,i=o.length;i>n;n++)a=o[n],this[a]=t[a]}else this.$attr={};this.$$element=e};rt.prototype={$normalize:Kt,$addClass:function(e){e&&e.length>0&&A.addClass(this.$$element,e)},$removeClass:function(e){e&&e.length>0&&A.removeClass(this.$$element,e)},$updateClass:function(e,t){var n=Xt(e,t);n&&n.length&&A.addClass(this.$$element,n);var i=Xt(t,e);i&&i.length&&A.removeClass(this.$$element,i)},$set:function(e,t,i,r){var s,l=this.$$element[0],c=Pt(l,e),d=Nt(l,e),u=e;if(c?(this.$$element.prop(e,t),r=c):d&&(this[d]=t,u=d),this[e]=t,r?this.$attr[e]=r:(r=this.$attr[e],r||(this.$attr[e]=r=tt(e,"-"))),s=P(this.$$element),"a"===s&&"href"===e||"img"===s&&"src"===e)this[e]=t=T(t,"src"===e);else if("img"===s&&"srcset"===e){for(var p="",m=ia(t),h=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,f=/\s/.test(m)?h:/(,)/,g=m.split(f),_=Math.floor(g.length/2),y=0;_>y;y++){var v=2*y;p+=T(ia(g[v]),!0),p+=" "+ia(g[v+1])}var b=ia(g[2*y]).split(/\s/);p+=T(ia(b[0]),!0),2===b.length&&(p+=" "+ia(b[1])),this[e]=t=p}i!==!1&&(null===t||t===n?this.$$element.removeAttr(r):this.$$element.attr(r,t));var w=this.$$observers;w&&o(w[u],function(e){try{e(t)}catch(n){a(n)}})},$observe:function(e,t){var n=this,i=n.$$observers||(n.$$observers=lt()),a=i[e]||(i[e]=[]);return a.push(t),C.$evalAsync(function(){!a.$$inter&&n.hasOwnProperty(e)&&t(n[e])}),function(){N(a,t)}}};var st=i.startSymbol(),ct=i.endSymbol(),dt="{{"==st||"}}"==ct?f:function(e){return e.replace(/\{\{/g,st).replace(/}}/g,ct)},ut=/^ngAttr[A-Z]/;return I.$$addBindingInfo=$?function(e,t){var n=e.data("$binding")||[];na(t)?n=n.concat(t):n.push(t),e.data("$binding",n)}:h,I.$$addBindingClass=$?function(e){E(e,"ng-binding")}:h,I.$$addScopeInfo=$?function(e,t,n,i){var a=n?i?"$isolateScopeNoTemplate":"$isolateScope":"$scope";e.data(a,t)}:h,I.$$addScopeClass=$?function(e,t){E(e,t?"ng-isolate-scope":"ng-scope")}:h,I}]}function Kt(e){return pt(e.replace(Fa,""))}function Xt(e,t){var n="",i=e.split(/\s+/),a=t.split(/\s+/);e:for(var o=0;o<i.length;o++){for(var r=i[o],s=0;s<a.length;s++)if(r==a[s])continue e;n+=(n.length>0?" ":"")+r}return n}function Zt(e){e=zi(e);var t=e.length;if(1>=t)return e;for(;t--;){var n=e[t];n.nodeType===ua&&Xi.call(e,t,1)}return e}function Yt(){var e={},t=!1,a=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(t,n){ot(t,"controller"),v(t)?u(e,t):e[t]=n},this.allowGlobals=function(){t=!0},this.$get=["$injector","$window",function(o,r){function s(e,t,n,a){if(!e||!v(e.$scope))throw i("$controller")("noscp","Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",a,t);e.$scope[t]=n}return function(i,l,c,d){var p,m,h,f;if(c=c===!0,d&&b(d)&&(f=d),b(i)&&(m=i.match(a),h=m[1],f=f||m[3],i=e.hasOwnProperty(h)?e[h]:rt(l.$scope,h,!0)||(t?rt(r,h,!0):n),at(i,h,!0)),c){var g=function(){};return g.prototype=(na(i)?i[i.length-1]:i).prototype,p=new g,f&&s(l,f,p,h||i.name),u(function(){return o.invoke(i,p,l,h),p},{instance:p,identifier:f})}return p=o.instantiate(i,l,h),f&&s(l,f,p,h||i.name),p}}]}function Jt(){this.$get=["$window",function(e){return zi(e.document)}]}function Qt(){this.$get=["$log",function(e){return function(){e.error.apply(e,arguments)}}]}function en(e,t){if(b(e)){e=e.replace(za,"");var n=t("Content-Type");(n&&0===n.indexOf(qa)||ja.test(e)&&Va.test(e))&&(e=j(e))}return e}function tn(e){var t,n,i,a={};return e?(o(e.split("\n"),function(e){i=e.indexOf(":"),t=Ri(ia(e.substr(0,i))),n=ia(e.substr(i+1)),t&&(a[t]=a[t]?a[t]+", "+n:n)}),a):a}function nn(e){var t=v(e)?e:n;return function(n){return t||(t=tn(e)),n?t[Ri(n)]||null:t}}function an(e,t,n){return k(n)?n(e,t):(o(n,function(n){e=n(e,t)}),e)}function on(e){return e>=200&&300>e}function rn(){var e=this.defaults={transformResponse:[en],transformRequest:[function(e){return!v(e)||x(e)||A(e)?e:H(e)}],headers:{common:{Accept:"application/json, text/plain, */*"},post:O(Ha),put:O(Ha),patch:O(Ha)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},t=!1;this.useApplyAsync=function(e){return y(e)?(t=!!e,this):t};var i=this.interceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(a,r,l,c,d,p){function m(t){function i(e){var t=u({},e);return t.data=e.data?an(e.data,e.headers,r.transformResponse):e.data,on(e.status)?t:d.reject(t)}function a(t){function n(e){var t;o(e,function(n,i){k(n)&&(t=n(),null!=t?e[i]=t:delete e[i])})}var i,a,r,s=e.headers,l=u({},t.headers);s=u({},s.common,s[Ri(t.method)]);e:for(i in s){a=Ri(i);for(r in l)if(Ri(r)===a)continue e;l[i]=s[i]}return n(l),l}var r={method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse},s=a(t);u(r,t),r.headers=s,r.method=qi(r.method);var l=function(t){s=t.headers;var n=an(t.data,nn(s),t.transformRequest);return _(n)&&o(s,function(e,t){"content-type"===Ri(t)&&delete s[t]}),_(t.withCredentials)&&!_(e.withCredentials)&&(t.withCredentials=e.withCredentials),g(t,n,s).then(i,i)},c=[l,n],p=d.when(r);for(o(S,function(e){(e.request||e.requestError)&&c.unshift(e.request,e.requestError),(e.response||e.responseError)&&c.push(e.response,e.responseError)});c.length;){var m=c.shift(),h=c.shift();p=p.then(m,h)}return p.success=function(e){return p.then(function(t){e(t.data,t.status,t.headers,r)}),p},p.error=function(e){return p.then(null,function(t){e(t.data,t.status,t.headers,r)}),p},p |
|
|
}function h(){o(arguments,function(e){m[e]=function(t,n){return m(u(n||{},{method:e,url:t}))}})}function f(){o(arguments,function(e){m[e]=function(t,n,i){return m(u(i||{},{method:e,url:t,data:n}))}})}function g(i,o,s){function l(e,n,i,a){function o(){u(n,e,i,a)}h&&(on(e)?h.put($,[e,n,tn(i),a]):h.remove($)),t?c.$applyAsync(o):(o(),c.$$phase||c.$apply())}function u(e,t,n,a){t=Math.max(t,0),(on(t)?g.resolve:g.reject)({data:e,status:t,headers:nn(n),config:i,statusText:a})}function p(){var e=m.pendingRequests.indexOf(i);-1!==e&&m.pendingRequests.splice(e,1)}var h,f,g=d.defer(),b=g.promise,$=w(i.url,i.params);if(m.pendingRequests.push(i),b.then(p,p),!i.cache&&!e.cache||i.cache===!1||"GET"!==i.method&&"JSONP"!==i.method||(h=v(i.cache)?i.cache:v(e.cache)?e.cache:C),h)if(f=h.get($),y(f)){if(E(f))return f.then(p,p),f;na(f)?u(f[1],f[0],O(f[2]),f[3]):u(f,200,{},"OK")}else h.put($,b);if(_(f)){var k=Qn(i.url)?r.cookies()[i.xsrfCookieName||e.xsrfCookieName]:n;k&&(s[i.xsrfHeaderName||e.xsrfHeaderName]=k),a(i.method,$,o,l,s,i.timeout,i.withCredentials,i.responseType)}return b}function w(e,t){if(!t)return e;var n=[];return s(t,function(e,t){null===e||_(e)||(na(e)||(e=[e]),o(e,function(e){v(e)&&(e=$(e)?e.toISOString():H(e)),n.push(X(t)+"="+X(e))}))}),n.length>0&&(e+=(-1==e.indexOf("?")?"?":"&")+n.join("&")),e}var C=l("$http"),S=[];return o(i,function(e){S.unshift(b(e)?p.get(e):p.invoke(e))}),m.pendingRequests=[],h("get","delete","head","jsonp"),f("post","put","patch"),m.defaults=e,m}]}function sn(){return new e.XMLHttpRequest}function ln(){this.$get=["$browser","$window","$document",function(e,t,n){return cn(e,sn,e.defer,t.angular.callbacks,n[0])}]}function cn(e,t,n,i,a){function r(e,t,n){var o=a.createElement("script"),r=null;return o.type="text/javascript",o.src=e,o.async=!0,r=function(e){ya(o,"load",r),ya(o,"error",r),a.body.removeChild(o),o=null;var s=-1,l="unknown";e&&("load"!==e.type||i[t].called||(e={type:"error"}),l=e.type,s="error"===e.type?404:200),n&&n(s,l)},_a(o,"load",r),_a(o,"error",r),a.body.appendChild(o),r}return function(a,s,l,c,d,u,p,m){function f(){v&&v(),b&&b.abort()}function g(t,i,a,o,r){k&&n.cancel(k),v=b=null,t(i,a,o,r),e.$$completeOutstandingRequest(h)}if(e.$$incOutstandingRequestCount(),s=s||e.url(),"jsonp"==Ri(a)){var _="_"+(i.counter++).toString(36);i[_]=function(e){i[_].data=e,i[_].called=!0};var v=r(s.replace("JSON_CALLBACK","angular.callbacks."+_),_,function(e,t){g(c,e,i[_].data,"",t),i[_]=h})}else{var b=t();b.open(a,s,!0),o(d,function(e,t){y(e)&&b.setRequestHeader(t,e)}),b.onload=function(){var e=b.statusText||"",t="response"in b?b.response:b.responseText,n=1223===b.status?204:b.status;0===n&&(n=t?200:"file"==Jn(s).protocol?404:0),g(c,n,t,b.getAllResponseHeaders(),e)};var w=function(){g(c,-1,null,null,"")};if(b.onerror=w,b.onabort=w,p&&(b.withCredentials=!0),m)try{b.responseType=m}catch($){if("json"!==m)throw $}b.send(l||null)}if(u>0)var k=n(f,u);else E(u)&&u.then(f)}}function dn(){var e="{{",t="}}";this.startSymbol=function(t){return t?(e=t,this):e},this.endSymbol=function(e){return e?(t=e,this):t},this.$get=["$parse","$exceptionHandler","$sce",function(n,i,a){function o(e){return"\\\\\\"+e}function r(o,r,p,m){function h(n){return n.replace(c,e).replace(d,t)}function f(e){try{return T(A(e))}catch(t){var n=Wa("interr","Can't interpolate: {0}\n{1}",o,t.toString());i(n)}}m=!!m;for(var g,y,v,b=0,w=[],$=[],C=o.length,S=[],M=[];C>b;){if(-1==(g=o.indexOf(e,b))||-1==(y=o.indexOf(t,g+s))){b!==C&&S.push(h(o.substring(b)));break}b!==g&&S.push(h(o.substring(b,g))),v=o.substring(g+s,y),w.push(v),$.push(n(v,f)),b=y+l,M.push(S.length),S.push("")}if(p&&S.length>1)throw Wa("noconcat","Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce",o);if(!r||w.length){var x=function(e){for(var t=0,n=w.length;n>t;t++){if(m&&_(e[t]))return;S[M[t]]=e[t]}return S.join("")},A=function(e){return p?a.getTrusted(p,e):a.valueOf(e)},T=function(e){if(null==e)return"";switch(typeof e){case"string":break;case"number":e=""+e;break;default:e=H(e)}return e};return u(function(e){var t=0,n=w.length,a=new Array(n);try{for(;n>t;t++)a[t]=$[t](e);return x(a)}catch(r){var s=Wa("interr","Can't interpolate: {0}\n{1}",o,r.toString());i(s)}},{exp:o,expressions:w,$$watchDelegate:function(e,t,n){var i;return e.$watchGroup($,function(n,a){var o=x(n);k(t)&&t.call(this,o,n!==a?i:o,e),i=o},n)}})}}var s=e.length,l=t.length,c=new RegExp(e.replace(/./g,o),"g"),d=new RegExp(t.replace(/./g,o),"g");return r.startSymbol=function(){return e},r.endSymbol=function(){return t},r}]}function un(){this.$get=["$rootScope","$window","$q","$$q",function(e,t,n,i){function a(a,r,s,l){var c=t.setInterval,d=t.clearInterval,u=0,p=y(l)&&!l,m=(p?i:n).defer(),h=m.promise;return s=y(s)?s:0,h.then(null,null,a),h.$$intervalId=c(function(){m.notify(u++),s>0&&u>=s&&(m.resolve(u),d(h.$$intervalId),delete o[h.$$intervalId]),p||e.$apply()},r),o[h.$$intervalId]=m,h}var o={};return a.cancel=function(e){return e&&e.$$intervalId in o?(o[e.$$intervalId].reject("canceled"),t.clearInterval(e.$$intervalId),delete o[e.$$intervalId],!0):!1},a}]}function pn(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"¤",posSuf:"",negPre:"(¤",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),SHORTMONTH:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),DAY:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),SHORTDAY:"Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(","),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(e){return 1===e?"one":"other"}}}}function mn(e){for(var t=e.split("/"),n=t.length;n--;)t[n]=K(t[n]);return t.join("/")}function hn(e,t,n){var i=Jn(e,n);t.$$protocol=i.protocol,t.$$host=i.hostname,t.$$port=p(i.port)||Ka[i.protocol]||null}function fn(e,t,n){var i="/"!==e.charAt(0);i&&(e="/"+e);var a=Jn(e,n);t.$$path=decodeURIComponent(i&&"/"===a.pathname.charAt(0)?a.pathname.substring(1):a.pathname),t.$$search=W(a.search),t.$$hash=decodeURIComponent(a.hash),t.$$path&&"/"!=t.$$path.charAt(0)&&(t.$$path="/"+t.$$path)}function gn(e,t){return 0===t.indexOf(e)?t.substr(e.length):void 0}function _n(e){var t=e.indexOf("#");return-1==t?e:e.substr(0,t)}function yn(e){return e.substr(0,_n(e).lastIndexOf("/")+1)}function vn(e){return e.substring(0,e.indexOf("/",e.indexOf("//")+2))}function bn(e,t){this.$$html5=!0,t=t||"";var i=yn(e);hn(e,this,e),this.$$parse=function(t){var n=gn(i,t);if(!b(n))throw Xa("ipthprfx",'Invalid url "{0}", missing path prefix "{1}".',t,i);fn(n,this,e),this.$$path||(this.$$path="/"),this.$$compose()},this.$$compose=function(){var e=G(this.$$search),t=this.$$hash?"#"+K(this.$$hash):"";this.$$url=mn(this.$$path)+(e?"?"+e:"")+t,this.$$absUrl=i+this.$$url.substr(1)},this.$$parseLinkUrl=function(a,o){if(o&&"#"===o[0])return this.hash(o.slice(1)),!0;var r,s,l;return(r=gn(e,a))!==n?(s=r,l=(r=gn(t,r))!==n?i+(gn("/",r)||r):e+s):(r=gn(i,a))!==n?l=i+r:i==a+"/"&&(l=i),l&&this.$$parse(l),!!l}}function wn(e,t){var n=yn(e);hn(e,this,e),this.$$parse=function(i){function a(e,t,n){var i,a=/^\/[A-Z]:(\/.*)/;return 0===t.indexOf(n)&&(t=t.replace(n,"")),a.exec(t)?e:(i=a.exec(e),i?i[1]:e)}var o=gn(e,i)||gn(n,i),r="#"==o.charAt(0)?gn(t,o):this.$$html5?o:"";if(!b(r))throw Xa("ihshprfx",'Invalid url "{0}", missing hash prefix "{1}".',i,t);fn(r,this,e),this.$$path=a(this.$$path,r,e),this.$$compose()},this.$$compose=function(){var n=G(this.$$search),i=this.$$hash?"#"+K(this.$$hash):"";this.$$url=mn(this.$$path)+(n?"?"+n:"")+i,this.$$absUrl=e+(this.$$url?t+this.$$url:"")},this.$$parseLinkUrl=function(t){return _n(e)==_n(t)?(this.$$parse(t),!0):!1}}function $n(e,t){this.$$html5=!0,wn.apply(this,arguments);var n=yn(e);this.$$parseLinkUrl=function(i,a){if(a&&"#"===a[0])return this.hash(a.slice(1)),!0;var o,r;return e==_n(i)?o=i:(r=gn(n,i))?o=e+t+r:n===i+"/"&&(o=n),o&&this.$$parse(o),!!o},this.$$compose=function(){var n=G(this.$$search),i=this.$$hash?"#"+K(this.$$hash):"";this.$$url=mn(this.$$path)+(n?"?"+n:"")+i,this.$$absUrl=e+t+this.$$url}}function kn(e){return function(){return this[e]}}function Cn(e,t){return function(n){return _(n)?this[e]:(this[e]=t(n),this.$$compose(),this)}}function Sn(){var t="",n={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(e){return y(e)?(t=e,this):t},this.html5Mode=function(e){return T(e)?(n.enabled=e,this):v(e)?(T(e.enabled)&&(n.enabled=e.enabled),T(e.requireBase)&&(n.requireBase=e.requireBase),T(e.rewriteLinks)&&(n.rewriteLinks=e.rewriteLinks),this):n},this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(i,a,o,r){function s(e,t,n){var i=c.url(),o=c.$$state;try{a.url(e,t,n),c.$$state=a.state()}catch(r){throw c.url(i),c.$$state=o,r}}function l(e,t){i.$broadcast("$locationChangeSuccess",c.absUrl(),e,c.$$state,t)}var c,d,u,p=a.baseHref(),m=a.url();if(n.enabled){if(!p&&n.requireBase)throw Xa("nobase","$location in HTML5 mode requires a <base> tag to be present!");u=vn(m)+(p||"/"),d=o.history?bn:$n}else u=_n(m),d=wn;c=new d(u,"#"+t),c.$$parseLinkUrl(m,m),c.$$state=a.state();var h=/^\s*(javascript|mailto):/i;r.on("click",function(t){if(n.rewriteLinks&&!t.ctrlKey&&!t.metaKey&&2!=t.which){for(var o=zi(t.target);"a"!==P(o[0]);)if(o[0]===r[0]||!(o=o.parent())[0])return;var s=o.prop("href"),l=o.attr("href")||o.attr("xlink:href");v(s)&&"[object SVGAnimatedString]"===s.toString()&&(s=Jn(s.animVal).href),h.test(s)||!s||o.attr("target")||t.isDefaultPrevented()||c.$$parseLinkUrl(s,l)&&(t.preventDefault(),c.absUrl()!=a.url()&&(i.$apply(),e.angular["ff-684208-preventDefault"]=!0))}}),c.absUrl()!=m&&a.url(c.absUrl(),!0);var f=!0;return a.onUrlChange(function(e,t){i.$evalAsync(function(){var n=c.absUrl(),a=c.$$state;c.$$parse(e),c.$$state=t,i.$broadcast("$locationChangeStart",e,n,t,a).defaultPrevented?(c.$$parse(n),c.$$state=a,s(n,!1,a)):(f=!1,l(n,a))}),i.$$phase||i.$digest()}),i.$watch(function(){var e=a.url(),t=a.state(),n=c.$$replace,r=e!==c.absUrl()||c.$$html5&&o.history&&t!==c.$$state;(f||r)&&(f=!1,i.$evalAsync(function(){i.$broadcast("$locationChangeStart",c.absUrl(),e,c.$$state,t).defaultPrevented?(c.$$parse(e),c.$$state=t):(r&&s(c.absUrl(),n,t===c.$$state?null:c.$$state),l(e,t))})),c.$$replace=!1}),c}]}function Mn(){var e=!0,t=this;this.debugEnabled=function(t){return y(t)?(e=t,this):e},this.$get=["$window",function(n){function i(e){return e instanceof Error&&(e.stack?e=e.message&&-1===e.stack.indexOf(e.message)?"Error: "+e.message+"\n"+e.stack:e.stack:e.sourceURL&&(e=e.message+"\n"+e.sourceURL+":"+e.line)),e}function a(e){var t=n.console||{},a=t[e]||t.log||h,r=!1;try{r=!!a.apply}catch(s){}return r?function(){var e=[];return o(arguments,function(t){e.push(i(t))}),a.apply(t,e)}:function(e,t){a(e,null==t?"":t)}}return{log:a("log"),info:a("info"),warn:a("warn"),error:a("error"),debug:function(){var n=a("debug");return function(){e&&n.apply(t,arguments)}}()}}]}function xn(e,t){if("__defineGetter__"===e||"__defineSetter__"===e||"__lookupGetter__"===e||"__lookupSetter__"===e||"__proto__"===e)throw Ya("isecfld","Attempting to access a disallowed field in Angular expressions! Expression: {0}",t);return e}function An(e,t){if(e){if(e.constructor===e)throw Ya("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",t);if(e.window===e)throw Ya("isecwindow","Referencing the Window in Angular expressions is disallowed! Expression: {0}",t);if(e.children&&(e.nodeName||e.prop&&e.attr&&e.find))throw Ya("isecdom","Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}",t);if(e===Object)throw Ya("isecobj","Referencing Object in Angular expressions is disallowed! Expression: {0}",t)}return e}function Tn(e,t){if(e){if(e.constructor===e)throw Ya("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",t);if(e===Ja||e===Qa||e===eo)throw Ya("isecff","Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}",t)}}function En(e){return e.constant}function In(e,t,n,i){An(e,i);for(var a,o=t.split("."),r=0;o.length>1;r++){a=xn(o.shift(),i);var s=An(e[a],i);s||(s={},e[a]=s),e=s}return a=xn(o.shift(),i),An(e[a],i),e[a]=n,n}function Dn(e){return"constructor"==e}function Pn(e,t,i,a,o,r,s){xn(e,r),xn(t,r),xn(i,r),xn(a,r),xn(o,r);var l=function(e){return An(e,r)},c=s||Dn(e)?l:f,d=s||Dn(t)?l:f,u=s||Dn(i)?l:f,p=s||Dn(a)?l:f,m=s||Dn(o)?l:f;return function(r,s){var l=s&&s.hasOwnProperty(e)?s:r;return null==l?l:(l=c(l[e]),t?null==l?n:(l=d(l[t]),i?null==l?n:(l=u(l[i]),a?null==l?n:(l=p(l[a]),o?null==l?n:l=m(l[o]):l):l):l):l)}}function Nn(e,t){return function(n,i){return e(n,i,An,t)}}function Ln(e,t,i){var a=t.expensiveChecks,r=a?so:ro,s=r[e];if(s)return s;var l=e.split("."),c=l.length;if(t.csp)s=6>c?Pn(l[0],l[1],l[2],l[3],l[4],i,a):function(e,t){var o,r=0;do o=Pn(l[r++],l[r++],l[r++],l[r++],l[r++],i,a)(e,t),t=n,e=o;while(c>r);return o};else{var d="";a&&(d+="s = eso(s, fe);\nl = eso(l, fe);\n");var u=a;o(l,function(e,t){xn(e,i);var n=(t?"s":'((l&&l.hasOwnProperty("'+e+'"))?l:s)')+"."+e;(a||Dn(e))&&(n="eso("+n+", fe)",u=!0),d+="if(s == null) return undefined;\ns="+n+";\n"}),d+="return s;";var p=new Function("s","l","eso","fe",d);p.toString=g(d),u&&(p=Nn(p,i)),s=p}return s.sharedGetter=!0,s.assign=function(t,n){return In(t,e,n,e)},r[e]=s,s}function On(e){return k(e.valueOf)?e.valueOf():lo.call(e)}function Un(){var e=lt(),t=lt();this.$get=["$filter","$sniffer",function(n,i){function a(e){var t=e;return e.sharedGetter&&(t=function(t,n){return e(t,n)},t.literal=e.literal,t.constant=e.constant,t.assign=e.assign),t}function r(e,t){for(var n=0,i=e.length;i>n;n++){var a=e[n];a.constant||(a.inputs?r(a.inputs,t):-1===t.indexOf(a)&&t.push(a))}return t}function s(e,t){return null==e||null==t?e===t:"object"==typeof e&&(e=On(e),"object"==typeof e)?!1:e===t||e!==e&&t!==t}function l(e,t,n,i){var a,o=i.$$inputs||(i.$$inputs=r(i.inputs,[]));if(1===o.length){var l=s;return o=o[0],e.$watch(function(e){var t=o(e);return s(t,l)||(a=i(e),l=t&&On(t)),a},t,n)}for(var c=[],d=0,u=o.length;u>d;d++)c[d]=s;return e.$watch(function(e){for(var t=!1,n=0,r=o.length;r>n;n++){var l=o[n](e);(t||(t=!s(l,c[n])))&&(c[n]=l&&On(l))}return t&&(a=i(e)),a},t,n)}function c(e,t,n,i){var a,o;return a=e.$watch(function(e){return i(e)},function(e,n,i){o=e,k(t)&&t.apply(this,arguments),y(e)&&i.$$postDigest(function(){y(o)&&a()})},n)}function d(e,t,n,i){function a(e){var t=!0;return o(e,function(e){y(e)||(t=!1)}),t}var r,s;return r=e.$watch(function(e){return i(e)},function(e,n,i){s=e,k(t)&&t.call(this,e,n,i),a(e)&&i.$$postDigest(function(){a(s)&&r()})},n)}function u(e,t,n,i){var a;return a=e.$watch(function(e){return i(e)},function(){k(t)&&t.apply(this,arguments),a()},n)}function p(e,t){if(!t)return e;var n=function(n,i){var a=e(n,i),o=t(a,n,i);return y(a)||t.$stateful?o:a};return e.$$watchDelegate&&e.$$watchDelegate!==l?n.$$watchDelegate=e.$$watchDelegate:t.$stateful||(n.$$watchDelegate=l,n.inputs=[e]),n}var m={csp:i.csp,expensiveChecks:!1},f={csp:i.csp,expensiveChecks:!0};return function(i,o,r){var s,g,_;switch(typeof i){case"string":_=i=i.trim();var y=r?t:e;if(s=y[_],!s){":"===i.charAt(0)&&":"===i.charAt(1)&&(g=!0,i=i.substring(2));var v=r?f:m,b=new ao(v),w=new oo(b,n,v);s=w.parse(i),s.constant?s.$$watchDelegate=u:g?(s=a(s),s.$$watchDelegate=s.literal?d:c):s.inputs&&(s.$$watchDelegate=l),y[_]=s}return p(s,o);case"function":return p(i,o);default:return p(h,o)}}}]}function Bn(){this.$get=["$rootScope","$exceptionHandler",function(e,t){return Fn(function(t){e.$evalAsync(t)},t)}]}function Rn(){this.$get=["$browser","$exceptionHandler",function(e,t){return Fn(function(t){e.defer(t)},t)}]}function Fn(e,t){function a(e,t,n){function i(t){return function(n){a||(a=!0,t.call(e,n))}}var a=!1;return[i(t),i(n)]}function r(){this.$$state={status:0}}function s(e,t){return function(n){t.call(e,n)}}function l(e){var i,a,o;o=e.pending,e.processScheduled=!1,e.pending=n;for(var r=0,s=o.length;s>r;++r){a=o[r][0],i=o[r][e.status];try{k(i)?a.resolve(i(e.value)):1===e.status?a.resolve(e.value):a.reject(e.value)}catch(l){a.reject(l),t(l)}}}function c(t){!t.processScheduled&&t.pending&&(t.processScheduled=!0,e(function(){l(t)}))}function d(){this.promise=new r,this.resolve=s(this,this.resolve),this.reject=s(this,this.reject),this.notify=s(this,this.notify)}function u(e){var t=new d,n=0,i=na(e)?[]:{};return o(e,function(e,a){n++,_(e).then(function(e){i.hasOwnProperty(a)||(i[a]=e,--n||t.resolve(i))},function(e){i.hasOwnProperty(a)||t.reject(e)})}),0===n&&t.resolve(i),t.promise}var p=i("$q",TypeError),m=function(){return new d};r.prototype={then:function(e,t,n){var i=new d;return this.$$state.pending=this.$$state.pending||[],this.$$state.pending.push([i,e,t,n]),this.$$state.status>0&&c(this.$$state),i.promise},"catch":function(e){return this.then(null,e)},"finally":function(e,t){return this.then(function(t){return g(t,!0,e)},function(t){return g(t,!1,e)},t)}},d.prototype={resolve:function(e){this.promise.$$state.status||(e===this.promise?this.$$reject(p("qcycle","Expected promise to be resolved with value other than itself '{0}'",e)):this.$$resolve(e))},$$resolve:function(e){var n,i;i=a(this,this.$$resolve,this.$$reject);try{(v(e)||k(e))&&(n=e&&e.then),k(n)?(this.promise.$$state.status=-1,n.call(e,i[0],i[1],this.notify)):(this.promise.$$state.value=e,this.promise.$$state.status=1,c(this.promise.$$state))}catch(o){i[1](o),t(o)}},reject:function(e){this.promise.$$state.status||this.$$reject(e)},$$reject:function(e){this.promise.$$state.value=e,this.promise.$$state.status=2,c(this.promise.$$state)},notify:function(n){var i=this.promise.$$state.pending;this.promise.$$state.status<=0&&i&&i.length&&e(function(){for(var e,a,o=0,r=i.length;r>o;o++){a=i[o][0],e=i[o][3];try{a.notify(k(e)?e(n):n)}catch(s){t(s)}}})}};var h=function(e){var t=new d;return t.reject(e),t.promise},f=function(e,t){var n=new d;return t?n.resolve(e):n.reject(e),n.promise},g=function(e,t,n){var i=null;try{k(n)&&(i=n())}catch(a){return f(a,!1)}return E(i)?i.then(function(){return f(e,t)},function(e){return f(e,!1)}):f(e,t)},_=function(e,t,n,i){var a=new d;return a.resolve(e),a.promise.then(t,n,i)},y=function b(e){function t(e){i.resolve(e)}function n(e){i.reject(e)}if(!k(e))throw p("norslvr","Expected resolverFn, got '{0}'",e);if(!(this instanceof b))return new b(e);var i=new d;return e(t,n),i.promise};return y.defer=m,y.reject=h,y.when=_,y.all=u,y}function qn(){this.$get=["$window","$timeout",function(e,t){var n=e.requestAnimationFrame||e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame,i=e.cancelAnimationFrame||e.webkitCancelAnimationFrame||e.mozCancelAnimationFrame||e.webkitCancelRequestAnimationFrame,a=!!n,o=a?function(e){var t=n(e);return function(){i(t)}}:function(e){var n=t(e,16.66,!1);return function(){t.cancel(n)}};return o.supported=a,o}]}function Hn(){var e=10,t=i("$rootScope"),n=null,r=null;this.digestTtl=function(t){return arguments.length&&(e=t),e},this.$get=["$injector","$exceptionHandler","$parse","$browser",function(i,s,l,d){function u(){this.$id=c(),this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null,this.$root=this,this.$$destroyed=!1,this.$$listeners={},this.$$listenerCount={},this.$$isolateBindings=null}function p(e){if(w.$$phase)throw t("inprog","{0} already in progress",w.$$phase);w.$$phase=e}function m(){w.$$phase=null}function f(e,t,n){do e.$$listenerCount[n]-=t,0===e.$$listenerCount[n]&&delete e.$$listenerCount[n];while(e=e.$parent)}function g(){}function y(){for(;S.length;)try{S.shift()()}catch(e){s(e)}r=null}function b(){null===r&&(r=d.defer(function(){w.$apply(y)}))}u.prototype={constructor:u,$new:function(e,t){function n(){i.$$destroyed=!0}var i;return t=t||this,e?(i=new u,i.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=function(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null,this.$$listeners={},this.$$listenerCount={},this.$id=c(),this.$$ChildScope=null},this.$$ChildScope.prototype=this),i=new this.$$ChildScope),i.$parent=t,i.$$prevSibling=t.$$childTail,t.$$childHead?(t.$$childTail.$$nextSibling=i,t.$$childTail=i):t.$$childHead=t.$$childTail=i,(e||t!=this)&&i.$on("$destroy",n),i},$watch:function(e,t,i){var a=l(e);if(a.$$watchDelegate)return a.$$watchDelegate(this,t,i,a);var o=this,r=o.$$watchers,s={fn:t,last:g,get:a,exp:e,eq:!!i};return n=null,k(t)||(s.fn=h),r||(r=o.$$watchers=[]),r.unshift(s),function(){N(r,s),n=null}},$watchGroup:function(e,t){function n(){l=!1,c?(c=!1,t(a,a,s)):t(a,i,s)}var i=new Array(e.length),a=new Array(e.length),r=[],s=this,l=!1,c=!0;if(!e.length){var d=!0;return s.$evalAsync(function(){d&&t(a,a,s)}),function(){d=!1}}return 1===e.length?this.$watch(e[0],function(e,n,o){a[0]=e,i[0]=n,t(a,e===n?a:i,o)}):(o(e,function(e,t){var o=s.$watch(e,function(e,o){a[t]=e,i[t]=o,l||(l=!0,s.$evalAsync(n))});r.push(o)}),function(){for(;r.length;)r.shift()()})},$watchCollection:function(e,t){function n(e){o=e;var t,n,i,s,l;if(!_(o)){if(v(o))if(a(o)){r!==m&&(r=m,g=r.length=0,u++),t=o.length,g!==t&&(u++,r.length=g=t);for(var c=0;t>c;c++)l=r[c],s=o[c],i=l!==l&&s!==s,i||l===s||(u++,r[c]=s)}else{r!==h&&(r=h={},g=0,u++),t=0;for(n in o)o.hasOwnProperty(n)&&(t++,s=o[n],l=r[n],n in r?(i=l!==l&&s!==s,i||l===s||(u++,r[n]=s)):(g++,r[n]=s,u++));if(g>t){u++;for(n in r)o.hasOwnProperty(n)||(g--,delete r[n])}}else r!==o&&(r=o,u++);return u}}function i(){if(f?(f=!1,t(o,o,c)):t(o,s,c),d)if(v(o))if(a(o)){s=new Array(o.length);for(var e=0;e<o.length;e++)s[e]=o[e]}else{s={};for(var n in o)Fi.call(o,n)&&(s[n]=o[n])}else s=o}n.$stateful=!0;var o,r,s,c=this,d=t.length>1,u=0,p=l(e,n),m=[],h={},f=!0,g=0;return this.$watch(p,i)},$digest:function(){var i,a,o,l,c,u,h,f,_,v,b,S=e,M=this,x=[];p("$digest"),d.$$checkUrlChange(),this===w&&null!==r&&(d.defer.cancel(r),y()),n=null;do{for(u=!1,f=M;$.length;){try{b=$.shift(),b.scope.$eval(b.expression)}catch(A){s(A)}n=null}e:do{if(l=f.$$watchers)for(c=l.length;c--;)try{if(i=l[c])if((a=i.get(f))===(o=i.last)||(i.eq?U(a,o):"number"==typeof a&&"number"==typeof o&&isNaN(a)&&isNaN(o))){if(i===n){u=!1;break e}}else u=!0,n=i,i.last=i.eq?L(a,null):a,i.fn(a,o===g?a:o,f),5>S&&(_=4-S,x[_]||(x[_]=[]),v=k(i.exp)?"fn: "+(i.exp.name||i.exp.toString()):i.exp,v+="; newVal: "+H(a)+"; oldVal: "+H(o),x[_].push(v))}catch(A){s(A)}if(!(h=f.$$childHead||f!==M&&f.$$nextSibling))for(;f!==M&&!(h=f.$$nextSibling);)f=f.$parent}while(f=h);if((u||$.length)&&!S--)throw m(),t("infdig","{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}",e,H(x))}while(u||$.length);for(m();C.length;)try{C.shift()()}catch(A){s(A)}},$destroy:function(){if(!this.$$destroyed){var e=this.$parent;if(this.$broadcast("$destroy"),this.$$destroyed=!0,this!==w){for(var t in this.$$listenerCount)f(this,this.$$listenerCount[t],t);e.$$childHead==this&&(e.$$childHead=this.$$nextSibling),e.$$childTail==this&&(e.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=h,this.$on=this.$watch=this.$watchGroup=function(){return h},this.$$listeners={},this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers=null}}},$eval:function(e,t){return l(e)(this,t)},$evalAsync:function(e){w.$$phase||$.length||d.defer(function(){$.length&&w.$digest()}),$.push({scope:this,expression:e})},$$postDigest:function(e){C.push(e)},$apply:function(e){try{return p("$apply"),this.$eval(e)}catch(t){s(t)}finally{m();try{w.$digest()}catch(t){throw s(t),t}}},$applyAsync:function(e){function t(){n.$eval(e)}var n=this;e&&S.push(t),b()},$on:function(e,t){var n=this.$$listeners[e];n||(this.$$listeners[e]=n=[]),n.push(t);var i=this;do i.$$listenerCount[e]||(i.$$listenerCount[e]=0),i.$$listenerCount[e]++;while(i=i.$parent);var a=this;return function(){var i=n.indexOf(t);-1!==i&&(n[i]=null,f(a,1,e))}},$emit:function(e){var t,n,i,a=[],o=this,r=!1,l={name:e,targetScope:o,stopPropagation:function(){r=!0},preventDefault:function(){l.defaultPrevented=!0},defaultPrevented:!1},c=B([l],arguments,1);do{for(t=o.$$listeners[e]||a,l.currentScope=o,n=0,i=t.length;i>n;n++)if(t[n])try{t[n].apply(null,c)}catch(d){s(d)}else t.splice(n,1),n--,i--;if(r)return l.currentScope=null,l;o=o.$parent}while(o);return l.currentScope=null,l},$broadcast:function(e){var t=this,n=t,i=t,a={name:e,targetScope:t,preventDefault:function(){a.defaultPrevented=!0},defaultPrevented:!1};if(!t.$$listenerCount[e])return a;for(var o,r,l,c=B([a],arguments,1);n=i;){for(a.currentScope=n,o=n.$$listeners[e]||[],r=0,l=o.length;l>r;r++)if(o[r])try{o[r].apply(null,c)}catch(d){s(d)}else o.splice(r,1),r--,l--;if(!(i=n.$$listenerCount[e]&&n.$$childHead||n!==t&&n.$$nextSibling))for(;n!==t&&!(i=n.$$nextSibling);)n=n.$parent}return a.currentScope=null,a}};var w=new u,$=w.$$asyncQueue=[],C=w.$$postDigestQueue=[],S=w.$$applyAsyncQueue=[];return w}]}function jn(){var e=/^\s*(https?|ftp|mailto|tel|file):/,t=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(t){return y(t)?(e=t,this):e},this.imgSrcSanitizationWhitelist=function(e){return y(e)?(t=e,this):t},this.$get=function(){return function(n,i){var a,o=i?t:e;return a=Jn(n).href,""===a||a.match(o)?n:"unsafe:"+a}}}function Vn(e){if("self"===e)return e;if(b(e)){if(e.indexOf("***")>-1)throw co("iwcard","Illegal sequence *** in string matcher. String: {0}",e);return e=aa(e).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*"),new RegExp("^"+e+"$")}if(C(e))return new RegExp("^"+e.source+"$");throw co("imatcher",'Matchers may only be "self", string patterns or RegExp objects')}function zn(e){var t=[];return y(e)&&o(e,function(e){t.push(Vn(e))}),t}function Wn(){this.SCE_CONTEXTS=uo;var e=["self"],t=[];this.resourceUrlWhitelist=function(t){return arguments.length&&(e=zn(t)),e},this.resourceUrlBlacklist=function(e){return arguments.length&&(t=zn(e)),t},this.$get=["$injector",function(i){function a(e,t){return"self"===e?Qn(t):!!e.exec(t.href)}function o(n){var i,o,r=Jn(n.toString()),s=!1;for(i=0,o=e.length;o>i;i++)if(a(e[i],r)){s=!0;break}if(s)for(i=0,o=t.length;o>i;i++)if(a(t[i],r)){s=!1;break}return s}function r(e){var t=function(e){this.$$unwrapTrustedValue=function(){return e}};return e&&(t.prototype=new e),t.prototype.valueOf=function(){return this.$$unwrapTrustedValue()},t.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()},t}function s(e,t){var i=p.hasOwnProperty(e)?p[e]:null;if(!i)throw co("icontext","Attempted to trust a value in invalid context. Context: {0}; Value: {1}",e,t);if(null===t||t===n||""===t)return t;if("string"!=typeof t)throw co("itype","Attempted to trust a non-string value in a content requiring a string: Context: {0}",e);return new i(t)}function l(e){return e instanceof u?e.$$unwrapTrustedValue():e}function c(e,t){if(null===t||t===n||""===t)return t;var i=p.hasOwnProperty(e)?p[e]:null;if(i&&t instanceof i)return t.$$unwrapTrustedValue();if(e===uo.RESOURCE_URL){if(o(t))return t;throw co("insecurl","Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}",t.toString())}if(e===uo.HTML)return d(t);throw co("unsafe","Attempting to use an unsafe value in a safe context.")}var d=function(){throw co("unsafe","Attempting to use an unsafe value in a safe context.")};i.has("$sanitize")&&(d=i.get("$sanitize"));var u=r(),p={};return p[uo.HTML]=r(u),p[uo.CSS]=r(u),p[uo.URL]=r(u),p[uo.JS]=r(u),p[uo.RESOURCE_URL]=r(p[uo.URL]),{trustAs:s,getTrusted:c,valueOf:l}}]}function Gn(){var e=!0;this.enabled=function(t){return arguments.length&&(e=!!t),e},this.$get=["$parse","$sceDelegate",function(t,n){if(e&&8>Vi)throw co("iequirks","Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks mode. You can fix this by adding the text <!doctype html> to the top of your HTML document. See http://docs.angularjs.org/api/ng.$sce for more information.");var i=O(uo);i.isEnabled=function(){return e},i.trustAs=n.trustAs,i.getTrusted=n.getTrusted,i.valueOf=n.valueOf,e||(i.trustAs=i.getTrusted=function(e,t){return t},i.valueOf=f),i.parseAs=function(e,n){var a=t(n);return a.literal&&a.constant?a:t(n,function(t){return i.getTrusted(e,t)})};var a=i.parseAs,r=i.getTrusted,s=i.trustAs;return o(uo,function(e,t){var n=Ri(t);i[pt("parse_as_"+n)]=function(t){return a(e,t)},i[pt("get_trusted_"+n)]=function(t){return r(e,t)},i[pt("trust_as_"+n)]=function(t){return s(e,t)}}),i}]}function Kn(){this.$get=["$window","$document",function(e,t){var n,i,a={},o=p((/android (\d+)/.exec(Ri((e.navigator||{}).userAgent))||[])[1]),r=/Boxee/i.test((e.navigator||{}).userAgent),s=t[0]||{},l=/^(Moz|webkit|ms)(?=[A-Z])/,c=s.body&&s.body.style,d=!1,u=!1;if(c){for(var m in c)if(i=l.exec(m)){n=i[0],n=n.substr(0,1).toUpperCase()+n.substr(1);break}n||(n="WebkitOpacity"in c&&"webkit"),d=!!("transition"in c||n+"Transition"in c),u=!!("animation"in c||n+"Animation"in c),!o||d&&u||(d=b(s.body.style.webkitTransition),u=b(s.body.style.webkitAnimation))}return{history:!(!e.history||!e.history.pushState||4>o||r),hasEvent:function(e){if("input"==e&&9==Vi)return!1;if(_(a[e])){var t=s.createElement("div");a[e]="on"+e in t}return a[e]},csp:oa(),vendorPrefix:n,transitions:d,animations:u,android:o}}]}function Xn(){this.$get=["$templateCache","$http","$q",function(e,t,n){function i(a,o){function r(){if(s.totalPendingRequests--,!o)throw Ra("tpload","Failed to load template: {0}",a);return n.reject()}var s=i;s.totalPendingRequests++;var l=t.defaults&&t.defaults.transformResponse;if(na(l)){var c=l;l=[];for(var d=0;d<c.length;++d){var u=c[d];u!==en&&l.push(u)}}else l===en&&(l=null);var p={cache:e,transformResponse:l};return t.get(a,p).then(function(t){var n=t.data;return s.totalPendingRequests--,e.put(a,n),n},r)}return i.totalPendingRequests=0,i}]}function Zn(){this.$get=["$rootScope","$browser","$location",function(e,t,n){var i={};return i.findBindings=function(e,t,n){var i=e.getElementsByClassName("ng-binding"),a=[];return o(i,function(e){var i=Qi.element(e).data("$binding");i&&o(i,function(i){if(n){var o=new RegExp("(^|\\s)"+aa(t)+"(\\s|\\||$)");o.test(i)&&a.push(e)}else-1!=i.indexOf(t)&&a.push(e)})}),a},i.findModels=function(e,t,n){for(var i=["ng-","data-ng-","ng\\:"],a=0;a<i.length;++a){var o=n?"=":"*=",r="["+i[a]+"model"+o+'"'+t+'"]',s=e.querySelectorAll(r);if(s.length)return s}},i.getLocation=function(){return n.url()},i.setLocation=function(t){t!==n.url()&&(n.url(t),e.$digest())},i.whenStable=function(e){t.notifyWhenNoOutstandingRequests(e)},i}]}function Yn(){this.$get=["$rootScope","$browser","$q","$$q","$exceptionHandler",function(e,t,n,i,a){function o(o,s,l){var c,d=y(l)&&!l,u=(d?i:n).defer(),p=u.promise;return c=t.defer(function(){try{u.resolve(o())}catch(t){u.reject(t),a(t)}finally{delete r[p.$$timeoutId]}d||e.$apply()},s),p.$$timeoutId=c,r[c]=u,p}var r={};return o.cancel=function(e){return e&&e.$$timeoutId in r?(r[e.$$timeoutId].reject("canceled"),delete r[e.$$timeoutId],t.defer.cancel(e.$$timeoutId)):!1},o}]}function Jn(e){var t=e;return Vi&&(po.setAttribute("href",t),t=po.href),po.setAttribute("href",t),{href:po.href,protocol:po.protocol?po.protocol.replace(/:$/,""):"",host:po.host,search:po.search?po.search.replace(/^\?/,""):"",hash:po.hash?po.hash.replace(/^#/,""):"",hostname:po.hostname,port:po.port,pathname:"/"===po.pathname.charAt(0)?po.pathname:"/"+po.pathname}}function Qn(e){var t=b(e)?Jn(e):e;return t.protocol===mo.protocol&&t.host===mo.host}function ei(){this.$get=g(e)}function ti(e){function t(i,a){if(v(i)){var r={}; |
|
|
return o(i,function(e,n){r[n]=t(n,e)}),r}return e.factory(i+n,a)}var n="Filter";this.register=t,this.$get=["$injector",function(e){return function(t){return e.get(t+n)}}],t("currency",ii),t("date",hi),t("filter",ni),t("json",fi),t("limitTo",gi),t("lowercase",yo),t("number",ai),t("orderBy",_i),t("uppercase",vo)}function ni(){return function(e,t,n){if(!na(e))return e;var i=typeof n,a=[];a.check=function(e,t){for(var n=0;n<a.length;n++)if(!a[n](e,t))return!1;return!0},"function"!==i&&(n="boolean"===i&&n?function(e,t){return Qi.equals(e,t)}:function(e,t){if(e&&t&&"object"==typeof e&&"object"==typeof t){for(var i in e)if("$"!==i.charAt(0)&&Fi.call(e,i)&&n(e[i],t[i]))return!0;return!1}return t=(""+t).toLowerCase(),(""+e).toLowerCase().indexOf(t)>-1});var o=function(e,t){if("string"==typeof t&&"!"===t.charAt(0))return!o(e,t.substr(1));switch(typeof e){case"boolean":case"number":case"string":return n(e,t);case"object":switch(typeof t){case"object":return n(e,t);default:for(var i in e)if("$"!==i.charAt(0)&&o(e[i],t))return!0}return!1;case"array":for(var a=0;a<e.length;a++)if(o(e[a],t))return!0;return!1;default:return!1}};switch(typeof t){case"boolean":case"number":case"string":t={$:t};case"object":for(var r in t)!function(e){"undefined"!=typeof t[e]&&a.push(function(n){return o("$"==e?n:n&&n[e],t[e])})}(r);break;case"function":a.push(t);break;default:return e}for(var s=[],l=0;l<e.length;l++){var c=e[l];a.check(c,l)&&s.push(c)}return s}}function ii(e){var t=e.NUMBER_FORMATS;return function(e,n,i){return _(n)&&(n=t.CURRENCY_SYM),_(i)&&(i=2),null==e?e:oi(e,t.PATTERNS[1],t.GROUP_SEP,t.DECIMAL_SEP,i).replace(/\u00A4/g,n)}}function ai(e){var t=e.NUMBER_FORMATS;return function(e,n){return null==e?e:oi(e,t.PATTERNS[0],t.GROUP_SEP,t.DECIMAL_SEP,n)}}function oi(e,t,n,i,a){if(!isFinite(e)||v(e))return"";var o=0>e;e=Math.abs(e);var r=e+"",s="",l=[],c=!1;if(-1!==r.indexOf("e")){var d=r.match(/([\d\.]+)e(-?)(\d+)/);d&&"-"==d[2]&&d[3]>a+1?(r="0",e=0):(s=r,c=!0)}if(c)a>0&&e>-1&&1>e&&(s=e.toFixed(a));else{var u=(r.split(ho)[1]||"").length;_(a)&&(a=Math.min(Math.max(t.minFrac,u),t.maxFrac)),e=+(Math.round(+(e.toString()+"e"+a)).toString()+"e"+-a),0===e&&(o=!1);var p=(""+e).split(ho),m=p[0];p=p[1]||"";var h,f=0,g=t.lgSize,y=t.gSize;if(m.length>=g+y)for(f=m.length-g,h=0;f>h;h++)(f-h)%y===0&&0!==h&&(s+=n),s+=m.charAt(h);for(h=f;h<m.length;h++)(m.length-h)%g===0&&0!==h&&(s+=n),s+=m.charAt(h);for(;p.length<a;)p+="0";a&&"0"!==a&&(s+=i+p.substr(0,a))}return l.push(o?t.negPre:t.posPre),l.push(s),l.push(o?t.negSuf:t.posSuf),l.join("")}function ri(e,t,n){var i="";for(0>e&&(i="-",e=-e),e=""+e;e.length<t;)e="0"+e;return n&&(e=e.substr(e.length-t)),i+e}function si(e,t,n,i){return n=n||0,function(a){var o=a["get"+e]();return(n>0||o>-n)&&(o+=n),0===o&&-12==n&&(o=12),ri(o,t,i)}}function li(e,t){return function(n,i){var a=n["get"+e](),o=qi(t?"SHORT"+e:e);return i[o][a]}}function ci(e){var t=-1*e.getTimezoneOffset(),n=t>=0?"+":"";return n+=ri(Math[t>0?"floor":"ceil"](t/60),2)+ri(Math.abs(t%60),2)}function di(e){var t=new Date(e,0,1).getDay();return new Date(e,0,(4>=t?5:12)-t)}function ui(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate()+(4-e.getDay()))}function pi(e){return function(t){var n=di(t.getFullYear()),i=ui(t),a=+i-+n,o=1+Math.round(a/6048e5);return ri(o,e)}}function mi(e,t){return e.getHours()<12?t.AMPMS[0]:t.AMPMS[1]}function hi(e){function t(e){var t;if(t=e.match(n)){var i=new Date(0),a=0,o=0,r=t[8]?i.setUTCFullYear:i.setFullYear,s=t[8]?i.setUTCHours:i.setHours;t[9]&&(a=p(t[9]+t[10]),o=p(t[9]+t[11])),r.call(i,p(t[1]),p(t[2])-1,p(t[3]));var l=p(t[4]||0)-a,c=p(t[5]||0)-o,d=p(t[6]||0),u=Math.round(1e3*parseFloat("0."+(t[7]||0)));return s.call(i,l,c,d,u),i}return e}var n=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(n,i,a){var r,s,l="",c=[];if(i=i||"mediumDate",i=e.DATETIME_FORMATS[i]||i,b(n)&&(n=_o.test(n)?p(n):t(n)),w(n)&&(n=new Date(n)),!$(n))return n;for(;i;)s=go.exec(i),s?(c=B(c,s,1),i=c.pop()):(c.push(i),i=null);return a&&"UTC"===a&&(n=new Date(n.getTime()),n.setMinutes(n.getMinutes()+n.getTimezoneOffset())),o(c,function(t){r=fo[t],l+=r?r(n,e.DATETIME_FORMATS):t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),l}}function fi(){return function(e){return H(e,!0)}}function gi(){return function(e,t){if(w(e)&&(e=e.toString()),!na(e)&&!b(e))return e;if(t=1/0===Math.abs(Number(t))?Number(t):p(t),b(e))return t?t>=0?e.slice(0,t):e.slice(t,e.length):"";var n,i,a=[];for(t>e.length?t=e.length:t<-e.length&&(t=-e.length),t>0?(n=0,i=t):(n=e.length+t,i=e.length);i>n;n++)a.push(e[n]);return a}}function _i(e){return function(t,n,i){function o(e,t){for(var i=0;i<n.length;i++){var a=n[i](e,t);if(0!==a)return a}return 0}function r(e,t){return t?function(t,n){return e(n,t)}:e}function s(e,t){var n=typeof e,i=typeof t;return n==i?($(e)&&$(t)&&(e=e.valueOf(),t=t.valueOf()),"string"==n&&(e=e.toLowerCase(),t=t.toLowerCase()),e===t?0:t>e?-1:1):i>n?-1:1}if(!a(t))return t;n=na(n)?n:[n],0===n.length&&(n=["+"]),n=n.map(function(t){var n=!1,i=t||f;if(b(t)){if(("+"==t.charAt(0)||"-"==t.charAt(0))&&(n="-"==t.charAt(0),t=t.substring(1)),""===t)return r(function(e,t){return s(e,t)},n);if(i=e(t),i.constant){var a=i();return r(function(e,t){return s(e[a],t[a])},n)}}return r(function(e,t){return s(i(e),i(t))},n)});for(var l=[],c=0;c<t.length;c++)l.push(t[c]);return l.sort(r(o,i))}}function yi(e){return k(e)&&(e={link:e}),e.restrict=e.restrict||"AC",g(e)}function vi(e,t){e.$name=t}function bi(e,t,i,a,r){var s=this,l=[],c=s.$$parentForm=e.parent().controller("form")||$o;s.$error={},s.$$success={},s.$pending=n,s.$name=r(t.name||t.ngForm||"")(i),s.$dirty=!1,s.$pristine=!0,s.$valid=!0,s.$invalid=!1,s.$submitted=!1,c.$addControl(s),s.$rollbackViewValue=function(){o(l,function(e){e.$rollbackViewValue()})},s.$commitViewValue=function(){o(l,function(e){e.$commitViewValue()})},s.$addControl=function(e){ot(e.$name,"input"),l.push(e),e.$name&&(s[e.$name]=e)},s.$$renameControl=function(e,t){var n=e.$name;s[n]===e&&delete s[n],s[t]=e,e.$name=t},s.$removeControl=function(e){e.$name&&s[e.$name]===e&&delete s[e.$name],o(s.$pending,function(t,n){s.$setValidity(n,null,e)}),o(s.$error,function(t,n){s.$setValidity(n,null,e)}),N(l,e)},Ni({ctrl:this,$element:e,set:function(e,t,n){var i=e[t];if(i){var a=i.indexOf(n);-1===a&&i.push(n)}else e[t]=[n]},unset:function(e,t,n){var i=e[t];i&&(N(i,n),0===i.length&&delete e[t])},parentForm:c,$animate:a}),s.$setDirty=function(){a.removeClass(e,Ho),a.addClass(e,jo),s.$dirty=!0,s.$pristine=!1,c.$setDirty()},s.$setPristine=function(){a.setClass(e,Ho,jo+" "+ko),s.$dirty=!1,s.$pristine=!0,s.$submitted=!1,o(l,function(e){e.$setPristine()})},s.$setUntouched=function(){o(l,function(e){e.$setUntouched()})},s.$setSubmitted=function(){a.addClass(e,ko),s.$submitted=!0,c.$setSubmitted()}}function wi(e){e.$formatters.push(function(t){return e.$isEmpty(t)?t:t.toString()})}function $i(e,t,n,i,a,o){ki(e,t,n,i,a,o),wi(i)}function ki(e,t,n,i,a,o){var r=t[0].placeholder,s={},l=Ri(t[0].type);if(!a.android){var c=!1;t.on("compositionstart",function(){c=!0}),t.on("compositionend",function(){c=!1,d()})}var d=function(e){if(!c){var a=t.val(),o=e&&e.type;if(Vi&&"input"===(e||s).type&&t[0].placeholder!==r)return void(r=t[0].placeholder);"password"===l||n.ngTrim&&"false"===n.ngTrim||(a=ia(a)),(i.$viewValue!==a||""===a&&i.$$hasNativeValidators)&&i.$setViewValue(a,o)}};if(a.hasEvent("input"))t.on("input",d);else{var u,p=function(e){u||(u=o.defer(function(){d(e),u=null}))};t.on("keydown",function(e){var t=e.keyCode;91===t||t>15&&19>t||t>=37&&40>=t||p(e)}),a.hasEvent("paste")&&t.on("paste cut",p)}t.on("change",d),i.$render=function(){t.val(i.$isEmpty(i.$modelValue)?"":i.$viewValue)}}function Ci(e,t){if($(e))return e;if(b(e)){Po.lastIndex=0;var n=Po.exec(e);if(n){var i=+n[1],a=+n[2],o=0,r=0,s=0,l=0,c=di(i),d=7*(a-1);return t&&(o=t.getHours(),r=t.getMinutes(),s=t.getSeconds(),l=t.getMilliseconds()),new Date(i,0,c.getDate()+d,o,r,s,l)}}return 0/0}function Si(e,t){return function(n,i){var a,r;if($(n))return n;if(b(n)){if('"'==n.charAt(0)&&'"'==n.charAt(n.length-1)&&(n=n.substring(1,n.length-1)),xo.test(n))return new Date(n);if(e.lastIndex=0,a=e.exec(n))return a.shift(),r=i?{yyyy:i.getFullYear(),MM:i.getMonth()+1,dd:i.getDate(),HH:i.getHours(),mm:i.getMinutes(),ss:i.getSeconds(),sss:i.getMilliseconds()/1e3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},o(a,function(e,n){n<t.length&&(r[t[n]]=+e)}),new Date(r.yyyy,r.MM-1,r.dd,r.HH,r.mm,r.ss||0,1e3*r.sss||0)}return 0/0}}function Mi(e,t,i,a){return function(o,r,s,l,c,d,u){function p(e){return y(e)?$(e)?e:i(e):n}xi(o,r,s,l),ki(o,r,s,l,c,d);var m,h=l&&l.$options&&l.$options.timezone;if(l.$$parserName=e,l.$parsers.push(function(e){if(l.$isEmpty(e))return null;if(t.test(e)){var a=i(e,m);return"UTC"===h&&a.setMinutes(a.getMinutes()-a.getTimezoneOffset()),a}return n}),l.$formatters.push(function(e){if(!l.$isEmpty(e)){if(!$(e))throw Uo("datefmt","Expected `{0}` to be a date",e);if(m=e,m&&"UTC"===h){var t=6e4*m.getTimezoneOffset();m=new Date(m.getTime()+t)}return u("date")(e,a,h)}return m=null,""}),y(s.min)||s.ngMin){var f;l.$validators.min=function(e){return l.$isEmpty(e)||_(f)||i(e)>=f},s.$observe("min",function(e){f=p(e),l.$validate()})}if(y(s.max)||s.ngMax){var g;l.$validators.max=function(e){return l.$isEmpty(e)||_(g)||i(e)<=g},s.$observe("max",function(e){g=p(e),l.$validate()})}l.$isEmpty=function(e){return!e||e.getTime&&e.getTime()!==e.getTime()}}}function xi(e,t,i,a){var o=t[0],r=a.$$hasNativeValidators=v(o.validity);r&&a.$parsers.push(function(e){var i=t.prop(Bi)||{};return i.badInput&&!i.typeMismatch?n:e})}function Ai(e,t,i,a,o,r){if(xi(e,t,i,a),ki(e,t,i,a,o,r),a.$$parserName="number",a.$parsers.push(function(e){return a.$isEmpty(e)?null:Eo.test(e)?parseFloat(e):n}),a.$formatters.push(function(e){if(!a.$isEmpty(e)){if(!w(e))throw Uo("numfmt","Expected `{0}` to be a number",e);e=e.toString()}return e}),i.min||i.ngMin){var s;a.$validators.min=function(e){return a.$isEmpty(e)||_(s)||e>=s},i.$observe("min",function(e){y(e)&&!w(e)&&(e=parseFloat(e,10)),s=w(e)&&!isNaN(e)?e:n,a.$validate()})}if(i.max||i.ngMax){var l;a.$validators.max=function(e){return a.$isEmpty(e)||_(l)||l>=e},i.$observe("max",function(e){y(e)&&!w(e)&&(e=parseFloat(e,10)),l=w(e)&&!isNaN(e)?e:n,a.$validate()})}}function Ti(e,t,n,i,a,o){ki(e,t,n,i,a,o),wi(i),i.$$parserName="url",i.$validators.url=function(e){return i.$isEmpty(e)||Ao.test(e)}}function Ei(e,t,n,i,a,o){ki(e,t,n,i,a,o),wi(i),i.$$parserName="email",i.$validators.email=function(e){return i.$isEmpty(e)||To.test(e)}}function Ii(e,t,n,i){_(n.name)&&t.attr("name",c());var a=function(e){t[0].checked&&i.$setViewValue(n.value,e&&e.type)};t.on("click",a),i.$render=function(){var e=n.value;t[0].checked=e==i.$viewValue},n.$observe("value",i.$render)}function Di(e,t,n,a,o){var r;if(y(a)){if(r=e(a),!r.constant)throw i("ngModel")("constexpr","Expected constant expression for `{0}`, but saw `{1}`.",n,a);return r(t)}return o}function Pi(e,t,n,i,a,o,r,s){var l=Di(s,e,"ngTrueValue",n.ngTrueValue,!0),c=Di(s,e,"ngFalseValue",n.ngFalseValue,!1),d=function(e){i.$setViewValue(t[0].checked,e&&e.type)};t.on("click",d),i.$render=function(){t[0].checked=i.$viewValue},i.$isEmpty=function(e){return e!==l},i.$formatters.push(function(e){return U(e,l)}),i.$parsers.push(function(e){return e?l:c})}function Ni(e){function t(e,t,l){t===n?i("$pending",e,l):a("$pending",e,l),T(t)?t?(u(s.$error,e,l),d(s.$$success,e,l)):(d(s.$error,e,l),u(s.$$success,e,l)):(u(s.$error,e,l),u(s.$$success,e,l)),s.$pending?(o(Wo,!0),s.$valid=s.$invalid=n,r("",null)):(o(Wo,!1),s.$valid=Li(s.$error),s.$invalid=!s.$valid,r("",s.$valid));var c;c=s.$pending&&s.$pending[e]?n:s.$error[e]?!1:s.$$success[e]?!0:null,r(e,c),p.$setValidity(e,c,s)}function i(e,t,n){s[e]||(s[e]={}),d(s[e],t,n)}function a(e,t,i){s[e]&&u(s[e],t,i),Li(s[e])&&(s[e]=n)}function o(e,t){t&&!c[e]?(m.addClass(l,e),c[e]=!0):!t&&c[e]&&(m.removeClass(l,e),c[e]=!1)}function r(e,t){e=e?"-"+tt(e,"-"):"",o(Fo+e,t===!0),o(qo+e,t===!1)}var s=e.ctrl,l=e.$element,c={},d=e.set,u=e.unset,p=e.parentForm,m=e.$animate;c[qo]=!(c[Fo]=l.hasClass(Fo)),s.$setValidity=t}function Li(e){if(e)for(var t in e)return!1;return!0}function Oi(e,t){return e="ngClass"+e,["$animate",function(n){function i(e,t){var n=[];e:for(var i=0;i<e.length;i++){for(var a=e[i],o=0;o<t.length;o++)if(a==t[o])continue e;n.push(a)}return n}function a(e){if(na(e))return e;if(b(e))return e.split(" ");if(v(e)){var t=[];return o(e,function(e,n){e&&(t=t.concat(n.split(" ")))}),t}return e}return{restrict:"AC",link:function(r,s,l){function c(e){var t=u(e,1);l.$addClass(t)}function d(e){var t=u(e,-1);l.$removeClass(t)}function u(e,t){var n=s.data("$classCounts")||{},i=[];return o(e,function(e){(t>0||n[e])&&(n[e]=(n[e]||0)+t,n[e]===+(t>0)&&i.push(e))}),s.data("$classCounts",n),i.join(" ")}function p(e,t){var a=i(t,e),o=i(e,t);a=u(a,1),o=u(o,-1),a&&a.length&&n.addClass(s,a),o&&o.length&&n.removeClass(s,o)}function m(e){if(t===!0||r.$index%2===t){var n=a(e||[]);if(h){if(!U(e,h)){var i=a(h);p(i,n)}}else c(n)}h=O(e)}var h;r.$watch(l[e],m,!0),l.$observe("class",function(){m(r.$eval(l[e]))}),"ngClass"!==e&&r.$watch("$index",function(n,i){var o=1&n;if(o!==(1&i)){var s=a(r.$eval(l[e]));o===t?c(s):d(s)}})}}}]}var Ui=/^\/(.+)\/([a-z]*)$/,Bi="validity",Ri=function(e){return b(e)?e.toLowerCase():e},Fi=Object.prototype.hasOwnProperty,qi=function(e){return b(e)?e.toUpperCase():e},Hi=function(e){return b(e)?e.replace(/[A-Z]/g,function(e){return String.fromCharCode(32|e.charCodeAt(0))}):e},ji=function(e){return b(e)?e.replace(/[a-z]/g,function(e){return String.fromCharCode(-33&e.charCodeAt(0))}):e};"i"!=="I".toLowerCase()&&(Ri=Hi,qi=ji);var Vi,zi,Wi,Gi,Ki=[].slice,Xi=[].splice,Zi=[].push,Yi=Object.prototype.toString,Ji=i("ng"),Qi=e.angular||(e.angular={}),ea=0;Vi=t.documentMode,h.$inject=[],f.$inject=[];var ta,na=Array.isArray,ia=function(e){return b(e)?e.trim():e},aa=function(e){return e.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")},oa=function(){if(y(oa.isActive_))return oa.isActive_;var e=!(!t.querySelector("[ng-csp]")&&!t.querySelector("[data-ng-csp]"));if(!e)try{new Function("")}catch(n){e=!0}return oa.isActive_=e},ra=["ng-","data-ng-","ng:","x-ng-"],sa=/[A-Z]/g,la=!1,ca=1,da=3,ua=8,pa=9,ma=11,ha={full:"1.3.2",major:1,minor:3,dot:2,codeName:"cardiovasculatory-magnification"};_t.expando="ng339";var fa=_t.cache={},ga=1,_a=function(e,t,n){e.addEventListener(t,n,!1)},ya=function(e,t,n){e.removeEventListener(t,n,!1)};_t._data=function(e){return this.cache[e[this.expando]]||{}};var va=/([\:\-\_]+(.))/g,ba=/^moz([A-Z])/,wa={mouseleave:"mouseout",mouseenter:"mouseover"},$a=i("jqLite"),ka=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Ca=/<|&#?\w+;/,Sa=/<([\w:]+)/,Ma=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,xa={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};xa.optgroup=xa.option,xa.tbody=xa.tfoot=xa.colgroup=xa.caption=xa.thead,xa.th=xa.td;var Aa=_t.prototype={ready:function(n){function i(){a||(a=!0,n())}var a=!1;"complete"===t.readyState?setTimeout(i):(this.on("DOMContentLoaded",i),_t(e).on("load",i))},toString:function(){var e=[];return o(this,function(t){e.push(""+t)}),"["+e.join(", ")+"]"},eq:function(e){return zi(e>=0?this[e]:this[this.length+e])},length:0,push:Zi,sort:[].sort,splice:[].splice},Ta={};o("multiple,selected,checked,disabled,readOnly,required,open".split(","),function(e){Ta[Ri(e)]=e});var Ea={};o("input,select,option,textarea,button,form,details".split(","),function(e){Ea[e]=!0});var Ia={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};o({data:kt,removeData:wt},function(e,t){_t[t]=e}),o({data:kt,inheritedData:Tt,scope:function(e){return zi.data(e,"$scope")||Tt(e.parentNode||e,["$isolateScope","$scope"])},isolateScope:function(e){return zi.data(e,"$isolateScope")||zi.data(e,"$isolateScopeNoTemplate")},controller:At,injector:function(e){return Tt(e,"$injector")},removeAttr:function(e,t){e.removeAttribute(t)},hasClass:Ct,css:function(e,t,n){return t=pt(t),y(n)?void(e.style[t]=n):e.style[t]},attr:function(e,t,i){var a=Ri(t);if(Ta[a]){if(!y(i))return e[t]||(e.attributes.getNamedItem(t)||h).specified?a:n;i?(e[t]=!0,e.setAttribute(t,a)):(e[t]=!1,e.removeAttribute(a))}else if(y(i))e.setAttribute(t,i);else if(e.getAttribute){var o=e.getAttribute(t,2);return null===o?n:o}},prop:function(e,t,n){return y(n)?void(e[t]=n):e[t]},text:function(){function e(e,t){if(_(t)){var n=e.nodeType;return n===ca||n===da?e.textContent:""}e.textContent=t}return e.$dv="",e}(),val:function(e,t){if(_(t)){if(e.multiple&&"select"===P(e)){var n=[];return o(e.options,function(e){e.selected&&n.push(e.value||e.text)}),0===n.length?null:n}return e.value}e.value=t},html:function(e,t){return _(t)?e.innerHTML:(vt(e,!0),void(e.innerHTML=t))},empty:Et},function(e,t){_t.prototype[t]=function(t,i){var a,o,r=this.length;if(e!==Et&&(2==e.length&&e!==Ct&&e!==At?t:i)===n){if(v(t)){for(a=0;r>a;a++)if(e===kt)e(this[a],t);else for(o in t)e(this[a],o,t[o]);return this}for(var s=e.$dv,l=s===n?Math.min(r,1):r,c=0;l>c;c++){var d=e(this[c],t,i);s=s?s+d:d}return s}for(a=0;r>a;a++)e(this[a],t,i);return this}}),o({removeData:wt,on:function Or(e,t,n,i){if(y(i))throw $a("onargs","jqLite#on() does not support the `selector` or `eventData` parameters");if(ht(e)){var a=$t(e,!0),o=a.events,r=a.handle;r||(r=a.handle=Lt(e,o));for(var s=t.indexOf(" ")>=0?t.split(" "):[t],l=s.length;l--;){t=s[l];var c=o[t];c||(o[t]=[],"mouseenter"===t||"mouseleave"===t?Or(e,wa[t],function(e){var n=this,i=e.relatedTarget;(!i||i!==n&&!n.contains(i))&&r(e,t)}):"$destroy"!==t&&_a(e,t,r),c=o[t]),c.push(n)}}},off:bt,one:function(e,t,n){e=zi(e),e.on(t,function i(){e.off(t,n),e.off(t,i)}),e.on(t,n)},replaceWith:function(e,t){var n,i=e.parentNode;vt(e),o(new _t(t),function(t){n?i.insertBefore(t,n.nextSibling):i.replaceChild(t,e),n=t})},children:function(e){var t=[];return o(e.childNodes,function(e){e.nodeType===ca&&t.push(e)}),t},contents:function(e){return e.contentDocument||e.childNodes||[]},append:function(e,t){var n=e.nodeType;if(n===ca||n===ma){t=new _t(t);for(var i=0,a=t.length;a>i;i++){var o=t[i];e.appendChild(o)}}},prepend:function(e,t){if(e.nodeType===ca){var n=e.firstChild;o(new _t(t),function(t){e.insertBefore(t,n)})}},wrap:function(e,t){t=zi(t).eq(0).clone()[0];var n=e.parentNode;n&&n.replaceChild(t,e),t.appendChild(e)},remove:It,detach:function(e){It(e,!0)},after:function(e,t){var n=e,i=e.parentNode;t=new _t(t);for(var a=0,o=t.length;o>a;a++){var r=t[a];i.insertBefore(r,n.nextSibling),n=r}},addClass:Mt,removeClass:St,toggleClass:function(e,t,n){t&&o(t.split(" "),function(t){var i=n;_(i)&&(i=!Ct(e,t)),(i?Mt:St)(e,t)})},parent:function(e){var t=e.parentNode;return t&&t.nodeType!==ma?t:null},next:function(e){return e.nextElementSibling},find:function(e,t){return e.getElementsByTagName?e.getElementsByTagName(t):[]},clone:yt,triggerHandler:function(e,t,n){var i,a,r,s=t.type||t,l=$t(e),c=l&&l.events,d=c&&c[s];d&&(i={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return this.defaultPrevented===!0},stopImmediatePropagation:function(){this.immediatePropagationStopped=!0},isImmediatePropagationStopped:function(){return this.immediatePropagationStopped===!0},stopPropagation:h,type:s,target:e},t.type&&(i=u(i,t)),a=O(d),r=n?[i].concat(n):[i],o(a,function(t){i.isImmediatePropagationStopped()||t.apply(e,r)}))}},function(e,t){_t.prototype[t]=function(t,n,i){for(var a,o=0,r=this.length;r>o;o++)_(a)?(a=e(this[o],t,n,i),y(a)&&(a=zi(a))):xt(a,e(this[o],t,n,i));return y(a)?a:this},_t.prototype.bind=_t.prototype.on,_t.prototype.unbind=_t.prototype.off}),Ut.prototype={put:function(e,t){this[Ot(e,this.nextUid)]=t},get:function(e){return this[Ot(e,this.nextUid)]},remove:function(e){var t=this[e=Ot(e,this.nextUid)];return delete this[e],t}};var Da=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,Pa=/,/,Na=/^\s*(_?)(\S+?)\1\s*$/,La=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,Oa=i("$injector");Ft.$$annotate=Rt;var Ua=i("$animate"),Ba=["$provide",function(e){this.$$selectors={},this.register=function(t,n){var i=t+"-animation";if(t&&"."!=t.charAt(0))throw Ua("notcsel","Expecting class selector starting with '.' got '{0}'.",t);this.$$selectors[t.substr(1)]=i,e.factory(i,n)},this.classNameFilter=function(e){return 1===arguments.length&&(this.$$classNameFilter=e instanceof RegExp?e:null),this.$$classNameFilter},this.$get=["$$q","$$asyncCallback","$rootScope",function(e,t,n){function i(t){var i,a=e.defer();return a.promise.$$cancelFn=function(){i&&i()},n.$$postDigest(function(){i=t(function(){a.resolve()})}),a.promise}function a(e,t){var n=[],i=[],a=lt();return o((e.attr("class")||"").split(/\s+/),function(e){a[e]=!0}),o(t,function(e,t){var o=a[t];e===!1&&o?i.push(t):e!==!0||o||n.push(t)}),n.length+i.length>0&&[n.length?n:null,i.length?i:null]}function r(e,t,n){for(var i=0,a=t.length;a>i;++i){var o=t[i];e[o]=n}}function s(){return c||(c=e.defer(),t(function(){c.resolve(),c=null})),c.promise}function l(e,t){if(Qi.isObject(t)){var n=u(t.from||{},t.to||{});e.css(n)}}var c;return{animate:function(e,t,n){return l(e,{from:t,to:n}),s()},enter:function(e,t,n,i){return l(e,i),n?n.after(e):t.prepend(e),s()},leave:function(e){return e.remove(),s()},move:function(e,t,n,i){return this.enter(e,t,n,i)},addClass:function(e,t,n){return this.setClass(e,t,[],n)},$$addClassImmediately:function(e,t,n){return e=zi(e),t=b(t)?t:na(t)?t.join(" "):"",o(e,function(e){Mt(e,t)}),l(e,n),s()},removeClass:function(e,t,n){return this.setClass(e,[],t,n)},$$removeClassImmediately:function(e,t,n){return e=zi(e),t=b(t)?t:na(t)?t.join(" "):"",o(e,function(e){St(e,t)}),l(e,n),s()},setClass:function(e,t,n,o){var s=this,l="$$animateClasses",c=!1;e=zi(e);var d=e.data(l);d?o&&d.options&&(d.options=Qi.extend(d.options||{},o)):(d={classes:{},options:o},c=!0);var u=d.classes;return t=na(t)?t:t.split(" "),n=na(n)?n:n.split(" "),r(u,t,!0),r(u,n,!1),c&&(d.promise=i(function(t){var n=e.data(l);if(e.removeData(l),n){var i=a(e,n.classes);i&&s.$$setClassImmediately(e,i[0],i[1],n.options)}t()}),e.data(l,d)),d.promise},$$setClassImmediately:function(e,t,n,i){return t&&this.$$addClassImmediately(e,t),n&&this.$$removeClassImmediately(e,n),l(e,i),s()},enabled:h,cancel:h}}]}],Ra=i("$compile");Gt.$inject=["$provide","$$sanitizeUriProvider"];var Fa=/^((?:x|data)[\:\-_])/i,qa="application/json",Ha={"Content-Type":qa+";charset=utf-8"},ja=/^\s*(\[|\{[^\{])/,Va=/[\}\]]\s*$/,za=/^\)\]\}',?\n/,Wa=i("$interpolate"),Ga=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,Ka={http:80,https:443,ftp:21},Xa=i("$location"),Za={$$html5:!1,$$replace:!1,absUrl:kn("$$absUrl"),url:function(e){if(_(e))return this.$$url;var t=Ga.exec(e);return t[1]&&this.path(decodeURIComponent(t[1])),(t[2]||t[1])&&this.search(t[3]||""),this.hash(t[5]||""),this},protocol:kn("$$protocol"),host:kn("$$host"),port:kn("$$port"),path:Cn("$$path",function(e){return e=null!==e?e.toString():"","/"==e.charAt(0)?e:"/"+e}),search:function(e,t){switch(arguments.length){case 0:return this.$$search;case 1:if(b(e)||w(e))e=e.toString(),this.$$search=W(e);else{if(!v(e))throw Xa("isrcharg","The first argument of the `$location#search()` call must be a string or an object.");e=L(e,{}),o(e,function(t,n){null==t&&delete e[n]}),this.$$search=e}break;default:_(t)||null===t?delete this.$$search[e]:this.$$search[e]=t}return this.$$compose(),this},hash:Cn("$$hash",function(e){return null!==e?e.toString():""}),replace:function(){return this.$$replace=!0,this}};o([$n,wn,bn],function(e){e.prototype=Object.create(Za),e.prototype.state=function(t){if(!arguments.length)return this.$$state;if(e!==bn||!this.$$html5)throw Xa("nostate","History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");return this.$$state=_(t)?null:t,this}});var Ya=i("$parse"),Ja=Function.prototype.call,Qa=Function.prototype.apply,eo=Function.prototype.bind,to=lt();o({"null":function(){return null},"true":function(){return!0},"false":function(){return!1},undefined:function(){}},function(e,t){e.constant=e.literal=e.sharedGetter=!0,to[t]=e}),to["this"]=function(e){return e},to["this"].sharedGetter=!0;var no=u(lt(),{"+":function(e,t,i,a){return i=i(e,t),a=a(e,t),y(i)?y(a)?i+a:i:y(a)?a:n},"-":function(e,t,n,i){return n=n(e,t),i=i(e,t),(y(n)?n:0)-(y(i)?i:0)},"*":function(e,t,n,i){return n(e,t)*i(e,t)},"/":function(e,t,n,i){return n(e,t)/i(e,t)},"%":function(e,t,n,i){return n(e,t)%i(e,t)},"===":function(e,t,n,i){return n(e,t)===i(e,t)},"!==":function(e,t,n,i){return n(e,t)!==i(e,t)},"==":function(e,t,n,i){return n(e,t)==i(e,t)},"!=":function(e,t,n,i){return n(e,t)!=i(e,t)},"<":function(e,t,n,i){return n(e,t)<i(e,t)},">":function(e,t,n,i){return n(e,t)>i(e,t)},"<=":function(e,t,n,i){return n(e,t)<=i(e,t)},">=":function(e,t,n,i){return n(e,t)>=i(e,t)},"&&":function(e,t,n,i){return n(e,t)&&i(e,t)},"||":function(e,t,n,i){return n(e,t)||i(e,t)},"!":function(e,t,n){return!n(e,t)},"=":!0,"|":!0}),io={n:"\n",f:"\f",r:"\r",t:" ",v:"","'":"'",'"':'"'},ao=function(e){this.options=e};ao.prototype={constructor:ao,lex:function(e){for(this.text=e,this.index=0,this.ch=n,this.tokens=[];this.index<this.text.length;)if(this.ch=this.text.charAt(this.index),this.is("\"'"))this.readString(this.ch);else if(this.isNumber(this.ch)||this.is(".")&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdent(this.ch))this.readIdent();else if(this.is("(){}[].,;:?"))this.tokens.push({index:this.index,text:this.ch}),this.index++;else if(this.isWhitespace(this.ch))this.index++;else{var t=this.ch+this.peek(),i=t+this.peek(2),a=no[this.ch],o=no[t],r=no[i];r?(this.tokens.push({index:this.index,text:i,fn:r}),this.index+=3):o?(this.tokens.push({index:this.index,text:t,fn:o}),this.index+=2):a?(this.tokens.push({index:this.index,text:this.ch,fn:a}),this.index+=1):this.throwError("Unexpected next character ",this.index,this.index+1)}return this.tokens},is:function(e){return-1!==e.indexOf(this.ch)},peek:function(e){var t=e||1;return this.index+t<this.text.length?this.text.charAt(this.index+t):!1},isNumber:function(e){return e>="0"&&"9">=e},isWhitespace:function(e){return" "===e||"\r"===e||" "===e||"\n"===e||""===e||" "===e},isIdent:function(e){return e>="a"&&"z">=e||e>="A"&&"Z">=e||"_"===e||"$"===e},isExpOperator:function(e){return"-"===e||"+"===e||this.isNumber(e)},throwError:function(e,t,n){n=n||this.index;var i=y(t)?"s "+t+"-"+this.index+" ["+this.text.substring(t,n)+"]":" "+n;throw Ya("lexerr","Lexer Error: {0} at column{1} in expression [{2}].",e,i,this.text)},readNumber:function(){for(var e="",t=this.index;this.index<this.text.length;){var n=Ri(this.text.charAt(this.index));if("."==n||this.isNumber(n))e+=n;else{var i=this.peek();if("e"==n&&this.isExpOperator(i))e+=n;else if(this.isExpOperator(n)&&i&&this.isNumber(i)&&"e"==e.charAt(e.length-1))e+=n;else{if(!this.isExpOperator(n)||i&&this.isNumber(i)||"e"!=e.charAt(e.length-1))break;this.throwError("Invalid exponent")}}this.index++}e=1*e,this.tokens.push({index:t,text:e,constant:!0,fn:function(){return e}})},readIdent:function(){for(var e,t,i,a,o=this.text,r="",s=this.index;this.index<this.text.length&&(a=this.text.charAt(this.index),"."===a||this.isIdent(a)||this.isNumber(a));)"."===a&&(e=this.index),r+=a,this.index++;if(e&&"."===r[r.length-1]&&(this.index--,r=r.slice(0,-1),e=r.lastIndexOf("."),-1===e&&(e=n)),e)for(t=this.index;t<this.text.length;){if(a=this.text.charAt(t),"("===a){i=r.substr(e-s+1),r=r.substr(0,e-s),this.index=t;break}if(!this.isWhitespace(a))break;t++}this.tokens.push({index:s,text:r,fn:to[r]||Ln(r,this.options,o)}),i&&(this.tokens.push({index:e,text:"."}),this.tokens.push({index:e+1,text:i}))},readString:function(e){var t=this.index;this.index++;for(var n="",i=e,a=!1;this.index<this.text.length;){var o=this.text.charAt(this.index);if(i+=o,a){if("u"===o){var r=this.text.substring(this.index+1,this.index+5);r.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+r+"]"),this.index+=4,n+=String.fromCharCode(parseInt(r,16))}else{var s=io[o];n+=s||o}a=!1}else if("\\"===o)a=!0;else{if(o===e)return this.index++,void this.tokens.push({index:t,text:i,string:n,constant:!0,fn:function(){return n}});n+=o}this.index++}this.throwError("Unterminated quote",t)}};var oo=function(e,t,n){this.lexer=e,this.$filter=t,this.options=n};oo.ZERO=u(function(){return 0},{sharedGetter:!0,constant:!0}),oo.prototype={constructor:oo,parse:function(e){this.text=e,this.tokens=this.lexer.lex(e);var t=this.statements();return 0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]),t.literal=!!t.literal,t.constant=!!t.constant,t},primary:function(){var e;if(this.expect("("))e=this.filterChain(),this.consume(")");else if(this.expect("["))e=this.arrayDeclaration();else if(this.expect("{"))e=this.object();else{var t=this.expect();e=t.fn,e||this.throwError("not a primary expression",t),t.constant&&(e.constant=!0,e.literal=!0)}for(var n,i;n=this.expect("(","[",".");)"("===n.text?(e=this.functionCall(e,i),i=null):"["===n.text?(i=e,e=this.objectIndex(e)):"."===n.text?(i=e,e=this.fieldAccess(e)):this.throwError("IMPOSSIBLE");return e},throwError:function(e,t){throw Ya("syntax","Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].",t.text,e,t.index+1,this.text,this.text.substring(t.index))},peekToken:function(){if(0===this.tokens.length)throw Ya("ueoe","Unexpected end of expression: {0}",this.text);return this.tokens[0]},peek:function(e,t,n,i){if(this.tokens.length>0){var a=this.tokens[0],o=a.text;if(o===e||o===t||o===n||o===i||!e&&!t&&!n&&!i)return a}return!1},expect:function(e,t,n,i){var a=this.peek(e,t,n,i);return a?(this.tokens.shift(),a):!1},consume:function(e){this.expect(e)||this.throwError("is unexpected, expecting ["+e+"]",this.peek())},unaryFn:function(e,t){return u(function(n,i){return e(n,i,t)},{constant:t.constant,inputs:[t]})},binaryFn:function(e,t,n,i){return u(function(i,a){return t(i,a,e,n)},{constant:e.constant&&n.constant,inputs:!i&&[e,n]})},statements:function(){for(var e=[];;)if(this.tokens.length>0&&!this.peek("}",")",";","]")&&e.push(this.filterChain()),!this.expect(";"))return 1===e.length?e[0]:function(t,n){for(var i,a=0,o=e.length;o>a;a++)i=e[a](t,n);return i}},filterChain:function(){for(var e,t=this.expression();e=this.expect("|");)t=this.filter(t);return t},filter:function(e){var t,i,a=this.expect(),o=this.$filter(a.text);if(this.peek(":"))for(t=[],i=[];this.expect(":");)t.push(this.expression());var r=[e].concat(t||[]);return u(function(a,r){var s=e(a,r);if(i){i[0]=s;for(var l=t.length;l--;)i[l+1]=t[l](a,r);return o.apply(n,i)}return o(s)},{constant:!o.$stateful&&r.every(En),inputs:!o.$stateful&&r})},expression:function(){return this.assignment()},assignment:function(){var e,t,n=this.ternary();return(t=this.expect("="))?(n.assign||this.throwError("implies assignment but ["+this.text.substring(0,t.index)+"] can not be assigned to",t),e=this.ternary(),u(function(t,i){return n.assign(t,e(t,i),i)},{inputs:[n,e]})):n},ternary:function(){var e,t,n=this.logicalOR();if(t=this.expect("?")){if(e=this.assignment(),t=this.expect(":")){var i=this.assignment();return u(function(t,a){return n(t,a)?e(t,a):i(t,a)},{constant:n.constant&&e.constant&&i.constant})}this.throwError("expected :",t)}return n},logicalOR:function(){for(var e,t=this.logicalAND();e=this.expect("||");)t=this.binaryFn(t,e.fn,this.logicalAND(),!0);return t},logicalAND:function(){var e,t=this.equality();return(e=this.expect("&&"))&&(t=this.binaryFn(t,e.fn,this.logicalAND(),!0)),t},equality:function(){var e,t=this.relational();return(e=this.expect("==","!=","===","!=="))&&(t=this.binaryFn(t,e.fn,this.equality())),t},relational:function(){var e,t=this.additive();return(e=this.expect("<",">","<=",">="))&&(t=this.binaryFn(t,e.fn,this.relational())),t},additive:function(){for(var e,t=this.multiplicative();e=this.expect("+","-");)t=this.binaryFn(t,e.fn,this.multiplicative()); |
|
|
return t},multiplicative:function(){for(var e,t=this.unary();e=this.expect("*","/","%");)t=this.binaryFn(t,e.fn,this.unary());return t},unary:function(){var e;return this.expect("+")?this.primary():(e=this.expect("-"))?this.binaryFn(oo.ZERO,e.fn,this.unary()):(e=this.expect("!"))?this.unaryFn(e.fn,this.unary()):this.primary()},fieldAccess:function(e){var t=this.text,n=this.expect().text,i=Ln(n,this.options,t);return u(function(t,n,a){return i(a||e(t,n))},{assign:function(i,a,o){var r=e(i,o);return r||e.assign(i,r={}),In(r,n,a,t)}})},objectIndex:function(e){var t=this.text,i=this.expression();return this.consume("]"),u(function(a,o){var r,s=e(a,o),l=i(a,o);return xn(l,t),s?r=An(s[l],t):n},{assign:function(n,a,o){var r=xn(i(n,o),t),s=An(e(n,o),t);return s||e.assign(n,s={}),s[r]=a}})},functionCall:function(e,t){var n=[];if(")"!==this.peekToken().text)do n.push(this.expression());while(this.expect(","));this.consume(")");var i=this.text,a=n.length?[]:null;return function(o,r){var s=t?t(o,r):o,l=e(o,r,s)||h;if(a)for(var c=n.length;c--;)a[c]=An(n[c](o,r),i);An(s,i),Tn(l,i);var d=l.apply?l.apply(s,a):l(a[0],a[1],a[2],a[3],a[4]);return An(d,i)}},arrayDeclaration:function(){var e=[];if("]"!==this.peekToken().text)do{if(this.peek("]"))break;var t=this.expression();e.push(t)}while(this.expect(","));return this.consume("]"),u(function(t,n){for(var i=[],a=0,o=e.length;o>a;a++)i.push(e[a](t,n));return i},{literal:!0,constant:e.every(En),inputs:e})},object:function(){var e=[],t=[];if("}"!==this.peekToken().text)do{if(this.peek("}"))break;var n=this.expect();e.push(n.string||n.text),this.consume(":");var i=this.expression();t.push(i)}while(this.expect(","));return this.consume("}"),u(function(n,i){for(var a={},o=0,r=t.length;r>o;o++)a[e[o]]=t[o](n,i);return a},{literal:!0,constant:t.every(En),inputs:t})}};var ro=lt(),so=lt(),lo=Object.prototype.valueOf,co=i("$sce"),uo={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},Ra=i("$compile"),po=t.createElement("a"),mo=Jn(e.location.href,!0);ti.$inject=["$provide"],ii.$inject=["$locale"],ai.$inject=["$locale"];var ho=".",fo={yyyy:si("FullYear",4),yy:si("FullYear",2,0,!0),y:si("FullYear",1),MMMM:li("Month"),MMM:li("Month",!0),MM:si("Month",2,1),M:si("Month",1,1),dd:si("Date",2),d:si("Date",1),HH:si("Hours",2),H:si("Hours",1),hh:si("Hours",2,-12),h:si("Hours",1,-12),mm:si("Minutes",2),m:si("Minutes",1),ss:si("Seconds",2),s:si("Seconds",1),sss:si("Milliseconds",3),EEEE:li("Day"),EEE:li("Day",!0),a:mi,Z:ci,ww:pi(2),w:pi(1)},go=/((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|w+))(.*)/,_o=/^\-?\d+$/;hi.$inject=["$locale"];var yo=g(Ri),vo=g(qi);_i.$inject=["$parse"];var bo=g({restrict:"E",compile:function(e,t){return t.href||t.xlinkHref||t.name?void 0:function(e,t){var n="[object SVGAnimatedString]"===Yi.call(t.prop("href"))?"xlink:href":"href";t.on("click",function(e){t.attr(n)||e.preventDefault()})}}}),wo={};o(Ta,function(e,t){if("multiple"!=e){var n=Kt("ng-"+t);wo[n]=function(){return{restrict:"A",priority:100,link:function(e,i,a){e.$watch(a[n],function(e){a.$set(t,!!e)})}}}}}),o(Ia,function(e,t){wo[t]=function(){return{priority:100,link:function(e,n,i){if("ngPattern"===t&&"/"==i.ngPattern.charAt(0)){var a=i.ngPattern.match(Ui);if(a)return void i.$set("ngPattern",new RegExp(a[1],a[2]))}e.$watch(i[t],function(e){i.$set(t,e)})}}}}),o(["src","srcset","href"],function(e){var t=Kt("ng-"+e);wo[t]=function(){return{priority:99,link:function(n,i,a){var o=e,r=e;"href"===e&&"[object SVGAnimatedString]"===Yi.call(i.prop("href"))&&(r="xlinkHref",a.$attr[r]="xlink:href",o=null),a.$observe(t,function(t){return t?(a.$set(r,t),void(Vi&&o&&i.prop(o,a[r]))):void("href"===e&&a.$set(r,null))})}}}});var $o={$addControl:h,$$renameControl:vi,$removeControl:h,$setValidity:h,$setDirty:h,$setPristine:h,$setSubmitted:h},ko="ng-submitted";bi.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var Co=function(e){return["$timeout",function(t){var i={name:"form",restrict:e?"EAC":"E",controller:bi,compile:function(e){return e.addClass(Ho).addClass(Fo),{pre:function(e,i,a,o){if(!("action"in a)){var r=function(t){e.$apply(function(){o.$commitViewValue(),o.$setSubmitted()}),t.preventDefault?t.preventDefault():t.returnValue=!1};_a(i[0],"submit",r),i.on("$destroy",function(){t(function(){ya(i[0],"submit",r)},0,!1)})}var s=o.$$parentForm,l=o.$name;l&&(In(e,l,o,l),a.$observe(a.name?"name":"ngForm",function(t){l!==t&&(In(e,l,n,l),l=t,In(e,l,o,l),s.$$renameControl(o,l))})),i.on("$destroy",function(){s.$removeControl(o),l&&In(e,l,n,l),u(o,$o)})}}}};return i}]},So=Co(),Mo=Co(!0),xo=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,Ao=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,To=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,Eo=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,Io=/^(\d{4})-(\d{2})-(\d{2})$/,Do=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Po=/^(\d{4})-W(\d\d)$/,No=/^(\d{4})-(\d\d)$/,Lo=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Oo=/(\s+|^)default(\s+|$)/,Uo=new i("ngModel"),Bo={text:$i,date:Mi("date",Io,Si(Io,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":Mi("datetimelocal",Do,Si(Do,["yyyy","MM","dd","HH","mm","ss","sss"]),"yyyy-MM-ddTHH:mm:ss.sss"),time:Mi("time",Lo,Si(Lo,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:Mi("week",Po,Ci,"yyyy-Www"),month:Mi("month",No,Si(No,["yyyy","MM"]),"yyyy-MM"),number:Ai,url:Ti,email:Ei,radio:Ii,checkbox:Pi,hidden:h,button:h,submit:h,reset:h,file:h},Ro=["$browser","$sniffer","$filter","$parse",function(e,t,n,i){return{restrict:"E",require:["?ngModel"],link:{pre:function(a,o,r,s){s[0]&&(Bo[Ri(r.type)]||Bo.text)(a,o,r,s[0],t,e,n,i)}}}}],Fo="ng-valid",qo="ng-invalid",Ho="ng-pristine",jo="ng-dirty",Vo="ng-untouched",zo="ng-touched",Wo="ng-pending",Go=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(e,t,i,a,r,s,l,c,d,u){this.$viewValue=Number.NaN,this.$modelValue=Number.NaN,this.$validators={},this.$asyncValidators={},this.$parsers=[],this.$formatters=[],this.$viewChangeListeners=[],this.$untouched=!0,this.$touched=!1,this.$pristine=!0,this.$dirty=!1,this.$valid=!0,this.$invalid=!1,this.$error={},this.$$success={},this.$pending=n,this.$name=u(i.name||"",!1)(e);var p=r(i.ngModel),m=null,f=this,g=function(){var t=p(e);return f.$options&&f.$options.getterSetter&&k(t)&&(t=t()),t},v=function(){var t;f.$options&&f.$options.getterSetter&&k(t=p(e))?t(f.$modelValue):p.assign(e,f.$modelValue)};this.$$setOptions=function(e){if(f.$options=e,!(p.assign||e&&e.getterSetter))throw Uo("nonassign","Expression '{0}' is non-assignable. Element: {1}",i.ngModel,V(a))},this.$render=h,this.$isEmpty=function(e){return _(e)||""===e||null===e||e!==e};var b=a.inheritedData("$formController")||$o,$=0;Ni({ctrl:this,$element:a,set:function(e,t){e[t]=!0},unset:function(e,t){delete e[t]},parentForm:b,$animate:s}),this.$setPristine=function(){f.$dirty=!1,f.$pristine=!0,s.removeClass(a,jo),s.addClass(a,Ho)},this.$setUntouched=function(){f.$touched=!1,f.$untouched=!0,s.setClass(a,Vo,zo)},this.$setTouched=function(){f.$touched=!0,f.$untouched=!1,s.setClass(a,zo,Vo)},this.$rollbackViewValue=function(){l.cancel(m),f.$viewValue=f.$$lastCommittedViewValue,f.$render()},this.$validate=function(){w(f.$modelValue)&&isNaN(f.$modelValue)||this.$$parseAndValidate()},this.$$runValidators=function(e,t,i,a){function r(e){var t=f.$$parserName||"parse";if(e===n)c(t,null);else if(c(t,e),!e)return o(f.$validators,function(e,t){c(t,null)}),o(f.$asyncValidators,function(e,t){c(t,null)}),!1;return!0}function s(){var e=!0;return o(f.$validators,function(n,a){var o=n(t,i);e=e&&o,c(a,o)}),e?!0:(o(f.$asyncValidators,function(e,t){c(t,null)}),!1)}function l(){var e=[],a=!0;o(f.$asyncValidators,function(o,r){var s=o(t,i);if(!E(s))throw Uo("$asyncValidators","Expected asynchronous validator to return a promise but got '{0}' instead.",s);c(r,n),e.push(s.then(function(){c(r,!0)},function(){a=!1,c(r,!1)}))}),e.length?d.all(e).then(function(){u(a)},h):u(!0)}function c(e,t){p===$&&f.$setValidity(e,t)}function u(e){p===$&&a(e)}$++;var p=$;return r(e)&&s()?void l():void u(!1)},this.$commitViewValue=function(){var e=f.$viewValue;l.cancel(m),(f.$$lastCommittedViewValue!==e||""===e&&f.$$hasNativeValidators)&&(f.$$lastCommittedViewValue=e,f.$pristine&&(f.$dirty=!0,f.$pristine=!1,s.removeClass(a,Ho),s.addClass(a,jo),b.$setDirty()),this.$$parseAndValidate())},this.$$parseAndValidate=function(){function e(){f.$modelValue!==r&&f.$$writeModelToScope()}var t=f.$$lastCommittedViewValue,i=t,a=_(i)?n:!0;if(a)for(var o=0;o<f.$parsers.length;o++)if(i=f.$parsers[o](i),_(i)){a=!1;break}w(f.$modelValue)&&isNaN(f.$modelValue)&&(f.$modelValue=g());var r=f.$modelValue,s=f.$options&&f.$options.allowInvalid;s&&(f.$modelValue=i,e()),f.$$runValidators(a,i,t,function(t){s||(f.$modelValue=t?i:n,e())})},this.$$writeModelToScope=function(){v(f.$modelValue),o(f.$viewChangeListeners,function(e){try{e()}catch(n){t(n)}})},this.$setViewValue=function(e,t){f.$viewValue=e,(!f.$options||f.$options.updateOnDefault)&&f.$$debounceViewValueCommit(t)},this.$$debounceViewValueCommit=function(t){var n,i=0,a=f.$options;a&&y(a.debounce)&&(n=a.debounce,w(n)?i=n:w(n[t])?i=n[t]:w(n["default"])&&(i=n["default"])),l.cancel(m),i?m=l(function(){f.$commitViewValue()},i):c.$$phase?f.$commitViewValue():e.$apply(function(){f.$commitViewValue()})},e.$watch(function(){var e=g();if(e!==f.$modelValue){f.$modelValue=e;for(var t=f.$formatters,i=t.length,a=e;i--;)a=t[i](a);f.$viewValue!==a&&(f.$viewValue=f.$$lastCommittedViewValue=a,f.$render(),f.$$runValidators(n,e,a,h))}return e})}],Ko=function(){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:Go,priority:1,compile:function(e){return e.addClass(Ho).addClass(Vo).addClass(Fo),{pre:function(e,t,n,i){var a=i[0],o=i[1]||$o;a.$$setOptions(i[2]&&i[2].$options),o.$addControl(a),n.$observe("name",function(e){a.$name!==e&&o.$$renameControl(a,e)}),e.$on("$destroy",function(){o.$removeControl(a)})},post:function(e,t,n,i){var a=i[0];a.$options&&a.$options.updateOn&&t.on(a.$options.updateOn,function(e){a.$$debounceViewValueCommit(e&&e.type)}),t.on("blur",function(){a.$touched||e.$apply(function(){a.$setTouched()})})}}}}},Xo=g({restrict:"A",require:"ngModel",link:function(e,t,n,i){i.$viewChangeListeners.push(function(){e.$eval(n.ngChange)})}}),Zo=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,n,i){i&&(n.required=!0,i.$validators.required=function(e){return!n.required||!i.$isEmpty(e)},n.$observe("required",function(){i.$validate()}))}}},Yo=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,a,o){if(o){var r,s=a.ngPattern||a.pattern;a.$observe("pattern",function(e){if(b(e)&&e.length>0&&(e=new RegExp(e)),e&&!e.test)throw i("ngPattern")("noregexp","Expected {0} to be a RegExp but was {1}. Element: {2}",s,e,V(t));r=e||n,o.$validate()}),o.$validators.pattern=function(e){return o.$isEmpty(e)||_(r)||r.test(e)}}}}},Jo=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,n,i){if(i){var a=0;n.$observe("maxlength",function(e){a=p(e)||0,i.$validate()}),i.$validators.maxlength=function(e,t){return i.$isEmpty(e)||t.length<=a}}}}},Qo=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,n,i){if(i){var a=0;n.$observe("minlength",function(e){a=p(e)||0,i.$validate()}),i.$validators.minlength=function(e,t){return i.$isEmpty(e)||t.length>=a}}}}},er=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(e,t,i,a){var r=t.attr(i.$attr.ngList)||", ",s="false"!==i.ngTrim,l=s?ia(r):r,c=function(e){if(!_(e)){var t=[];return e&&o(e.split(l),function(e){e&&t.push(s?ia(e):e)}),t}};a.$parsers.push(c),a.$formatters.push(function(e){return na(e)?e.join(r):n}),a.$isEmpty=function(e){return!e||!e.length}}}},tr=/^(true|false|\d+)$/,nr=function(){return{restrict:"A",priority:100,compile:function(e,t){return tr.test(t.ngValue)?function(e,t,n){n.$set("value",e.$eval(n.ngValue))}:function(e,t,n){e.$watch(n.ngValue,function(e){n.$set("value",e)})}}}},ir=function(){return{restrict:"A",controller:["$scope","$attrs",function(e,t){var i=this;this.$options=e.$eval(t.ngModelOptions),this.$options.updateOn!==n?(this.$options.updateOnDefault=!1,this.$options.updateOn=ia(this.$options.updateOn.replace(Oo,function(){return i.$options.updateOnDefault=!0," "}))):this.$options.updateOnDefault=!0}]}},ar=["$compile",function(e){return{restrict:"AC",compile:function(t){return e.$$addBindingClass(t),function(t,i,a){e.$$addBindingInfo(i,a.ngBind),i=i[0],t.$watch(a.ngBind,function(e){i.textContent=e===n?"":e})}}}}],or=["$interpolate","$compile",function(e,t){return{compile:function(i){return t.$$addBindingClass(i),function(i,a,o){var r=e(a.attr(o.$attr.ngBindTemplate));t.$$addBindingInfo(a,r.expressions),a=a[0],o.$observe("ngBindTemplate",function(e){a.textContent=e===n?"":e})}}}}],rr=["$sce","$parse","$compile",function(e,t,n){return{restrict:"A",compile:function(i,a){var o=t(a.ngBindHtml),r=t(a.ngBindHtml,function(e){return(e||"").toString()});return n.$$addBindingClass(i),function(t,i,a){n.$$addBindingInfo(i,a.ngBindHtml),t.$watch(r,function(){i.html(e.getTrustedHtml(o(t))||"")})}}}}],sr=Oi("",!0),lr=Oi("Odd",0),cr=Oi("Even",1),dr=yi({compile:function(e,t){t.$set("ngCloak",n),e.removeClass("ng-cloak")}}),ur=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],pr={},mr={blur:!0,focus:!0};o("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(e){var t=Kt("ng-"+e);pr[t]=["$parse","$rootScope",function(n,i){return{restrict:"A",compile:function(a,o){var r=n(o[t],null,!0);return function(t,n){n.on(e,function(n){var a=function(){r(t,{$event:n})};mr[e]&&i.$$phase?t.$evalAsync(a):t.$apply(a)})}}}}]});var hr=["$animate",function(e){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(n,i,a,o,r){var s,l,c;n.$watch(a.ngIf,function(n){n?l||r(function(n,o){l=o,n[n.length++]=t.createComment(" end ngIf: "+a.ngIf+" "),s={clone:n},e.enter(n,i.parent(),i)}):(c&&(c.remove(),c=null),l&&(l.$destroy(),l=null),s&&(c=st(s.clone),e.leave(c).then(function(){c=null}),s=null))})}}}],fr=["$templateRequest","$anchorScroll","$animate","$sce",function(e,t,n,i){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:Qi.noop,compile:function(a,o){var r=o.ngInclude||o.src,s=o.onload||"",l=o.autoscroll;return function(a,o,c,d,u){var p,m,h,f=0,g=function(){m&&(m.remove(),m=null),p&&(p.$destroy(),p=null),h&&(n.leave(h).then(function(){m=null}),m=h,h=null)};a.$watch(i.parseAsResourceUrl(r),function(i){var r=function(){!y(l)||l&&!a.$eval(l)||t()},c=++f;i?(e(i,!0).then(function(e){if(c===f){var t=a.$new();d.template=e;var l=u(t,function(e){g(),n.enter(e,null,o).then(r)});p=t,h=l,p.$emit("$includeContentLoaded",i),a.$eval(s)}},function(){c===f&&(g(),a.$emit("$includeContentError",i))}),a.$emit("$includeContentRequested",i)):(g(),d.template=null)})}}}}],gr=["$compile",function(e){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(n,i,a,o){return/SVG/.test(i[0].toString())?(i.empty(),void e(ft(o.template,t).childNodes)(n,function(e){i.append(e)},{futureParentElement:i})):(i.html(o.template),void e(i.contents())(n))}}}],_r=yi({priority:450,compile:function(){return{pre:function(e,t,n){e.$eval(n.ngInit)}}}}),yr=yi({terminal:!0,priority:1e3}),vr=["$locale","$interpolate",function(e,t){var n=/{}/g;return{restrict:"EA",link:function(i,a,r){var s=r.count,l=r.$attr.when&&a.attr(r.$attr.when),c=r.offset||0,d=i.$eval(l)||{},u={},p=t.startSymbol(),m=t.endSymbol(),h=/^when(Minus)?(.+)$/;o(r,function(e,t){h.test(t)&&(d[Ri(t.replace("when","").replace("Minus","-"))]=a.attr(r.$attr[t]))}),o(d,function(e,i){u[i]=t(e.replace(n,p+s+"-"+c+m))}),i.$watch(function(){var t=parseFloat(i.$eval(s));return isNaN(t)?"":(t in d||(t=e.pluralCat(t-c)),u[t](i))},function(e){a.text(e)})}}}],br=["$parse","$animate",function(e,r){var s="$$NG_REMOVED",l=i("ngRepeat"),c=function(e,t,n,i,a,o,r){e[n]=i,a&&(e[a]=o),e.$index=t,e.$first=0===t,e.$last=t===r-1,e.$middle=!(e.$first||e.$last),e.$odd=!(e.$even=0===(1&t))},d=function(e){return e.clone[0]},u=function(e){return e.clone[e.clone.length-1]};return{restrict:"A",multiElement:!0,transclude:"element",priority:1e3,terminal:!0,$$tlb:!0,compile:function(i,p){var m=p.ngRepeat,h=t.createComment(" end ngRepeat: "+m+" "),f=m.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!f)throw l("iexp","Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",m);var g=f[1],_=f[2],y=f[3],v=f[4];if(f=g.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/),!f)throw l("iidexp","'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",g);var b=f[3]||f[1],w=f[2];if(y&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(y)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent)$/.test(y)))throw l("badident","alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",y);var $,k,C,S,M={$id:Ot};return v?$=e(v):(C=function(e,t){return Ot(t)},S=function(e){return e}),function(e,t,i,p,f){$&&(k=function(t,n,i){return w&&(M[w]=t),M[b]=n,M.$index=i,$(e,M)});var g=lt();e.$watchCollection(_,function(i){var p,_,v,$,M,x,A,T,E,I,D,P,N=t[0],L=lt();if(y&&(e[y]=i),a(i))E=i,T=k||C;else{T=k||S,E=[];for(var O in i)i.hasOwnProperty(O)&&"$"!=O.charAt(0)&&E.push(O);E.sort()}for($=E.length,D=new Array($),p=0;$>p;p++)if(M=i===E?p:E[p],x=i[M],A=T(M,x,p),g[A])I=g[A],delete g[A],L[A]=I,D[p]=I;else{if(L[A])throw o(D,function(e){e&&e.scope&&(g[e.id]=e)}),l("dupes","Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}",m,A,H(x));D[p]={id:A,scope:n,clone:n},L[A]=!0}for(var U in g){if(I=g[U],P=st(I.clone),r.leave(P),P[0].parentNode)for(p=0,_=P.length;_>p;p++)P[p][s]=!0;I.scope.$destroy()}for(p=0;$>p;p++)if(M=i===E?p:E[p],x=i[M],I=D[p],I.scope){v=N;do v=v.nextSibling;while(v&&v[s]);d(I)!=v&&r.move(st(I.clone),null,zi(N)),N=u(I),c(I.scope,p,b,x,w,M,$)}else f(function(e,t){I.scope=t;var n=h.cloneNode(!1);e[e.length++]=n,r.enter(e,null,zi(N)),N=n,I.clone=e,L[I.id]=I,c(I.scope,p,b,x,w,M,$)});g=L})}}}}],wr="ng-hide",$r="ng-hide-animate",kr=["$animate",function(e){return{restrict:"A",multiElement:!0,link:function(t,n,i){t.$watch(i.ngShow,function(t){e[t?"removeClass":"addClass"](n,wr,{tempClasses:$r})})}}}],Cr=["$animate",function(e){return{restrict:"A",multiElement:!0,link:function(t,n,i){t.$watch(i.ngHide,function(t){e[t?"addClass":"removeClass"](n,wr,{tempClasses:$r})})}}}],Sr=yi(function(e,t,n){e.$watch(n.ngStyle,function(e,n){n&&e!==n&&o(n,function(e,n){t.css(n,"")}),e&&t.css(e)},!0)}),Mr=["$animate",function(e){return{restrict:"EA",require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(n,i,a,r){var s=a.ngSwitch||a.on,l=[],c=[],d=[],u=[],p=function(e,t){return function(){e.splice(t,1)}};n.$watch(s,function(n){var i,a;for(i=0,a=d.length;a>i;++i)e.cancel(d[i]);for(d.length=0,i=0,a=u.length;a>i;++i){var s=st(c[i].clone);u[i].$destroy();var m=d[i]=e.leave(s);m.then(p(d,i))}c.length=0,u.length=0,(l=r.cases["!"+n]||r.cases["?"])&&o(l,function(n){n.transclude(function(i,a){u.push(a);var o=n.element;i[i.length++]=t.createComment(" end ngSwitchWhen: ");var r={clone:i};c.push(r),e.enter(i,o.parent(),o)})})})}}}],xr=yi({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(e,t,n,i,a){i.cases["!"+n.ngSwitchWhen]=i.cases["!"+n.ngSwitchWhen]||[],i.cases["!"+n.ngSwitchWhen].push({transclude:a,element:t})}}),Ar=yi({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(e,t,n,i,a){i.cases["?"]=i.cases["?"]||[],i.cases["?"].push({transclude:a,element:t})}}),Tr=yi({restrict:"EAC",link:function(e,t,n,a,o){if(!o)throw i("ngTransclude")("orphan","Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}",V(t));o(function(e){t.empty(),t.append(e)})}}),Er=["$templateCache",function(e){return{restrict:"E",terminal:!0,compile:function(t,n){if("text/ng-template"==n.type){var i=n.id,a=t[0].text;e.put(i,a)}}}}],Ir=i("ngOptions"),Dr=g({restrict:"A",terminal:!0}),Pr=["$compile","$parse",function(e,i){var a=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,s={$setViewValue:h};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function(e,t,n){var i,a,o=this,r={},l=s;o.databound=n.ngModel,o.init=function(e,t,n){l=e,i=t,a=n},o.addOption=function(t,n){ot(t,'"option value"'),r[t]=!0,l.$viewValue==t&&(e.val(t),a.parent()&&a.remove()),n&&n[0].hasAttribute("selected")&&(n[0].selected=!0)},o.removeOption=function(e){this.hasOption(e)&&(delete r[e],l.$viewValue==e&&this.renderUnknownOption(e))},o.renderUnknownOption=function(t){var n="? "+Ot(t)+" ?";a.val(n),e.prepend(a),e.val(n),a.prop("selected",!0)},o.hasOption=function(e){return r.hasOwnProperty(e)},t.$on("$destroy",function(){o.renderUnknownOption=h})}],link:function(s,l,c,d){function u(e,t,n,i){n.$render=function(){var e=n.$viewValue;i.hasOption(e)?(S.parent()&&S.remove(),t.val(e),""===e&&h.prop("selected",!0)):_(e)&&h?t.val(""):i.renderUnknownOption(e)},t.on("change",function(){e.$apply(function(){S.parent()&&S.remove(),n.$setViewValue(t.val())})})}function p(e,t,n){var i;n.$render=function(){var e=new Ut(n.$viewValue);o(t.find("option"),function(t){t.selected=y(e.get(t.value))})},e.$watch(function(){U(i,n.$viewValue)||(i=O(n.$viewValue),n.$render())}),t.on("change",function(){e.$apply(function(){var e=[];o(t.find("option"),function(t){t.selected&&e.push(t.value)}),n.$setViewValue(e)})})}function m(t,s,l){function c(e,n,i){return B[x]=i,E&&(B[E]=n),e(t,B)}function d(){t.$apply(function(){var e,n=P(t)||[];if(v)e=[],o(s.val(),function(t){t=L?O[t]:t,e.push(u(t,n[t]))});else{var i=L?O[s.val()]:s.val();e=u(i,n[i])}l.$setViewValue(e),_()})}function u(e,t){if("?"===e)return n;if(""===e)return null;var i=T?T:D;return c(i,e,t)}function p(){var e,n=P(t);if(n&&na(n)){e=new Array(n.length);for(var i=0,a=n.length;a>i;i++)e[i]=c(M,i,n[i]);return e}if(n){e={};for(var o in n)n.hasOwnProperty(o)&&(e[o]=c(M,o,n[o]))}return e}function m(e){var t;if(v)if(L&&na(e)){t=new Ut([]);for(var n=0;n<e.length;n++)t.put(c(L,null,e[n]),!0)}else t=new Ut(e);else L&&(e=c(L,null,e));return function(n,i){var a;return a=L?L:T?T:D,v?y(t.remove(c(a,n,i))):e===c(a,n,i)}}function h(){$||(t.$$postDigest(_),$=!0)}function g(e,t,n){e[t]=e[t]||0,e[t]+=n?1:-1}function _(){$=!1;var e,n,i,a,d,u,p,h,_,b,S,x,A,T,D,N,R,F={"":[]},q=[""],H=l.$viewValue,j=P(t)||[],V=E?r(j):j,z={},W=m(H),G=!1;for(O={},x=0;b=V.length,b>x;x++)p=x,E&&(p=V[x],"$"===p.charAt(0))||(h=j[p],e=c(I,p,h)||"",(n=F[e])||(n=F[e]=[],q.push(e)),A=W(p,h),G=G||A,N=c(M,p,h),N=y(N)?N:"",R=L?L(t,B):E?V[x]:x,L&&(O[R]=p),n.push({id:R,label:N,selected:A}));for(v||(w||null===H?F[""].unshift({id:"",label:"",selected:!G}):G||F[""].unshift({id:"?",label:"",selected:!0})),S=0,_=q.length;_>S;S++){for(e=q[S],n=F[e],U.length<=S?(a={element:C.clone().attr("label",e),label:n.label},d=[a],U.push(d),s.append(a.element)):(d=U[S],a=d[0],a.label!=e&&a.element.attr("label",a.label=e)),T=null,x=0,b=n.length;b>x;x++)i=n[x],(u=d[x+1])?(T=u.element,u.label!==i.label&&(g(z,u.label,!1),g(z,i.label,!0),T.text(u.label=i.label)),u.id!==i.id&&T.val(u.id=i.id),T[0].selected!==i.selected&&(T.prop("selected",u.selected=i.selected),Vi&&T.prop("selected",u.selected))):(""===i.id&&w?D=w:(D=k.clone()).val(i.id).prop("selected",i.selected).attr("selected",i.selected).text(i.label),d.push(u={element:D,label:i.label,id:i.id,selected:i.selected}),g(z,i.label,!0),T?T.after(D):a.element.append(D),T=D);for(x++;d.length>x;)i=d.pop(),g(z,i.label,!1),i.element.remove();o(z,function(e,t){e>0?f.addOption(t):0>e&&f.removeOption(t)})}for(;U.length>S;)U.pop()[0].element.remove()}var S;if(!(S=b.match(a)))throw Ir("iexp","Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}",b,V(s));var M=i(S[2]||S[1]),x=S[4]||S[6],A=/ as /.test(S[0])&&S[1],T=A?i(A):null,E=S[5],I=i(S[3]||""),D=i(S[2]?S[1]:x),P=i(S[7]),N=S[8],L=N?i(S[8]):null,O={},U=[[{element:s,label:""}]],B={};w&&(e(w)(t),w.removeClass("ng-scope"),w.remove()),s.empty(),s.on("change",d),l.$render=_,t.$watchCollection(P,h),t.$watchCollection(p,h),v&&t.$watchCollection(function(){return l.$modelValue},h)}if(d[1]){for(var h,f=d[0],g=d[1],v=c.multiple,b=c.ngOptions,w=!1,$=!1,k=zi(t.createElement("option")),C=zi(t.createElement("optgroup")),S=k.clone(),M=0,x=l.children(),A=x.length;A>M;M++)if(""===x[M].value){h=w=x.eq(M);break}f.init(g,w,S),v&&(g.$isEmpty=function(e){return!e||0===e.length}),b?m(s,l,g):v?p(s,l,g):u(s,l,g,f)}}}}],Nr=["$interpolate",function(e){var t={addOption:h,removeOption:h};return{restrict:"E",priority:100,compile:function(n,i){if(_(i.value)){var a=e(n.text(),!0);a||i.$set("value",n.text())}return function(e,n,i){var o="$selectController",r=n.parent(),s=r.data(o)||r.parent().data(o);s&&s.databound||(s=t),a?e.$watch(a,function(e,t){i.$set("value",e),t!==e&&s.removeOption(t),s.addOption(e,n)}):s.addOption(i.value,n),n.on("$destroy",function(){s.removeOption(i.value)})}}}}],Lr=g({restrict:"E",terminal:!1});return e.angular.bootstrap?void console.log("WARNING: Tried to load angular more than once."):(nt(),dt(Qi),void zi(t).ready(function(){Y(t,J)}))}(window,document),!window.angular.$$csp()&&window.angular.element(document).find("head").prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}</style>'),function(e,t){"use strict";function n(){function e(e,n){return t.extend(new(t.extend(function(){},{prototype:e})),n)}function n(e,t){var n=t.caseInsensitiveMatch,i={originalPath:e,regexp:e},a=i.keys=[];return e=e.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(e,t,n,i){var o="?"===i?i:null,r="*"===i?i:null;return a.push({name:n,optional:!!o}),t=t||"",""+(o?"":t)+"(?:"+(o?t:"")+(r&&"(.+?)"||"([^/]+)")+(o||"")+")"+(o||"")}).replace(/([\/$\*])/g,"\\$1"),i.regexp=new RegExp("^"+e+"$",n?"i":""),i}var i={};this.when=function(e,a){var o=t.copy(a);if(t.isUndefined(o.reloadOnSearch)&&(o.reloadOnSearch=!0),i[e]=t.extend(o,e&&n(e,o)),e){var r="/"==e[e.length-1]?e.substr(0,e.length-1):e+"/";i[r]=t.extend({redirectTo:e},n(r,o))}return this},this.otherwise=function(e){return"string"==typeof e&&(e={redirectTo:e}),this.when(null,e),this},this.$get=["$rootScope","$location","$routeParams","$q","$injector","$templateRequest","$sce",function(n,a,o,r,l,c,d){function u(e,t){var n=t.keys,i={};if(!t.regexp)return null;var a=t.regexp.exec(e);if(!a)return null;for(var o=1,r=a.length;r>o;++o){var s=n[o-1],l=a[o];s&&l&&(i[s.name]=l)}return i}function p(e){var i=v.current;g=h(),_=g&&i&&g.$$route===i.$$route&&t.equals(g.pathParams,i.pathParams)&&!g.reloadOnSearch&&!y,_||!i&&!g||n.$broadcast("$routeChangeStart",g,i).defaultPrevented&&e&&e.preventDefault()}function m(){var e=v.current,i=g;_?(e.params=i.params,t.copy(e.params,o),n.$broadcast("$routeUpdate",e)):(i||e)&&(y=!1,v.current=i,i&&i.redirectTo&&(t.isString(i.redirectTo)?a.path(f(i.redirectTo,i.params)).search(i.params).replace():a.url(i.redirectTo(i.pathParams,a.path(),a.search())).replace()),r.when(i).then(function(){if(i){var e,n,a=t.extend({},i.resolve);return t.forEach(a,function(e,n){a[n]=t.isString(e)?l.get(e):l.invoke(e,null,null,n)}),t.isDefined(e=i.template)?t.isFunction(e)&&(e=e(i.params)):t.isDefined(n=i.templateUrl)&&(t.isFunction(n)&&(n=n(i.params)),n=d.getTrustedResourceUrl(n),t.isDefined(n)&&(i.loadedTemplateUrl=n,e=c(n))),t.isDefined(e)&&(a.$template=e),r.all(a)}}).then(function(a){i==v.current&&(i&&(i.locals=a,t.copy(i.params,o)),n.$broadcast("$routeChangeSuccess",i,e))},function(t){i==v.current&&n.$broadcast("$routeChangeError",i,e,t)}))}function h(){var n,o;return t.forEach(i,function(i){!o&&(n=u(a.path(),i))&&(o=e(i,{params:t.extend({},a.search(),n),pathParams:n}),o.$$route=i)}),o||i[null]&&e(i[null],{params:{},pathParams:{}})}function f(e,n){var i=[];return t.forEach((e||"").split(":"),function(e,t){if(0===t)i.push(e);else{var a=e.match(/(\w+)(.*)/),o=a[1];i.push(n[o]),i.push(a[2]||""),delete n[o]}}),i.join("")}var g,_,y=!1,v={routes:i,reload:function(){y=!0,n.$evalAsync(function(){p(),m()})},updateParams:function(e){if(!this.current||!this.current.$$route)throw s("norout","Tried updating route when with no current route");var n={},i=this;t.forEach(Object.keys(e),function(t){i.current.pathParams[t]||(n[t]=e[t])}),e=t.extend({},this.current.params,e),a.path(f(this.current.$$route.originalPath,e)),a.search(t.extend({},a.search(),n))}};return n.$on("$locationChangeStart",p),n.$on("$locationChangeSuccess",m),v}]}function i(){this.$get=function(){return{}}}function a(e,n,i){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,o,r,s,l){function c(){m&&(i.cancel(m),m=null),u&&(u.$destroy(),u=null),p&&(m=i.leave(p),m.then(function(){m=null}),p=null)}function d(){var r=e.current&&e.current.locals,s=r&&r.$template;if(t.isDefined(s)){var d=a.$new(),m=e.current,g=l(d,function(e){i.enter(e,null,p||o).then(function(){!t.isDefined(h)||h&&!a.$eval(h)||n()}),c()});p=g,u=m.scope=d,u.$emit("$viewContentLoaded"),u.$eval(f)}else c()}var u,p,m,h=r.autoscroll,f=r.onload||"";a.$on("$routeChangeSuccess",d),d()}}}function o(e,t,n){return{restrict:"ECA",priority:-400,link:function(i,a){var o=n.current,r=o.locals;a.html(r.$template);var s=e(a.contents());if(o.controller){r.$scope=i;var l=t(o.controller,r);o.controllerAs&&(i[o.controllerAs]=l),a.data("$ngControllerController",l),a.children().data("$ngControllerController",l)}s(i)}}}var r=t.module("ngRoute",["ng"]).provider("$route",n),s=t.$$minErr("ngRoute");r.provider("$routeParams",i),r.directive("ngView",a),r.directive("ngView",o),a.$inject=["$route","$anchorScroll","$animate"],o.$inject=["$compile","$controller","$route"]}(window,window.angular),function(e,t,n){"use strict";t.module("ngAnimate",["ng"]).directive("ngAnimateChildren",function(){var e="$$ngAnimateChildren";return function(n,i,a){var o=a.ngAnimateChildren;t.isString(o)&&0===o.length?i.data(e,!0):n.$watch(o,function(t){i.data(e,!!t)})}}).factory("$$animateReflow",["$$rAF","$document",function(e,t){var n=t[0].body;return function(t){return e(function(){n.offsetWidth+1;t()})}}]).config(["$provide","$animateProvider",function(i,a){function o(e){for(var t=0;t<e.length;t++){var n=e[t];if(n.nodeType==f)return n}}function r(e){return e&&t.element(e)}function s(e){return t.element(o(e))}function l(e,t){return o(e)==o(t)}var c=t.noop,d=t.forEach,u=a.$$selectors,p=t.isArray,m=t.isString,h=t.isObject,f=1,g="$$ngAnimateState",_="$$ngAnimateChildren",y="ng-animate",v={running:!0};i.decorator("$animate",["$delegate","$$q","$injector","$sniffer","$rootElement","$$asyncCallback","$rootScope","$document","$templateRequest",function(e,n,i,f,b,w,$,k,C){function S(e,t){var n=e.data(g)||{};return t&&(n.running=!0,n.structural=!0,e.data(g,n)),n.disabled||n.running&&n.structural}function M(e){var t,i=n.defer();return i.promise.$$cancelFn=function(){t&&t()},$.$$postDigest(function(){t=e(function(){i.resolve()})}),i.promise}function x(e){return h(e)?(e.tempClasses&&m(e.tempClasses)&&(e.tempClasses=e.tempClasses.split(/\s+/)),e):void 0}function A(e,t,n){n=n||{};var i={};d(n,function(e,t){d(t.split(" "),function(t){i[t]=e})});var a=Object.create(null);d((e.attr("class")||"").split(/\s+/),function(e){a[e]=!0 |
|
|
});var o=[],r=[];return d(t&&t.classes||[],function(e,t){var n=a[t],s=i[t]||{};e===!1?(n||"addClass"==s.event)&&r.push(t):e===!0&&(n&&"removeClass"!=s.event||o.push(t))}),o.length+r.length>0&&[o.join(" "),r.join(" ")]}function T(e){if(e){var t=[],n={},a=e.substr(1).split(".");(f.transitions||f.animations)&&t.push(i.get(u[""]));for(var o=0;o<a.length;o++){var r=a[o],s=u[r];s&&!n[r]&&(t.push(i.get(s)),n[r]=!0)}return t}}function E(e,n,i,a){function o(e,t){var n=e[t],i=e["before"+t.charAt(0).toUpperCase()+t.substr(1)];return n||i?("leave"==t&&(i=n,n=null),$.push({event:t,fn:n}),v.push({event:t,fn:i}),!0):void 0}function r(t,n,o){function r(e){if(n){if((n[e]||c)(),++p<s.length)return;n=null}o()}var s=[];d(t,function(e){e.fn&&s.push(e)});var p=0;d(s,function(t,o){var s=function(){r(o)};switch(t.event){case"setClass":n.push(t.fn(e,l,u,s,a));break;case"animate":n.push(t.fn(e,i,a.from,a.to,s));break;case"addClass":n.push(t.fn(e,l||i,s,a));break;case"removeClass":n.push(t.fn(e,u||i,s,a));break;default:n.push(t.fn(e,s,a))}}),n&&0===n.length&&o()}var s=e[0];if(s){a&&(a.to=a.to||{},a.from=a.from||{});var l,u;p(i)&&(l=i[0],u=i[1],l?u?i=l+" "+u:(i=l,n="addClass"):(i=u,n="removeClass"));var m="setClass"==n,h=m||"addClass"==n||"removeClass"==n||"animate"==n,f=e.attr("class"),g=f+" "+i;if(B(g)){var _=c,y=[],v=[],b=c,w=[],$=[],k=(" "+g).replace(/\s+/g,".");return d(T(k),function(e){var t=o(e,n);!t&&m&&(o(e,"addClass"),o(e,"removeClass"))}),{node:s,event:n,className:i,isClassBased:h,isSetClassOperation:m,applyStyles:function(){a&&e.css(t.extend(a.from||{},a.to||{}))},before:function(e){_=e,r(v,y,function(){_=c,e()})},after:function(e){b=e,r($,w,function(){b=c,e()})},cancel:function(){y&&(d(y,function(e){(e||c)(!0)}),_(!0)),w&&(d(w,function(e){(e||c)(!0)}),b(!0))}}}}}function I(e,n,i,a,o,r,s,l){function u(t){var a="$animate:"+t;$&&$[a]&&$[a].length>0&&w(function(){i.triggerHandler(a,{event:e,className:n})})}function p(){u("before")}function m(){u("after")}function h(){u("close"),l()}function f(){f.hasBeenRun||(f.hasBeenRun=!0,r())}function _(){if(!_.hasBeenRun){b&&b.applyStyles(),_.hasBeenRun=!0,s&&s.tempClasses&&d(s.tempClasses,function(e){i.removeClass(e)});var t=i.data(g);t&&(b&&b.isClassBased?P(i,n):(w(function(){var t=i.data(g)||{};D==t.index&&P(i,n,e)}),i.data(g,t))),h()}}var v=c,b=E(i,e,n,s);if(!b)return f(),p(),m(),_(),v;e=b.event,n=b.className;var $=t.element._data(b.node);if($=$&&$.events,a||(a=o?o.parent():i.parent()),N(i,a))return f(),p(),m(),_(),v;var k=i.data(g)||{},C=k.active||{},S=k.totalActive||0,M=k.last,x=!1;if(S>0){var A=[];if(b.isClassBased){if("setClass"==M.event)A.push(M),P(i,n);else if(C[n]){var T=C[n];T.event==e?x=!0:(A.push(T),P(i,n))}}else if("leave"==e&&C["ng-leave"])x=!0;else{for(var I in C)A.push(C[I]);k={},P(i,!0)}A.length>0&&d(A,function(e){e.cancel()})}if(!b.isClassBased||b.isSetClassOperation||"animate"==e||x||(x="addClass"==e==i.hasClass(n)),x)return f(),p(),m(),h(),v;C=k.active||{},S=k.totalActive||0,"leave"==e&&i.one("$destroy",function(){var e=t.element(this),n=e.data(g);if(n){var i=n.active["ng-leave"];i&&(i.cancel(),P(e,"ng-leave"))}}),i.addClass(y),s&&s.tempClasses&&d(s.tempClasses,function(e){i.addClass(e)});var D=O++;return S++,C[n]=b,i.data(g,{last:b,active:C,index:D,totalActive:S}),p(),b.before(function(t){var a=i.data(g);t=t||!a||!a.active[n]||b.isClassBased&&a.active[n].event!=e,f(),t===!0?_():(m(),b.after(_))}),b.cancel}function D(e){var n=o(e);if(n){var i=t.isFunction(n.getElementsByClassName)?n.getElementsByClassName(y):n.querySelectorAll("."+y);d(i,function(e){e=t.element(e);var n=e.data(g);n&&n.active&&d(n.active,function(e){e.cancel()})})}}function P(e,t){if(l(e,b))v.disabled||(v.running=!1,v.structural=!1);else if(t){var n=e.data(g)||{},i=t===!0;!i&&n.active&&n.active[t]&&(n.totalActive--,delete n.active[t]),(i||!n.totalActive)&&(e.removeClass(y),e.removeData(g))}}function N(e,n){if(v.disabled)return!0;if(l(e,b))return v.running;var i,a,o;do{if(0===n.length)break;var r=l(n,b),s=r?v:n.data(g)||{};if(s.disabled)return!0;if(r&&(o=!0),i!==!1){var c=n.data(_);t.isDefined(c)&&(i=c)}a=a||s.running||s.last&&!s.last.isClassBased}while(n=n.parent());return!o||!i&&a}b.data(g,v);var L=$.$watch(function(){return C.totalPendingRequests},function(e){0===e&&(L(),$.$$postDigest(function(){$.$$postDigest(function(){v.running=!1})}))}),O=0,U=a.classNameFilter(),B=U?function(e){return U.test(e)}:function(){return!0};return{animate:function(e,t,n,i,a){return i=i||"ng-inline-animate",a=x(a)||{},a.from=n?t:null,a.to=n?n:t,M(function(t){return I("animate",i,s(e),null,null,c,a,t)})},enter:function(n,i,a,o){return o=x(o),n=t.element(n),i=r(i),a=r(a),S(n,!0),e.enter(n,i,a),M(function(e){return I("enter","ng-enter",s(n),i,a,c,o,e)})},leave:function(n,i){return i=x(i),n=t.element(n),D(n),S(n,!0),M(function(t){return I("leave","ng-leave",s(n),null,null,function(){e.leave(n)},i,t)})},move:function(n,i,a,o){return o=x(o),n=t.element(n),i=r(i),a=r(a),D(n),S(n,!0),e.move(n,i,a),M(function(e){return I("move","ng-move",s(n),i,a,c,o,e)})},addClass:function(e,t,n){return this.setClass(e,t,[],n)},removeClass:function(e,t,n){return this.setClass(e,[],t,n)},setClass:function(n,i,a,r){r=x(r);var l="$$animateClasses";if(n=t.element(n),n=s(n),S(n))return e.$$setClassImmediately(n,i,a,r);var c,u=n.data(l),m=!!u;return u||(u={},u.classes={}),c=u.classes,i=p(i)?i:i.split(" "),d(i,function(e){e&&e.length&&(c[e]=!0)}),a=p(a)?a:a.split(" "),d(a,function(e){e&&e.length&&(c[e]=!1)}),m?(r&&u.options&&(u.options=t.extend(u.options||{},r)),u.promise):(n.data(l,u={classes:c,options:r}),u.promise=M(function(t){var i=n.parent(),a=o(n),r=a.parentNode;if(!r||r.$$NG_REMOVED||a.$$NG_REMOVED)return void t();var s=n.data(l);n.removeData(l);var c=n.data(g)||{},d=A(n,s,c.active);return d?I("setClass",d,n,i,null,function(){d[0]&&e.$$addClassImmediately(n,d[0]),d[1]&&e.$$removeClassImmediately(n,d[1])},s.options,t):t()}))},cancel:function(e){e.$$cancelFn()},enabled:function(e,t){switch(arguments.length){case 2:if(e)P(t);else{var n=t.data(g)||{};n.disabled=!0,t.data(g,n)}break;case 1:v.disabled=!e;break;default:e=!v.disabled}return!!e}}}]),a.register("",["$window","$sniffer","$timeout","$$animateReflow",function(i,a,r,s){function l(){N||(N=s(function(){G=[],N=null,z={}}))}function u(e,t){N&&N(),G.push(t),N=s(function(){d(G,function(e){e()}),G=[],N=null,z={}})}function h(e,n){var i=o(e);e=t.element(i),Z.push(e);var a=Date.now()+n;X>=a||(r.cancel(K),X=a,K=r(function(){g(Z),Z=[]},n,!1))}function g(e){d(e,function(e){var t=e.data(q);t&&d(t.closeAnimationFns,function(e){e()})})}function _(e,t){var n=t?z[t]:null;if(!n){var a=0,o=0,r=0,s=0;d(e,function(e){if(e.nodeType==f){var t=i.getComputedStyle(e)||{},n=t[T+L];a=Math.max(y(n),a);var l=t[T+U];o=Math.max(y(l),o);{t[I+U]}s=Math.max(y(t[I+U]),s);var c=y(t[I+L]);c>0&&(c*=parseInt(t[I+B],10)||1),r=Math.max(c,r)}}),n={total:0,transitionDelay:o,transitionDuration:a,animationDelay:s,animationDuration:r},t&&(z[t]=n)}return n}function y(e){var t=0,n=m(e)?e.split(/\s*,\s*/):[];return d(n,function(e){t=Math.max(parseFloat(e)||0,t)}),t}function v(e){var t=e.parent(),n=t.data(F);return n||(t.data(F,++W),n=W),n+"-"+o(e).getAttribute("class")}function b(e,t,n,i){var a=["ng-enter","ng-leave","ng-move"].indexOf(n)>=0,r=v(t),s=r+" "+n,l=z[s]?++z[s].total:0,c={};if(l>0){var d=n+"-stagger",u=r+" "+d,p=!z[u];p&&t.addClass(d),c=_(t,u),p&&t.removeClass(d)}t.addClass(n);var m=t.data(q)||{},h=_(t,s),f=h.transitionDuration,g=h.animationDuration;if(a&&0===f&&0===g)return t.removeClass(n),!1;var y=i||a&&f>0,b=g>0&&c.animationDelay>0&&0===c.animationDuration,w=m.closeAnimationFns||[];t.data(q,{stagger:c,cacheKey:s,running:m.running||0,itemIndex:l,blockTransition:y,closeAnimationFns:w});var C=o(t);return y&&($(C,!0),i&&t.css(i)),b&&k(C,!0),!0}function w(e,t,n,i,a){function s(){t.off(U,l),t.removeClass(p),t.removeClass(m),L&&r.cancel(L),x(t,n);var e=o(t);for(var i in g)e.style.removeProperty(g[i])}function l(e){e.stopPropagation();var t=e.originalEvent||e,n=t.$manualTimeStamp||t.timeStamp||Date.now(),a=parseFloat(t.elapsedTime.toFixed(H));Math.max(n-O,0)>=I&&a>=A&&i()}var c=o(t),u=t.data(q);if(-1==c.getAttribute("class").indexOf(n)||!u)return void i();var p="",m="";d(n.split(" "),function(e,t){var n=(t>0?" ":"")+e;p+=n+"-active",m+=n+"-pending"});var f="",g=[],y=u.itemIndex,v=u.stagger,b=0;if(y>0){var w=0;v.transitionDelay>0&&0===v.transitionDuration&&(w=v.transitionDelay*y);var C=0;v.animationDelay>0&&0===v.animationDuration&&(C=v.animationDelay*y,g.push(P+"animation-play-state")),b=Math.round(100*Math.max(w,C))/100}b||(t.addClass(p),u.blockTransition&&$(c,!1));var S=u.cacheKey+" "+p,M=_(t,S),A=Math.max(M.transitionDuration,M.animationDuration);if(0===A)return t.removeClass(p),x(t,n),void i();!b&&a&&(M.transitionDuration||(t.css("transition",M.animationDuration+"s linear all"),g.push("transition")),t.css(a));var T=Math.max(M.transitionDelay,M.animationDelay),I=T*V;if(g.length>0){var N=c.getAttribute("style")||"";";"!==N.charAt(N.length-1)&&(N+=";"),c.setAttribute("style",N+" "+f)}var L,O=Date.now(),U=D+" "+E,B=(T+A)*j,R=(b+B)*V;return b>0&&(t.addClass(m),L=r(function(){L=null,M.transitionDuration>0&&$(c,!1),M.animationDuration>0&&k(c,!1),t.addClass(p),t.removeClass(m),a&&(0===M.transitionDuration&&t.css("transition",M.animationDuration+"s linear all"),t.css(a),g.push("transition"))},b*V,!1)),t.on(U,l),u.closeAnimationFns.push(function(){s(),i()}),u.running++,h(t,R),s}function $(e,t){e.style[T+O]=t?"none":""}function k(e,t){e.style[I+R]=t?"paused":""}function C(e,t,n,i){return b(e,t,n,i)?function(e){e&&x(t,n)}:void 0}function S(e,t,n,i,a){return t.data(q)?w(e,t,n,i,a):(x(t,n),void i())}function M(e,t,n,i,a){var o=C(e,t,n,a.from);if(!o)return l(),void i();var r=o;return u(t,function(){r=S(e,t,n,i,a.to)}),function(e){(r||c)(e)}}function x(e,t){e.removeClass(t);var n=e.data(q);n&&(n.running&&n.running--,n.running&&0!==n.running||e.removeData(q))}function A(e,t){var n="";return e=p(e)?e:e.split(/\s+/),d(e,function(e,i){e&&e.length>0&&(n+=(i>0?" ":"")+e+t)}),n}var T,E,I,D,P="";e.ontransitionend===n&&e.onwebkittransitionend!==n?(P="-webkit-",T="WebkitTransition",E="webkitTransitionEnd transitionend"):(T="transition",E="transitionend"),e.onanimationend===n&&e.onwebkitanimationend!==n?(P="-webkit-",I="WebkitAnimation",D="webkitAnimationEnd animationend"):(I="animation",D="animationend");var N,L="Duration",O="Property",U="Delay",B="IterationCount",R="PlayState",F="$$ngAnimateKey",q="$$ngAnimateCSS3Data",H=3,j=1.5,V=1e3,z={},W=0,G=[],K=null,X=0,Z=[];return{animate:function(e,t,n,i,a,o){return o=o||{},o.from=n,o.to=i,M("animate",e,t,a,o)},enter:function(e,t,n){return n=n||{},M("enter",e,"ng-enter",t,n)},leave:function(e,t,n){return n=n||{},M("leave",e,"ng-leave",t,n)},move:function(e,t,n){return n=n||{},M("move",e,"ng-move",t,n)},beforeSetClass:function(e,t,n,i,a){a=a||{};var o=A(n,"-remove")+" "+A(t,"-add"),r=C("setClass",e,o,a.from);return r?(u(e,i),r):(l(),void i())},beforeAddClass:function(e,t,n,i){i=i||{};var a=C("addClass",e,A(t,"-add"),i.from);return a?(u(e,n),a):(l(),void n())},beforeRemoveClass:function(e,t,n,i){i=i||{};var a=C("removeClass",e,A(t,"-remove"),i.from);return a?(u(e,n),a):(l(),void n())},setClass:function(e,t,n,i,a){a=a||{},n=A(n,"-remove"),t=A(t,"-add");var o=n+" "+t;return S("setClass",e,o,i,a.to)},addClass:function(e,t,n,i){return i=i||{},S("addClass",e,A(t,"-add"),n,i.to)},removeClass:function(e,t,n,i){return i=i||{},S("removeClass",e,A(t,"-remove"),n,i.to)}}}])}])}(window,window.angular),function(e,t){"use strict";function n(){this.$get=["$$sanitizeUri",function(e){return function(t){var n=[];return o(t,l(n,function(t,n){return!/^unsafe/.test(e(t,n))})),n.join("")}}]}function i(e){var n=[],i=l(n,t.noop);return i.chars(e),n.join("")}function a(e){var t,n={},i=e.split(",");for(t=0;t<i.length;t++)n[i[t]]=!0;return n}function o(e,n){function i(e,i,o,s){if(i=t.lowercase(i),C[i])for(;v.last()&&S[v.last()];)a("",v.last());k[i]&&v.last()==i&&a("",i),s=b[i]||!!s,s||v.push(i);var l={};o.replace(p,function(e,t,n,i,a){var o=n||i||a||"";l[t]=r(o)}),n.start&&n.start(i,l,s)}function a(e,i){var a,o=0;if(i=t.lowercase(i))for(o=v.length-1;o>=0&&v[o]!=i;o--);if(o>=0){for(a=v.length-1;a>=o;a--)n.end&&n.end(v[a]);v.length=o}}"string"!=typeof e&&(e=null===e||"undefined"==typeof e?"":""+e);var o,s,l,y,v=[],w=e;for(v.last=function(){return v[v.length-1]};e;){if(y="",s=!0,v.last()&&x[v.last()]?(e=e.replace(new RegExp("(.*)<\\s*\\/\\s*"+v.last()+"[^>]*>","i"),function(e,t){return t=t.replace(f,"$1").replace(_,"$1"),n.chars&&n.chars(r(t)),""}),a("",v.last())):(0===e.indexOf("<!--")?(o=e.indexOf("--",4),o>=0&&e.lastIndexOf("-->",o)===o&&(n.comment&&n.comment(e.substring(4,o)),e=e.substring(o+3),s=!1)):g.test(e)?(l=e.match(g),l&&(e=e.replace(l[0],""),s=!1)):h.test(e)?(l=e.match(u),l&&(e=e.substring(l[0].length),l[0].replace(u,a),s=!1)):m.test(e)&&(l=e.match(d),l?(l[4]&&(e=e.substring(l[0].length),l[0].replace(d,i)),s=!1):(y+="<",e=e.substring(1))),s&&(o=e.indexOf("<"),y+=0>o?e:e.substring(0,o),e=0>o?"":e.substring(o),n.chars&&n.chars(r(y)))),e==w)throw c("badparse","The sanitizer was unable to parse the following block of html: {0}",e);w=e}a()}function r(e){if(!e)return"";var t=N.exec(e),n=t[1],i=t[3],a=t[2];return a&&(P.innerHTML=a.replace(/</g,"<"),a="textContent"in P?P.textContent:P.innerText),n+a+i}function s(e){return e.replace(/&/g,"&").replace(y,function(e){var t=e.charCodeAt(0),n=e.charCodeAt(1);return"&#"+(1024*(t-55296)+(n-56320)+65536)+";"}).replace(v,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(/</g,"<").replace(/>/g,">")}function l(e,n){var i=!1,a=t.bind(e,e.push);return{start:function(e,o,r){e=t.lowercase(e),!i&&x[e]&&(i=e),i||A[e]!==!0||(a("<"),a(e),t.forEach(o,function(i,o){var r=t.lowercase(o),l="img"===e&&"src"===r||"background"===r;D[r]!==!0||T[r]===!0&&!n(i,l)||(a(" "),a(o),a('="'),a(s(i)),a('"'))}),a(r?"/>":">"))},end:function(e){e=t.lowercase(e),i||A[e]!==!0||(a("</"),a(e),a(">")),e==i&&(i=!1)},chars:function(e){i||a(s(e))}}}var c=t.$$minErr("$sanitize"),d=/^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,u=/^<\/\s*([\w:-]+)[^>]*>/,p=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,m=/^</,h=/^<\//,f=/<!--(.*?)-->/g,g=/<!DOCTYPE([^>]*?)>/i,_=/<!\[CDATA\[(.*?)]]>/g,y=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,v=/([^\#-~| |!])/g,b=a("area,br,col,hr,img,wbr"),w=a("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),$=a("rp,rt"),k=t.extend({},$,w),C=t.extend({},w,a("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),S=t.extend({},$,a("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),M=a("animate,animateColor,animateMotion,animateTransform,circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,set,stop,svg,switch,text,title,tspan,use"),x=a("script,style"),A=t.extend({},b,C,S,k,M),T=a("background,cite,href,longdesc,src,usemap,xlink:href"),E=a("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,target,title,type,valign,value,vspace,width"),I=a("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,attributeName,attributeType,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan"),D=t.extend({},T,I,E),P=document.createElement("pre"),N=/^(\s*)([\s\S]*?)(\s*)$/;t.module("ngSanitize",[]).provider("$sanitize",n),t.module("ngSanitize").filter("linky",["$sanitize",function(e){var n=/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"]/,a=/^mailto:/;return function(o,r){function s(e){e&&m.push(i(e))}function l(e,n){m.push("<a "),t.isDefined(r)&&(m.push('target="'),m.push(r),m.push('" ')),m.push('href="'),m.push(e),m.push('">'),s(n),m.push("</a>")}if(!o)return o;for(var c,d,u,p=o,m=[];c=p.match(n);)d=c[0],c[2]==c[3]&&(d="mailto:"+d),u=c.index,s(p.substr(0,u)),l(d,c[0].replace(a,"")),p=p.substring(u+c[0].length);return s(p),e(m.join(""))}}])}(window,window.angular),function(e,t){"use strict";function n(e,n,a){i.directive(e,["$parse","$swipe",function(i,o){var r=75,s=.3,l=30;return function(c,d,u){function p(e){if(!m)return!1;var t=Math.abs(e.y-m.y),i=(e.x-m.x)*n;return h&&r>t&&i>0&&i>l&&s>t/i}var m,h,f=i(u[e]),g=["touch"];t.isDefined(u.ngSwipeDisableMouse)||g.push("mouse"),o.bind(d,{start:function(e){m=e,h=!0},cancel:function(){h=!1},end:function(e,t){p(e)&&c.$apply(function(){d.triggerHandler(a),f(c,{$event:t})})}},g)}}])}var i=t.module("ngTouch",[]);i.factory("$swipe",[function(){function e(e){var t=e.touches&&e.touches.length?e.touches:[e],n=e.changedTouches&&e.changedTouches[0]||e.originalEvent&&e.originalEvent.changedTouches&&e.originalEvent.changedTouches[0]||t[0].originalEvent||t[0];return{x:n.clientX,y:n.clientY}}function n(e,n){var i=[];return t.forEach(e,function(e){var t=a[e][n];t&&i.push(t)}),i.join(" ")}var i=10,a={mouse:{start:"mousedown",move:"mousemove",end:"mouseup"},touch:{start:"touchstart",move:"touchmove",end:"touchend",cancel:"touchcancel"}};return{bind:function(t,a,o){var r,s,l,c,d=!1;o=o||["mouse","touch"],t.on(n(o,"start"),function(t){l=e(t),d=!0,r=0,s=0,c=l,a.start&&a.start(l,t)});var u=n(o,"cancel");u&&t.on(u,function(e){d=!1,a.cancel&&a.cancel(e)}),t.on(n(o,"move"),function(t){if(d&&l){var n=e(t);if(r+=Math.abs(n.x-c.x),s+=Math.abs(n.y-c.y),c=n,!(i>r&&i>s))return s>r?(d=!1,void(a.cancel&&a.cancel(t))):(t.preventDefault(),void(a.move&&a.move(n,t)))}}),t.on(n(o,"end"),function(t){d&&(d=!1,a.end&&a.end(e(t),t))})}}}]),i.config(["$provide",function(e){e.decorator("ngClickDirective",["$delegate",function(e){return e.shift(),e}])}]),i.directive("ngClick",["$parse","$timeout","$rootElement",function(e,n,i){function a(e,t,n,i){return Math.abs(e-n)<f&&Math.abs(t-i)<f}function o(e,t,n){for(var i=0;i<e.length;i+=2)if(a(e[i],e[i+1],t,n))return e.splice(i,i+2),!0;return!1}function r(e){if(!(Date.now()-c>h)){var t=e.touches&&e.touches.length?e.touches:[e],n=t[0].clientX,i=t[0].clientY;1>n&&1>i||u&&u[0]===n&&u[1]===i||(u&&(u=null),"label"===e.target.tagName.toLowerCase()&&(u=[n,i]),o(d,n,i)||(e.stopPropagation(),e.preventDefault(),e.target&&e.target.blur()))}}function s(e){var t=e.touches&&e.touches.length?e.touches:[e],i=t[0].clientX,a=t[0].clientY;d.push(i,a),n(function(){for(var e=0;e<d.length;e+=2)if(d[e]==i&&d[e+1]==a)return void d.splice(e,e+2)},h,!1)}function l(e,t){d||(i[0].addEventListener("click",r,!0),i[0].addEventListener("touchstart",s,!0),d=[]),c=Date.now(),o(d,e,t)}var c,d,u,p=750,m=12,h=2500,f=25,g="ng-click-active";return function(n,i,a){function o(){h=!1,i.removeClass(g)}var r,s,c,d,u=e(a.ngClick),h=!1;i.on("touchstart",function(e){h=!0,r=e.target?e.target:e.srcElement,3==r.nodeType&&(r=r.parentNode),i.addClass(g),s=Date.now();var t=e.touches&&e.touches.length?e.touches:[e],n=t[0].originalEvent||t[0];c=n.clientX,d=n.clientY}),i.on("touchmove",function(){o()}),i.on("touchcancel",function(){o()}),i.on("touchend",function(e){var n=Date.now()-s,u=e.changedTouches&&e.changedTouches.length?e.changedTouches:e.touches&&e.touches.length?e.touches:[e],f=u[0].originalEvent||u[0],g=f.clientX,_=f.clientY,y=Math.sqrt(Math.pow(g-c,2)+Math.pow(_-d,2));h&&p>n&&m>y&&(l(g,_),r&&r.blur(),t.isDefined(a.disabled)&&a.disabled!==!1||i.triggerHandler("click",[e])),o()}),i.onclick=function(){},i.on("click",function(e,t){n.$apply(function(){u(n,{$event:t||e})})}),i.on("mousedown",function(){i.addClass(g)}),i.on("mousemove mouseup",function(){i.removeClass(g)})}}]),n("ngSwipeLeft",-1,"swipeleft"),n("ngSwipeRight",1,"swiperight")}(window,window.angular),angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.dropdown","ui.bootstrap.tooltip","ui.bootstrap.position","ui.bootstrap.bindHtml","ui.bootstrap.modal","ui.bootstrap.transition"]),angular.module("ui.bootstrap.tpls",["template/tooltip/tooltip-html-unsafe-popup.html","template/tooltip/tooltip-popup.html","template/modal/backdrop.html","template/modal/window.html"]),angular.module("ui.bootstrap.dropdown",[]).constant("dropdownConfig",{openClass:"open"}).service("dropdownService",["$document",function(e){var t=null;this.open=function(a){t||(e.bind("click",n),e.bind("keydown",i)),t&&t!==a&&(t.isOpen=!1),t=a},this.close=function(a){t===a&&(t=null,e.unbind("click",n),e.unbind("keydown",i))};var n=function(e){if(t){var n=t.getToggleElement();e&&n&&n[0].contains(e.target)||t.$apply(function(){t.isOpen=!1})}},i=function(e){27===e.which&&(t.focusToggleElement(),n())}}]).controller("DropdownController",["$scope","$attrs","$parse","dropdownConfig","dropdownService","$animate",function(e,t,n,i,a,o){var r,s=this,l=e.$new(),c=i.openClass,d=angular.noop,u=t.onToggle?n(t.onToggle):angular.noop;this.init=function(i){s.$element=i,t.isOpen&&(r=n(t.isOpen),d=r.assign,e.$watch(r,function(e){l.isOpen=!!e}))},this.toggle=function(e){return l.isOpen=arguments.length?!!e:!l.isOpen},this.isOpen=function(){return l.isOpen},l.getToggleElement=function(){return s.toggleElement},l.focusToggleElement=function(){s.toggleElement&&s.toggleElement[0].focus()},l.$watch("isOpen",function(t,n){o[t?"addClass":"removeClass"](s.$element,c),t?(l.focusToggleElement(),a.open(l)):a.close(l),d(e,t),angular.isDefined(t)&&t!==n&&u(e,{open:!!t})}),e.$on("$locationChangeSuccess",function(){l.isOpen=!1}),e.$on("$destroy",function(){l.$destroy()})}]).directive("dropdown",function(){return{controller:"DropdownController",link:function(e,t,n,i){i.init(t)}}}).directive("dropdownToggle",function(){return{require:"?^dropdown",link:function(e,t,n,i){if(i){i.toggleElement=t;var a=function(a){a.preventDefault(),t.hasClass("disabled")||n.disabled||e.$apply(function(){i.toggle()})};t.bind("click",a),t.attr({"aria-haspopup":!0,"aria-expanded":!1}),e.$watch(i.isOpen,function(e){t.attr("aria-expanded",!!e)}),e.$on("$destroy",function(){t.unbind("click",a)})}}}}),angular.module("ui.bootstrap.tooltip",["ui.bootstrap.position","ui.bootstrap.bindHtml"]).provider("$tooltip",function(){function e(e){var t=/[A-Z]/g,n="-";return e.replace(t,function(e,t){return(t?n:"")+e.toLowerCase()})}var t={placement:"top",animation:!0,popupDelay:0},n={mouseenter:"mouseleave",click:"click",focus:"blur"},i={};this.options=function(e){angular.extend(i,e)},this.setTriggers=function(e){angular.extend(n,e)},this.$get=["$window","$compile","$timeout","$document","$position","$interpolate",function(a,o,r,s,l,c){return function(a,d,u){function p(e){var t=e||m.trigger||u,i=n[t]||t;return{show:t,hide:i}}var m=angular.extend({},t,i),h=e(a),f=c.startSymbol(),g=c.endSymbol(),_="<div "+h+'-popup title="'+f+"title"+g+'" content="'+f+"content"+g+'" placement="'+f+"placement"+g+'" animation="animation" is-open="isOpen"></div>';return{restrict:"EA",compile:function(){var e=o(_);return function(t,n,i){function o(){T.isOpen?u():c()}function c(){(!A||t.$eval(i[d+"Enable"]))&&(y(),T.popupDelay?S||(S=r(h,T.popupDelay,!1),S.then(function(e){e()})):h()())}function u(){t.$apply(function(){f()})}function h(){return S=null,C&&(r.cancel(C),C=null),T.content?(g(),$.css({top:0,left:0,display:"block"}),M?s.find("body").append($):n.after($),E(),T.isOpen=!0,T.$digest(),E):angular.noop}function f(){T.isOpen=!1,r.cancel(S),S=null,T.animation?C||(C=r(_,500)):_()}function g(){$&&_(),k=T.$new(),$=e(k,angular.noop)}function _(){C=null,$&&($.remove(),$=null),k&&(k.$destroy(),k=null)}function y(){v(),b()}function v(){var e=i[d+"Placement"];T.placement=angular.isDefined(e)?e:m.placement}function b(){var e=i[d+"PopupDelay"],t=parseInt(e,10);T.popupDelay=isNaN(t)?m.popupDelay:t}function w(){var e=i[d+"Trigger"];I(),x=p(e),x.show===x.hide?n.bind(x.show,o):(n.bind(x.show,c),n.bind(x.hide,u))}var $,k,C,S,M=angular.isDefined(m.appendToBody)?m.appendToBody:!1,x=p(void 0),A=angular.isDefined(i[d+"Enable"]),T=t.$new(!0),E=function(){var e=l.positionElements(n,$,T.placement,M);e.top+="px",e.left+="px",$.css(e)};T.isOpen=!1,i.$observe(a,function(e){T.content=e,!e&&T.isOpen&&f()}),i.$observe(d+"Title",function(e){T.title=e});var I=function(){n.unbind(x.show,c),n.unbind(x.hide,u)};w();var D=t.$eval(i[d+"Animation"]);T.animation=angular.isDefined(D)?!!D:m.animation;var P=t.$eval(i[d+"AppendToBody"]);M=angular.isDefined(P)?P:M,M&&t.$on("$locationChangeSuccess",function(){T.isOpen&&f()}),t.$on("$destroy",function(){r.cancel(C),r.cancel(S),I(),_(),T=null})}}}}}]}).directive("tooltipPopup",function(){return{restrict:"EA",replace:!0,scope:{content:"@",placement:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-popup.html"}}).directive("tooltip",["$tooltip",function(e){return e("tooltip","tooltip","mouseenter")}]).directive("tooltipHtmlUnsafePopup",function(){return{restrict:"EA",replace:!0,scope:{content:"@",placement:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-html-unsafe-popup.html"}}).directive("tooltipHtmlUnsafe",["$tooltip",function(e){return e("tooltipHtmlUnsafe","tooltip","mouseenter")}]),angular.module("ui.bootstrap.position",[]).factory("$position",["$document","$window",function(e,t){function n(e,n){return e.currentStyle?e.currentStyle[n]:t.getComputedStyle?t.getComputedStyle(e)[n]:e.style[n]}function i(e){return"static"===(n(e,"position")||"static")}var a=function(t){for(var n=e[0],a=t.offsetParent||n;a&&a!==n&&i(a);)a=a.offsetParent;return a||n};return{position:function(t){var n=this.offset(t),i={top:0,left:0},o=a(t[0]);o!=e[0]&&(i=this.offset(angular.element(o)),i.top+=o.clientTop-o.scrollTop,i.left+=o.clientLeft-o.scrollLeft);var r=t[0].getBoundingClientRect();return{width:r.width||t.prop("offsetWidth"),height:r.height||t.prop("offsetHeight"),top:n.top-i.top,left:n.left-i.left}},offset:function(n){var i=n[0].getBoundingClientRect();return{width:i.width||n.prop("offsetWidth"),height:i.height||n.prop("offsetHeight"),top:i.top+(t.pageYOffset||e[0].documentElement.scrollTop),left:i.left+(t.pageXOffset||e[0].documentElement.scrollLeft)}},positionElements:function(e,t,n,i){var a,o,r,s,l=n.split("-"),c=l[0],d=l[1]||"center";a=i?this.offset(e):this.position(e),o=t.prop("offsetWidth"),r=t.prop("offsetHeight");var u={center:function(){return a.left+a.width/2-o/2},left:function(){return a.left},right:function(){return a.left+a.width}},p={center:function(){return a.top+a.height/2-r/2},top:function(){return a.top},bottom:function(){return a.top+a.height}};switch(c){case"right":s={top:p[d](),left:u[c]()};break;case"left":s={top:p[d](),left:a.left-o};break;case"bottom":s={top:p[c](),left:u[d]()};break;default:s={top:a.top-r,left:u[d]()}}return s}}}]),angular.module("ui.bootstrap.bindHtml",[]).directive("bindHtmlUnsafe",function(){return function(e,t,n){t.addClass("ng-binding").data("$binding",n.bindHtmlUnsafe),e.$watch(n.bindHtmlUnsafe,function(e){t.html(e||"")})}}),angular.module("ui.bootstrap.modal",["ui.bootstrap.transition"]).factory("$$stackedMap",function(){return{createNew:function(){var e=[];return{add:function(t,n){e.push({key:t,value:n})},get:function(t){for(var n=0;n<e.length;n++)if(t==e[n].key)return e[n]},keys:function(){for(var t=[],n=0;n<e.length;n++)t.push(e[n].key);return t},top:function(){return e[e.length-1]},remove:function(t){for(var n=-1,i=0;i<e.length;i++)if(t==e[i].key){n=i;break}return e.splice(n,1)[0]},removeTop:function(){return e.splice(e.length-1,1)[0]},length:function(){return e.length}}}}}).directive("modalBackdrop",["$timeout",function(e){return{restrict:"EA",replace:!0,templateUrl:"template/modal/backdrop.html",link:function(t,n,i){t.backdropClass=i.backdropClass||"",t.animate=!1,e(function(){t.animate=!0})}}}]).directive("modalWindow",["$modalStack","$timeout",function(e,t){return{restrict:"EA",scope:{index:"@",animate:"="},replace:!0,transclude:!0,templateUrl:function(e,t){return t.templateUrl||"template/modal/window.html"},link:function(n,i,a){i.addClass(a.windowClass||""),n.size=a.size,t(function(){n.animate=!0,i[0].querySelectorAll("[autofocus]").length||i[0].focus()}),n.close=function(t){var n=e.getTop();n&&n.value.backdrop&&"static"!=n.value.backdrop&&t.target===t.currentTarget&&(t.preventDefault(),t.stopPropagation(),e.dismiss(n.key,"backdrop click"))}}}}]).directive("modalTransclude",function(){return{link:function(e,t,n,i,a){a(e.$parent,function(e){t.empty(),t.append(e)})}}}).factory("$modalStack",["$transition","$timeout","$document","$compile","$rootScope","$$stackedMap",function(e,t,n,i,a,o){function r(){for(var e=-1,t=m.keys(),n=0;n<t.length;n++)m.get(t[n]).value.backdrop&&(e=n);return e}function s(e){var t=n.find("body").eq(0),i=m.get(e).value;m.remove(e),c(i.modalDomEl,i.modalScope,0,function(){i.modalScope.$destroy(),t.toggleClass(p,m.length()>0),l()})}function l(){if(d&&-1==r()){var e=u;c(d,u,0,function(){e.$destroy(),e=null}),d=void 0,u=void 0}}function c(n,i,a,o){function r(){r.done||(r.done=!0,n.remove(),o&&o())}i.animate=!1;var s=e.transitionEndEventName;if(s){var l=t(r,a);n.bind(s,function(){t.cancel(l),r(),i.$apply()})}else t(r)}var d,u,p="modal-open",m=o.createNew(),h={};return a.$watch(r,function(e){u&&(u.index=e)}),n.bind("keydown",function(e){var t;27===e.which&&(t=m.top(),t&&t.value.keyboard&&(e.preventDefault(),a.$apply(function(){h.dismiss(t.key,"escape key press")})))}),h.open=function(e,t){m.add(e,{deferred:t.deferred,modalScope:t.scope,backdrop:t.backdrop,keyboard:t.keyboard});var o=n.find("body").eq(0),s=r();if(s>=0&&!d){u=a.$new(!0),u.index=s;var l=angular.element("<div modal-backdrop></div>");l.attr("backdrop-class",t.backdropClass),d=i(l)(u),o.append(d)}var c=angular.element("<div modal-window></div>");c.attr({"template-url":t.windowTemplateUrl,"window-class":t.windowClass,size:t.size,index:m.length()-1,animate:"animate"}).html(t.content);var h=i(c)(t.scope);m.top().value.modalDomEl=h,o.append(h),o.addClass(p)},h.close=function(e,t){var n=m.get(e);n&&(n.value.deferred.resolve(t),s(e))},h.dismiss=function(e,t){var n=m.get(e);n&&(n.value.deferred.reject(t),s(e))},h.dismissAll=function(e){for(var t=this.getTop();t;)this.dismiss(t.key,e),t=this.getTop()},h.getTop=function(){return m.top()},h}]).provider("$modal",function(){var e={options:{backdrop:!0,keyboard:!0},$get:["$injector","$rootScope","$q","$http","$templateCache","$controller","$modalStack",function(t,n,i,a,o,r,s){function l(e){return e.template?i.when(e.template):a.get(angular.isFunction(e.templateUrl)?e.templateUrl():e.templateUrl,{cache:o}).then(function(e){return e.data})}function c(e){var n=[];return angular.forEach(e,function(e){(angular.isFunction(e)||angular.isArray(e))&&n.push(i.when(t.invoke(e)))}),n}var d={};return d.open=function(t){var a=i.defer(),o=i.defer(),d={result:a.promise,opened:o.promise,close:function(e){s.close(d,e) |
|
|
},dismiss:function(e){s.dismiss(d,e)}};if(t=angular.extend({},e.options,t),t.resolve=t.resolve||{},!t.template&&!t.templateUrl)throw new Error("One of template or templateUrl options is required.");var u=i.all([l(t)].concat(c(t.resolve)));return u.then(function(e){var i=(t.scope||n).$new();i.$close=d.close,i.$dismiss=d.dismiss;var o,l={},c=1;t.controller&&(l.$scope=i,l.$modalInstance=d,angular.forEach(t.resolve,function(t,n){l[n]=e[c++]}),o=r(t.controller,l),t.controllerAs&&(i[t.controllerAs]=o)),s.open(d,{scope:i,deferred:a,content:e[0],backdrop:t.backdrop,keyboard:t.keyboard,backdropClass:t.backdropClass,windowClass:t.windowClass,windowTemplateUrl:t.windowTemplateUrl,size:t.size})},function(e){a.reject(e)}),u.then(function(){o.resolve(!0)},function(){o.reject(!1)}),d},d}]};return e}),angular.module("ui.bootstrap.transition",[]).factory("$transition",["$q","$timeout","$rootScope",function(e,t,n){function i(e){for(var t in e)if(void 0!==o.style[t])return e[t]}var a=function(i,o,r){r=r||{};var s=e.defer(),l=a[r.animation?"animationEndEventName":"transitionEndEventName"],c=function(){n.$apply(function(){i.unbind(l,c),s.resolve(i)})};return l&&i.bind(l,c),t(function(){angular.isString(o)?i.addClass(o):angular.isFunction(o)?o(i):angular.isObject(o)&&i.css(o),l||s.resolve(i)}),s.promise.cancel=function(){l&&i.unbind(l,c),s.reject("Transition cancelled")},s.promise},o=document.createElement("trans"),r={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"},s={WebkitTransition:"webkitAnimationEnd",MozTransition:"animationend",OTransition:"oAnimationEnd",transition:"animationend"};return a.transitionEndEventName=i(r),a.animationEndEventName=i(s),a}]),angular.module("template/tooltip/tooltip-html-unsafe-popup.html",[]).run(["$templateCache",function(e){e.put("template/tooltip/tooltip-html-unsafe-popup.html",'<div class="tooltip {{placement}}" ng-class="{ in: isOpen(), fade: animation() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" bind-html-unsafe="content"></div>\n</div>\n')}]),angular.module("template/tooltip/tooltip-popup.html",[]).run(["$templateCache",function(e){e.put("template/tooltip/tooltip-popup.html",'<div class="tooltip {{placement}}" ng-class="{ in: isOpen(), fade: animation() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" ng-bind="content"></div>\n</div>\n')}]),angular.module("template/modal/backdrop.html",[]).run(["$templateCache",function(e){e.put("template/modal/backdrop.html",'<div class="modal-backdrop fade {{ backdropClass }}"\n ng-class="{in: animate}"\n ng-style="{\'z-index\': 1040 + (index && 1 || 0) + index*10}"\n></div>\n')}]),angular.module("template/modal/window.html",[]).run(["$templateCache",function(e){e.put("template/modal/window.html",'<div tabindex="-1" role="dialog" class="modal fade" ng-class="{in: animate}" ng-style="{\'z-index\': 1050 + index*10, display: \'block\'}" ng-click="close($event)">\n <div class="modal_close_wrap" ng-click="close($event)">\n <div class="modal_close"></div>\n </div>\n <div class="modal-dialog" ng-class="{\'modal-sm\': size == \'sm\', \'modal-lg\': size == \'lg\'}"><div class="modal-content" modal-transclude></div></div>\n</div>')}]),angular.module("mediaPlayer",["mediaPlayer.helpers"]).constant("mp.playerDefaults",{currentTrack:0,ended:void 0,network:void 0,playing:!1,seeking:!1,tracks:0,volume:1,formatDuration:"00:00",formatTime:"00:00",loadPercent:0}).directive("mediaPlayer",["$rootScope","$interpolate","$timeout","mp.throttle","mp.playerDefaults",function(e,t,n,i,a){function o(e){return function(t,i){var a,o=null;if(e.$attachPlaylist(t),void 0===t&&void 0!==i)return e.pause();if(e.currentTrack){a=i?i[e.currentTrack-1]:-1;for(var r=0;r<t.length;r++)if(angular.equals(t[r],a)){o=r;break}null!==o?(e.currentTrack=o+1,e.tracks=t.length):(e.pause(),t.length?n(function(){e.$clearSourceList(),e.$addSourceList(t[0]),e.load(),e.tracks=t.length}):e.reset())}else t.length?(e.$clearSourceList(),e.$addSourceList(t[0]),e.load(),e.tracks=t.length):e.reset()}}var r={load:function(e,t){"boolean"==typeof e?(t=e,e=null):"object"==typeof e&&(this.$clearSourceList(),this.$addSourceList(e)),this.$domEl.load(),this.ended=void 0,t&&this.$element.one("canplay",this.play.bind(this))},reset:function(e){angular.extend(this,a),this.$clearSourceList(),this.load(this.$playlist,e)},play:function(e,t){return"boolean"==typeof e&&(t=e,e=void 0),t&&(this.$selective=!0),this.$playlist.length>e?(this.currentTrack=e+1,this.load(this.$playlist[e],!0)):(!this.currentTrack&&this.$domEl.readyState&&this.currentTrack++,void(this.ended?this.load(!0):this.$domEl.play()))},playPause:function(e,t){"boolean"==typeof e&&(t=e,e=void 0),t&&(this.$selective=!0),"number"==typeof e&&e+1!==this.currentTrack?this.play(e):this.playing?this.pause():this.play()},pause:function(){this.$domEl.pause()},stop:function(){this.reset()},toggleMute:function(){this.muted=this.$domEl.muted=!this.$domEl.muted},next:function(e){var t=this;if(t.currentTrack&&t.currentTrack<t.tracks){var i=e||t.playing;t.pause(),n(function(){t.$clearSourceList(),t.$addSourceList(t.$playlist[t.currentTrack]),t.load(i),t.currentTrack++})}},prev:function(e){var t=this;if(t.currentTrack&&t.currentTrack-1){var i=e||t.playing;t.pause(),n(function(){t.$clearSourceList(),t.$addSourceList(t.$playlist[t.currentTrack-2]),t.load(i),t.currentTrack--})}},setPlaybackRate:function(e){this.$domEl.playbackRate=e},setVolume:function(e){this.$domEl.volume=e},seek:function(e){var t,n=0;return"string"!=typeof e?this.$domEl.currentTime=e:(t=e.split(":"),n+=parseInt(t.pop(),10),t.length&&(n+=60*parseInt(t.pop(),10)),t.length&&(n+=3600*parseInt(t.pop(),10)),isNaN(n)?void 0:this.$domEl.currentTime=n)},on:function(e,t){return this.$element.on(e,t)},off:function(e,t){return this.$element.off(e,t)},one:function(e,t){return this.$element.one(e,t)},$addSourceList:function(e){var t=this;if(angular.isArray(e))angular.forEach(e,function(e){var n=document.createElement("SOURCE");["src","type","media"].forEach(function(t){void 0!==e[t]&&n.setAttribute(t,e[t])}),t.$element.append(n)});else if(angular.isObject(e)){var n=document.createElement("SOURCE");["src","type","media"].forEach(function(t){void 0!==e[t]&&n.setAttribute(t,e[t])}),t.$element.append(n)}},$clearSourceList:function(){this.$element.contents().remove()},$formatTime:function(e){if(1/0===e)return"∞";var t,n=parseInt(e/3600,10)%24,i=parseInt(e/60,10)%60,a=parseInt(e%60,10),o=(10>i?"0"+i:i)+":"+(10>a?"0"+a:a);return t=n>0?(10>n?"0"+n:n)+":"+o:o},$attachPlaylist:function(e){void 0===e||null===e?this.playlist=[]:this.$playlist=e}},s=function(e,t,n){var a={playing:function(){e.$apply(function(e){e.playing=!0,e.ended=!1})},pause:function(){e.$apply(function(e){e.playing=!1})},ended:function(){!e.$selective&&e.currentTrack<e.tracks?e.next(!0):e.$apply(function(e){e.ended=!0,e.playing=!1})},timeupdate:i(1e3,!1,function(){e.$apply(function(e){e.currentTime=t.currentTime,e.formatTime=e.$formatTime(e.currentTime)})}),loadedmetadata:function(){e.$apply(function(e){e.currentTrack||e.currentTrack++,e.duration=t.duration,e.formatDuration=e.$formatTime(e.duration),t.buffered.length&&(e.loadPercent=Math.round(t.buffered.end(t.buffered.length-1)/e.duration*100))})},progress:function(){e.$domEl.buffered.length&&e.$apply(function(e){e.loadPercent=Math.round(t.buffered.end(t.buffered.length-1)/e.duration*100),e.network="progress"})},volumechange:function(){e.$apply(function(e){e.volume=t.volume,e.muted=t.muted})},seeked:function(){e.$apply(function(e){e.seeking=!1})},seeking:function(){e.$apply(function(e){e.seeking=!0})},ratechange:function(){e.$apply(function(e){e.playbackRate=t.playbackRate})},stalled:function(){e.$apply(function(e){e.network="stalled"})},suspend:function(){e.$apply(function(e){e.network="suspend"})}};angular.forEach(a,function(e,t){n.on(t,e)})},l=function(t){var n=angular.extend(e.$new(!0),{$element:t,$domEl:t[0],$playlist:void 0,buffered:t[0].buffered,played:t[0].played,seekable:t[0].seekable},a,r);return s(n,t[0],t),n};return{scope:!1,link:function(e,t,n){var i=n.playlist,a=n.mediaPlayer||n.playerControl,r=new l(t),s=e[i];if(s=void 0===i?[]:void 0===e[i]?e[i]=[]:e[i],void 0!==a&&e.$eval(a+" = player",{player:r}),"AUDIO"!==t[0].tagName&&"VIDEO"!==t[0].tagName)return new Error("player directive works only when attached to an <audio>/<video> type tag");var c=[],d=t.find("source");1===d.length?s.unshift({src:d[0].src,type:d[0].type,media:d[0].media}):d.length>1&&(angular.forEach(d,function(e){c.push({src:e.src,type:e.type,media:e.media})}),s.unshift(c)),void 0===i?r.$attachPlaylist(s):s.length?(o(r)(s,void 0,e),e.$watch(i,o(r),!0)):e.$watch(i,o(r),!0)}}}]),angular.module("mediaPlayer.helpers",[]).factory("mp.throttle",["$timeout",function(e){return function(t,n,i,a){var o,r=0;"boolean"!=typeof n&&(a=i,i=n,n=void 0);var s=function(){var s=this,l=+new Date-r,c=arguments,d=function(){r=+new Date,i.apply(s,c)},u=function(){o=void 0};a&&!o&&d(),o&&e.cancel(o),void 0===a&&l>t?d():n!==!0&&(o=e(a?u:d,void 0===a?t-l:t))};return s}}]);var dbits,canary=0xdeadbeefcafe,j_lm=15715070==(16777215&canary);j_lm&&"Microsoft Internet Explorer"==navigator.appName?(BigInteger.prototype.am=am2,dbits=30):j_lm&&"Netscape"!=navigator.appName?(BigInteger.prototype.am=am1,dbits=26):(BigInteger.prototype.am=am3,dbits=28),BigInteger.prototype.DB=dbits,BigInteger.prototype.DM=(1<<dbits)-1,BigInteger.prototype.DV=1<<dbits;var BI_FP=52;BigInteger.prototype.FV=Math.pow(2,BI_FP),BigInteger.prototype.F1=BI_FP-dbits,BigInteger.prototype.F2=2*dbits-BI_FP;var BI_RM="0123456789abcdefghijklmnopqrstuvwxyz",BI_RC=new Array,rr,vv;for(rr="0".charCodeAt(0),vv=0;9>=vv;++vv)BI_RC[rr++]=vv;for(rr="a".charCodeAt(0),vv=10;36>vv;++vv)BI_RC[rr++]=vv;for(rr="A".charCodeAt(0),vv=10;36>vv;++vv)BI_RC[rr++]=vv;Classic.prototype.convert=cConvert,Classic.prototype.revert=cRevert,Classic.prototype.reduce=cReduce,Classic.prototype.mulTo=cMulTo,Classic.prototype.sqrTo=cSqrTo,Montgomery.prototype.convert=montConvert,Montgomery.prototype.revert=montRevert,Montgomery.prototype.reduce=montReduce,Montgomery.prototype.mulTo=montMulTo,Montgomery.prototype.sqrTo=montSqrTo,BigInteger.prototype.copyTo=bnpCopyTo,BigInteger.prototype.fromInt=bnpFromInt,BigInteger.prototype.fromString=bnpFromString,BigInteger.prototype.clamp=bnpClamp,BigInteger.prototype.dlShiftTo=bnpDLShiftTo,BigInteger.prototype.drShiftTo=bnpDRShiftTo,BigInteger.prototype.lShiftTo=bnpLShiftTo,BigInteger.prototype.rShiftTo=bnpRShiftTo,BigInteger.prototype.subTo=bnpSubTo,BigInteger.prototype.multiplyTo=bnpMultiplyTo,BigInteger.prototype.squareTo=bnpSquareTo,BigInteger.prototype.divRemTo=bnpDivRemTo,BigInteger.prototype.invDigit=bnpInvDigit,BigInteger.prototype.isEven=bnpIsEven,BigInteger.prototype.exp=bnpExp,BigInteger.prototype.toString=bnToString,BigInteger.prototype.negate=bnNegate,BigInteger.prototype.abs=bnAbs,BigInteger.prototype.compareTo=bnCompareTo,BigInteger.prototype.bitLength=bnBitLength,BigInteger.prototype.mod=bnMod,BigInteger.prototype.modPowInt=bnModPowInt,BigInteger.ZERO=nbv(0),BigInteger.ONE=nbv(1),NullExp.prototype.convert=nNop,NullExp.prototype.revert=nNop,NullExp.prototype.mulTo=nMulTo,NullExp.prototype.sqrTo=nSqrTo,Barrett.prototype.convert=barrettConvert,Barrett.prototype.revert=barrettRevert,Barrett.prototype.reduce=barrettReduce,Barrett.prototype.mulTo=barrettMulTo,Barrett.prototype.sqrTo=barrettSqrTo;var lowprimes=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],lplim=(1<<26)/lowprimes[lowprimes.length-1];BigInteger.prototype.chunkSize=bnpChunkSize,BigInteger.prototype.toRadix=bnpToRadix,BigInteger.prototype.fromRadix=bnpFromRadix,BigInteger.prototype.fromNumber=bnpFromNumber,BigInteger.prototype.bitwiseTo=bnpBitwiseTo,BigInteger.prototype.changeBit=bnpChangeBit,BigInteger.prototype.addTo=bnpAddTo,BigInteger.prototype.dMultiply=bnpDMultiply,BigInteger.prototype.dAddOffset=bnpDAddOffset,BigInteger.prototype.multiplyLowerTo=bnpMultiplyLowerTo,BigInteger.prototype.multiplyUpperTo=bnpMultiplyUpperTo,BigInteger.prototype.modInt=bnpModInt,BigInteger.prototype.millerRabin=bnpMillerRabin,BigInteger.prototype.clone=bnClone,BigInteger.prototype.intValue=bnIntValue,BigInteger.prototype.byteValue=bnByteValue,BigInteger.prototype.shortValue=bnShortValue,BigInteger.prototype.signum=bnSigNum,BigInteger.prototype.toByteArray=bnToByteArray,BigInteger.prototype.equals=bnEquals,BigInteger.prototype.min=bnMin,BigInteger.prototype.max=bnMax,BigInteger.prototype.and=bnAnd,BigInteger.prototype.or=bnOr,BigInteger.prototype.xor=bnXor,BigInteger.prototype.andNot=bnAndNot,BigInteger.prototype.not=bnNot,BigInteger.prototype.shiftLeft=bnShiftLeft,BigInteger.prototype.shiftRight=bnShiftRight,BigInteger.prototype.getLowestSetBit=bnGetLowestSetBit,BigInteger.prototype.bitCount=bnBitCount,BigInteger.prototype.testBit=bnTestBit,BigInteger.prototype.setBit=bnSetBit,BigInteger.prototype.clearBit=bnClearBit,BigInteger.prototype.flipBit=bnFlipBit,BigInteger.prototype.add=bnAdd,BigInteger.prototype.subtract=bnSubtract,BigInteger.prototype.multiply=bnMultiply,BigInteger.prototype.divide=bnDivide,BigInteger.prototype.remainder=bnRemainder,BigInteger.prototype.divideAndRemainder=bnDivideAndRemainder,BigInteger.prototype.modPow=bnModPow,BigInteger.prototype.modInverse=bnModInverse,BigInteger.prototype.pow=bnPow,BigInteger.prototype.gcd=bnGCD,BigInteger.prototype.isProbablePrime=bnIsProbablePrime,BigInteger.prototype.square=bnSquare;var rng_state,rng_pool,rng_pptr;if(null==rng_pool){rng_pool=new Array,rng_pptr=0;var global="undefined"!=typeof window?window:this,t;if(global&&global.crypto&&global.crypto.getRandomValues){var ua=new Uint8Array(32);for(global.crypto.getRandomValues(ua),t=0;32>t;++t)rng_pool[rng_pptr++]=ua[t]}if("Netscape"==navigator.appName&&navigator.appVersion<"5"&&global&&global.crypto){var z=global.crypto.random(32);for(t=0;t<z.length;++t)rng_pool[rng_pptr++]=255&z.charCodeAt(t)}for(;rng_psize>rng_pptr;)t=Math.floor(65536*Math.random()),rng_pool[rng_pptr++]=t>>>8,rng_pool[rng_pptr++]=255&t;rng_pptr=0,rng_seed_time()}SecureRandom.prototype.nextBytes=rng_get_bytes,Arcfour.prototype.init=ARC4init,Arcfour.prototype.next=ARC4next;var rng_psize=256,CryptoJS=CryptoJS||function(e,t){var n={},i=n.lib={},a=i.Base=function(){function e(){}return{extend:function(t){e.prototype=this;var n=new e;return t&&n.mixIn(t),n.hasOwnProperty("init")||(n.init=function(){n.$super.init.apply(this,arguments)}),n.init.prototype=n,n.$super=this,n},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),o=i.WordArray=a.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=n!=t?n:4*e.length},toString:function(e){return(e||s).stringify(this)},concat:function(e){var t=this.words,n=e.words,i=this.sigBytes,a=e.sigBytes;if(this.clamp(),i%4)for(var o=0;a>o;o++){var r=n[o>>>2]>>>24-o%4*8&255;t[i+o>>>2]|=r<<24-(i+o)%4*8}else if(n.length>65535)for(var o=0;a>o;o+=4)t[i+o>>>2]=n[o>>>2];else for(var o=0;o<n.length;o++)t.push(n[o]);return this.sigBytes+=a,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=a.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],i=0;t>i;i+=4)n.push(4294967296*e.random()|0);return new o.init(n,t)}}),r=n.enc={},s=r.Hex={stringify:function(e){for(var t=e.words,n=e.sigBytes,i=[],a=0;n>a;a++){var o=t[a>>>2]>>>24-a%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,n=[],i=0;t>i;i+=2)n[i>>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new o.init(n,t/2)}},l=r.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,i=[],a=0;n>a;a++){var o=t[a>>>2]>>>24-a%4*8&255;i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var t=e.length,n=[],i=0;t>i;i++)n[i>>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new o.init(n,t)}},c=r.Utf8={stringify:function(e){try{return decodeURIComponent(escape(l.stringify(e)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(e){return l.parse(unescape(encodeURIComponent(e)))}},d=i.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,i=n.words,a=n.sigBytes,r=this.blockSize,s=4*r,l=a/s;l=t?e.ceil(l):e.max((0|l)-this._minBufferSize,0);var c=l*r,d=e.min(4*c,a);if(c){for(var u=0;c>u;u+=r)this._doProcessBlock(i,u);var p=i.splice(0,c);n.sigBytes-=d}return new o.init(p,d)},clone:function(){var e=a.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0}),u=(i.Hasher=d.extend({cfg:a.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){d.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){e&&this._append(e);var t=this._doFinalize();return t},blockSize:16,_createHelper:function(e){return function(t,n){return new e.init(n).finalize(t)}},_createHmacHelper:function(e){return function(t,n){return new u.HMAC.init(e,n).finalize(t)}}}),n.algo={});return n}(Math);CryptoJS.lib.Cipher||function(e){var t=CryptoJS,n=t.lib,i=n.Base,a=n.WordArray,o=n.BufferedBlockAlgorithm,r=t.enc,s=(r.Utf8,r.Base64),l=t.algo,c=l.EvpKDF,d=n.Cipher=o.extend({cfg:i.extend(),createEncryptor:function(e,t){return this.create(this._ENC_XFORM_MODE,e,t)},createDecryptor:function(e,t){return this.create(this._DEC_XFORM_MODE,e,t)},init:function(e,t,n){this.cfg=this.cfg.extend(n),this._xformMode=e,this._key=t,this.reset()},reset:function(){o.reset.call(this),this._doReset()},process:function(e){return this._append(e),this._process()},finalize:function(e){e&&this._append(e);var t=this._doFinalize();return t},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function e(e){return"string"==typeof e?$:v}return function(t){return{encrypt:function(n,i,a){return e(i).encrypt(t,n,i,a)},decrypt:function(n,i,a){return e(i).decrypt(t,n,i,a)}}}}()}),u=(n.StreamCipher=d.extend({_doFinalize:function(){var e=this._process(!0);return e},blockSize:1}),t.mode={}),p=n.BlockCipherMode=i.extend({createEncryptor:function(e,t){return this.Encryptor.create(e,t)},createDecryptor:function(e,t){return this.Decryptor.create(e,t)},init:function(e,t){this._cipher=e,this._iv=t}}),m=u.CBC=function(){function t(t,n,i){var a=this._iv;if(a){var o=a;this._iv=e}else var o=this._prevBlock;for(var r=0;i>r;r++)t[n+r]^=o[r]}var n=p.extend();return n.Encryptor=n.extend({processBlock:function(e,n){var i=this._cipher,a=i.blockSize;t.call(this,e,n,a),i.encryptBlock(e,n),this._prevBlock=e.slice(n,n+a)}}),n.Decryptor=n.extend({processBlock:function(e,n){var i=this._cipher,a=i.blockSize,o=e.slice(n,n+a);i.decryptBlock(e,n),t.call(this,e,n,a),this._prevBlock=o}}),n}(),h=(u.IGE=function(){function t(e,t,n,i){for(var a=0;i>a;a++)e[n+a]^=t[a]}var n=p.extend();return n.Encryptor=n.extend({processBlock:function(n,i){var a=this._cipher,o=a.blockSize;this._ivp===e&&(this._ivp=this._iv.slice(0,o),this._iv2p=this._iv.slice(o,o+o));var r=n.slice(i,i+o);t(n,this._ivp,i,o),a.encryptBlock(n,i),t(n,this._iv2p,i,o),this._ivp=n.slice(i,i+o),this._iv2p=r}}),n.Decryptor=n.extend({processBlock:function(n,i){var a=this._cipher,o=a.blockSize;this._ivp===e&&(this._ivp=this._iv.slice(0,o),this._iv2p=this._iv.slice(o,2*o));var r=n.slice(i,i+o);t(n,this._iv2p,i,o),a.decryptBlock(n,i),t(n,this._ivp,i,o),this._ivp=r,this._iv2p=n.slice(i,i+o)}}),n}(),t.pad={}),f=h.Pkcs7={pad:function(e,t){for(var n=4*t,i=n-e.sigBytes%n,o=i<<24|i<<16|i<<8|i,r=[],s=0;i>s;s+=4)r.push(o);var l=a.create(r,i);e.concat(l)},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},g=(h.NoPadding={pad:function(){},unpad:function(){}},n.BlockCipher=d.extend({cfg:d.cfg.extend({mode:m,padding:f}),reset:function(){d.reset.call(this);var e=this.cfg,t=e.iv,n=e.mode;if(this._xformMode==this._ENC_XFORM_MODE)var i=n.createEncryptor;else{var i=n.createDecryptor;this._minBufferSize=1}this._mode=i.call(n,this,t&&t.words)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);var t=this._process(!0)}else{var t=this._process(!0);e.unpad(t)}return t},blockSize:4}),n.CipherParams=i.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}})),_=t.format={},y=_.OpenSSL={stringify:function(e){var t=e.ciphertext,n=e.salt;if(n)var i=a.create([1398893684,1701076831]).concat(n).concat(t);else var i=t;return i.toString(s)},parse:function(e){var t=s.parse(e),n=t.words;if(1398893684==n[0]&&1701076831==n[1]){var i=a.create(n.slice(2,4));n.splice(0,4),t.sigBytes-=16}return g.create({ciphertext:t,salt:i})}},v=n.SerializableCipher=i.extend({cfg:i.extend({format:y}),encrypt:function(e,t,n,i){i=this.cfg.extend(i);var a=e.createEncryptor(n,i),o=a.finalize(t),r=a.cfg;return g.create({ciphertext:o,key:n,iv:r.iv,algorithm:e,mode:r.mode,padding:r.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,n,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var a=e.createDecryptor(n,i).finalize(t.ciphertext);return a},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),b=t.kdf={},w=b.OpenSSL={execute:function(e,t,n,i){i||(i=a.random(8));var o=c.create({keySize:t+n}).compute(e,i),r=a.create(o.words.slice(t),4*n);return o.sigBytes=4*t,g.create({key:o,iv:r,salt:i})}},$=n.PasswordBasedCipher=v.extend({cfg:v.cfg.extend({kdf:w}),encrypt:function(e,t,n,i){i=this.cfg.extend(i);var a=i.kdf.execute(n,e.keySize,e.ivSize);i.iv=a.iv;var o=v.encrypt.call(this,e,t,a.key,i);return o.mixIn(a),o},decrypt:function(e,t,n,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var a=i.kdf.execute(n,e.keySize,e.ivSize,t.salt);i.iv=a.iv;var o=v.decrypt.call(this,e,t,a.key,i);return o}})}(),function(){var e=CryptoJS,t=e.lib,n=t.BlockCipher,i=e.algo,a=[],o=[],r=[],s=[],l=[],c=[],d=[],u=[],p=[],m=[];!function(){for(var e=[],t=0;256>t;t++)e[t]=128>t?t<<1:t<<1^283;for(var n=0,i=0,t=0;256>t;t++){var h=i^i<<1^i<<2^i<<3^i<<4;h=h>>>8^255&h^99,a[n]=h,o[h]=n;var f=e[n],g=e[f],_=e[g],y=257*e[h]^16843008*h;r[n]=y<<24|y>>>8,s[n]=y<<16|y>>>16,l[n]=y<<8|y>>>24,c[n]=y;var y=16843009*_^65537*g^257*f^16843008*n;d[h]=y<<24|y>>>8,u[h]=y<<16|y>>>16,p[h]=y<<8|y>>>24,m[h]=y,n?(n=f^e[e[e[_^f]]],i^=e[e[i]]):n=i=1}}();var h=[0,1,2,4,8,16,32,64,128,27,54],f=i.AES=n.extend({_doReset:function(){for(var e=this._key,t=e.words,n=e.sigBytes/4,i=this._nRounds=n+6,o=4*(i+1),r=this._keySchedule=[],s=0;o>s;s++)if(n>s)r[s]=t[s];else{var l=r[s-1];s%n?n>6&&s%n==4&&(l=a[l>>>24]<<24|a[l>>>16&255]<<16|a[l>>>8&255]<<8|a[255&l]):(l=l<<8|l>>>24,l=a[l>>>24]<<24|a[l>>>16&255]<<16|a[l>>>8&255]<<8|a[255&l],l^=h[s/n|0]<<24),r[s]=r[s-n]^l}for(var c=this._invKeySchedule=[],f=0;o>f;f++){var s=o-f;if(f%4)var l=r[s];else var l=r[s-4];c[f]=4>f||4>=s?l:d[a[l>>>24]]^u[a[l>>>16&255]]^p[a[l>>>8&255]]^m[a[255&l]]}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,r,s,l,c,a)},decryptBlock:function(e,t){var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n,this._doCryptBlock(e,t,this._invKeySchedule,d,u,p,m,o);var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n},_doCryptBlock:function(e,t,n,i,a,o,r,s){for(var l=this._nRounds,c=e[t]^n[0],d=e[t+1]^n[1],u=e[t+2]^n[2],p=e[t+3]^n[3],m=4,h=1;l>h;h++){var f=i[c>>>24]^a[d>>>16&255]^o[u>>>8&255]^r[255&p]^n[m++],g=i[d>>>24]^a[u>>>16&255]^o[p>>>8&255]^r[255&c]^n[m++],_=i[u>>>24]^a[p>>>16&255]^o[c>>>8&255]^r[255&d]^n[m++],y=i[p>>>24]^a[c>>>16&255]^o[d>>>8&255]^r[255&u]^n[m++];c=f,d=g,u=_,p=y}var f=(s[c>>>24]<<24|s[d>>>16&255]<<16|s[u>>>8&255]<<8|s[255&p])^n[m++],g=(s[d>>>24]<<24|s[u>>>16&255]<<16|s[p>>>8&255]<<8|s[255&c])^n[m++],_=(s[u>>>24]<<24|s[p>>>16&255]<<16|s[c>>>8&255]<<8|s[255&d])^n[m++],y=(s[p>>>24]<<24|s[c>>>16&255]<<16|s[d>>>8&255]<<8|s[255&u])^n[m++];e[t]=f,e[t+1]=g,e[t+2]=_,e[t+3]=y},keySize:8});e.AES=n._createHelper(f)}();var sha1;!function(e){function t(e){for(var t,n="",i=7;i>=0;--i)t=e>>>(i<<2)&15,n+=t.toString(16);return n}function n(e){for(var t,n=[],i=3;i>=0;--i)t=e>>8*i&255,n.push(t);return n}function i(e,t){return e<<t|e>>>32-t}function a(e){e=e.replace(/[\u0080-\u07ff]/g,function(e){var t=e.charCodeAt(0);return String.fromCharCode(192|t>>6,128|63&t)}),e=e.replace(/[\u0080-\uffff]/g,function(e){var t=e.charCodeAt(0);return String.fromCharCode(224|t>>12,128|t>>6&63,128|63&t)});for(var t=e.length,n=new Uint8Array(t),i=0;t>i;++i)n[i]=e.charCodeAt(i);return n.buffer}function o(e){for(var t=e.length,n=new Uint8Array(t),i=0;t>i;++i)n[i]=e[i];return n.buffer}function r(e,r){var s;s=e instanceof ArrayBuffer?e:"[object Array]"==Object.prototype.toString.apply(e)?o(e):a(String(e));var d,u,p=1732584193,m=4023233417,h=2562383102,f=271733878,g=3285377520,_=s.byteLength,y=_<<3,v=y+65,b=Math.ceil(v/512)<<9,w=b>>>3,$=w>>>2,k=new c($),C=k.bytes,S=new Uint32Array(80),M=new Uint8Array(s);for(d=0;_>d;++d)C[d]=M[d];for(C[_]=128,k.set($-2,Math.floor(y/l)),k.set($-1,4294967295&y),d=0;$>d;d+=16){for(u=0;16>u;++u)S[u]=k.get(d+u);for(;80>u;++u)S[u]=i(S[u-3]^S[u-8]^S[u-14]^S[u-16],1);var x,A,T,E=p,I=m,D=h,P=f,N=g;for(u=0;80>u;++u)20>u?(x=I&D|~I&P,A=1518500249):40>u?(x=I^D^P,A=1859775393):60>u?(x=I&D^I&P^D&P,A=2400959708):(x=I^D^P,A=3395469782),T=i(E,5)+x+N+A+S[u]&4294967295,N=P,P=D,D=i(I,30),I=E,E=T;p=p+E&4294967295,m=m+I&4294967295,h=h+D&4294967295,f=f+P&4294967295,g=g+N&4294967295}return r?n(p).concat(n(m),n(h),n(f),n(g)):t(p)+t(m)+t(h)+t(f)+t(g)}var s=Math.pow(2,24),l=Math.pow(2,32),c=function(){function e(e){this.bytes=new Uint8Array(e<<2)}return e.prototype.get=function(e){return e<<=2,this.bytes[e]*s+(this.bytes[e+1]<<16|this.bytes[e+2]<<8|this.bytes[e+3])},e.prototype.set=function(e,t){var n=Math.floor(t/s),i=t-n*s;e<<=2,this.bytes[e]=n,this.bytes[e+1]=i>>16,this.bytes[e+2]=i>>8&255,this.bytes[e+3]=255&i},e}();e.hash=r}(sha1||(sha1={})),function(e){function t(e){"use strict";var t={fill:0},i=function(e){for(e+=9;e%64>0;e+=1);return e},a=function(e,t){for(var n=t>>2;n<e.length;n++)e[n]=0},r=function(e,t,n){e[t>>2]|=128<<24-(t%4<<3),e[((t>>2)+2&-16)+15]=n<<3},s=function(e,t,n,i,a){var o,r=this,s=a%4,l=i%4,c=i-l;if(c>0)switch(s){case 0:e[a+3|0]=r.charCodeAt(n);case 1:e[a+2|0]=r.charCodeAt(n+1);case 2:e[a+1|0]=r.charCodeAt(n+2);case 3:e[0|a]=r.charCodeAt(n+3)}for(o=s;c>o;o=o+4|0)t[a+o>>2]=r.charCodeAt(n+o)<<24|r.charCodeAt(n+o+1)<<16|r.charCodeAt(n+o+2)<<8|r.charCodeAt(n+o+3);switch(l){case 3:e[a+c+1|0]=r.charCodeAt(n+c+2);case 2:e[a+c+2|0]=r.charCodeAt(n+c+1);case 1:e[a+c+3|0]=r.charCodeAt(n+c)}},l=function(e,t,n,i,a){var o,r=this,s=a%4,l=i%4,c=i-l;if(c>0)switch(s){case 0:e[a+3|0]=r[n];case 1:e[a+2|0]=r[n+1];case 2:e[a+1|0]=r[n+2];case 3:e[0|a]=r[n+3]}for(o=4-s;c>o;o=o+=4)t[a+o>>2]=r[n+o]<<24|r[n+o+1]<<16|r[n+o+2]<<8|r[n+o+3];switch(l){case 3:e[a+c+1|0]=r[n+c+2];case 2:e[a+c+2|0]=r[n+c+1];case 1:e[a+c+3|0]=r[n+c]}},c=function(e){switch(o.getDataType(e)){case"string":return s.bind(e);case"array":return l.bind(e);case"buffer":return l.bind(e);case"arraybuffer":return l.bind(new Uint8Array(e));case"view":return l.bind(new Uint8Array(e.buffer))}},d=function(e){var t,n,i="0123456789abcdef",a=[],o=new Uint8Array(e);for(t=0;t<o.length;t++)n=o[t],a[t]=i.charAt(n>>4&15)+i.charAt(n>>0&15);return a.join("")},u=function(e){var t;if(65536>=e)return 65536;if(16777216>e)for(t=1;e>t;t<<=1);else for(t=16777216;e>t;t+=16777216);return t},p=function(e){if(e%64>0)throw new Error("Chunk size must be a multiple of 128 bit");t.maxChunkLen=e,t.padMaxChunkLen=i(e),t.heap=new ArrayBuffer(u(t.padMaxChunkLen+320+20)),t.h32=new Int32Array(t.heap),t.h8=new Int8Array(t.heap),t.core=n({Int32Array:Int32Array,DataView:DataView},{},t.heap),t.buffer=null};p(e||65536);var m=function(e,t){var n=new Int32Array(e,t+320,5);n[0]=1732584193,n[1]=-271733879,n[2]=-1732584194,n[3]=271733878,n[4]=-1009589776},h=function(e,n){var o=i(e),s=new Int32Array(t.heap,0,o>>2);return a(s,e),r(s,e,n),o},f=function(e,n,i){c(e)(t.h8,t.h32,n,i,0)},g=function(e,n,i,a,o){var r=i;o&&(r=h(i,a)),f(e,n,i),t.core.hash(r,t.padMaxChunkLen)},_=function(e,t){var n=new Int32Array(e,t+320,5),i=new Int32Array(5),a=new DataView(i.buffer);return a.setInt32(0,n[0],!1),a.setInt32(4,n[1],!1),a.setInt32(8,n[2],!1),a.setInt32(12,n[3],!1),a.setInt32(16,n[4],!1),i},y=this.rawDigest=function(e){var n=e.byteLength||e.length;m(t.heap,t.padMaxChunkLen);var i=0,a=t.maxChunkLen;for(i=0;n>i+a;i+=a)g(e,i,a,n,!1);return g(e,i,n-i,n,!0),_(t.heap,t.padMaxChunkLen)};this.digest=this.digestFromString=this.digestFromBuffer=this.digestFromArrayBuffer=function(e){return d(y(e).buffer)}}function n(e,t,n){"use asm";function i(e,t){e|=0,t|=0;var n=0,i=0,o=0,r=0,s=0,l=0,c=0,d=0,u=0,p=0,m=0,h=0,f=0,g=0;for(o=a[t+320>>2]|0,s=a[t+324>>2]|0,c=a[t+328>>2]|0,u=a[t+332>>2]|0,m=a[t+336>>2]|0,n=0;(n|0)<(e|0);n=n+64|0){for(r=o,l=s,d=c,p=u,h=m,i=0;(i|0)<64;i=i+4|0)g=a[n+i>>2]|0,f=((o<<5|o>>>27)+(s&c|~s&u)|0)+((g+m|0)+1518500249|0)|0,m=u,u=c,c=s<<30|s>>>2,s=o,o=f,a[e+i>>2]=g;for(i=e+64|0;(i|0)<(e+80|0);i=i+4|0)g=(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])<<1|(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])>>>31,f=((o<<5|o>>>27)+(s&c|~s&u)|0)+((g+m|0)+1518500249|0)|0,m=u,u=c,c=s<<30|s>>>2,s=o,o=f,a[i>>2]=g;for(i=e+80|0;(i|0)<(e+160|0);i=i+4|0)g=(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])<<1|(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])>>>31,f=((o<<5|o>>>27)+(s^c^u)|0)+((g+m|0)+1859775393|0)|0,m=u,u=c,c=s<<30|s>>>2,s=o,o=f,a[i>>2]=g;for(i=e+160|0;(i|0)<(e+240|0);i=i+4|0)g=(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])<<1|(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])>>>31,f=((o<<5|o>>>27)+(s&c|s&u|c&u)|0)+((g+m|0)-1894007588|0)|0,m=u,u=c,c=s<<30|s>>>2,s=o,o=f,a[i>>2]=g;for(i=e+240|0;(i|0)<(e+320|0);i=i+4|0)g=(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])<<1|(a[i-12>>2]^a[i-32>>2]^a[i-56>>2]^a[i-64>>2])>>>31,f=((o<<5|o>>>27)+(s^c^u)|0)+((g+m|0)-899497514|0)|0,m=u,u=c,c=s<<30|s>>>2,s=o,o=f,a[i>>2]=g;o=o+r|0,s=s+l|0,c=c+d|0,u=u+p|0,m=m+h|0}a[t+320>>2]=o,a[t+324>>2]=s,a[t+328>>2]=c,a[t+332>>2]=u,a[t+336>>2]=m}var a=new e.Int32Array(n);return{hash:i}}if("undefined"!=typeof module&&(module.exports=t),"undefined"!=typeof e&&(e.Rusha=t),"undefined"!=typeof FileReaderSync){var i=new FileReaderSync,a=new t(4194304);self.onmessage=function(e){var t,n=e.data.data;if(n instanceof Blob)try{n=i.readAsBinaryString(n)}catch(o){return void self.postMessage({id:e.data.id,error:o.name})}t=a.digest(n),self.postMessage({id:e.data.id,hash:t})}}var o={getDataType:function(t){if("string"==typeof t)return"string";if(t instanceof Array)return"array";if("undefined"!=typeof e&&e.Buffer&&e.Buffer.isBuffer(t))return"buffer";if(t instanceof ArrayBuffer)return"arraybuffer";if(t.buffer instanceof ArrayBuffer)return"view";throw new Error("Unsupported data type.")}}}(this),function(){"use strict";function e(e){throw e}function t(e,t){var n=e.split("."),i=u;!(n[0]in i)&&i.execScript&&i.execScript("var "+n[0]);for(var a;n.length&&(a=n.shift());)n.length||t===d?i=i[a]?i[a]:i[a]={}:i[a]=t}function n(e,t,n){var i,a="number"==typeof t?t:t=0,o="number"==typeof n?n:e.length;for(i=-1,a=7&o;a--;++t)i=i>>>8^_[255&(i^e[t])];for(a=o>>3;a--;t+=8)i=i>>>8^_[255&(i^e[t])],i=i>>>8^_[255&(i^e[t+1])],i=i>>>8^_[255&(i^e[t+2])],i=i>>>8^_[255&(i^e[t+3])],i=i>>>8^_[255&(i^e[t+4])],i=i>>>8^_[255&(i^e[t+5])],i=i>>>8^_[255&(i^e[t+6])],i=i>>>8^_[255&(i^e[t+7])]; |
|
|
return(4294967295^i)>>>0}function i(){}function a(e){var t,n,i,a,o,r,s,l,c,d=e.length,u=0,m=Number.POSITIVE_INFINITY;for(l=0;d>l;++l)e[l]>u&&(u=e[l]),e[l]<m&&(m=e[l]);for(t=1<<u,n=new(p?Uint32Array:Array)(t),i=1,a=0,o=2;u>=i;){for(l=0;d>l;++l)if(e[l]===i){for(r=0,s=a,c=0;i>c;++c)r=r<<1|1&s,s>>=1;for(c=r;t>c;c+=o)n[c]=i<<16|l;++a}++i,a<<=1,o<<=1}return[n,u,m]}function o(t,n){switch(this.i=[],this.j=32768,this.d=this.f=this.c=this.n=0,this.input=p?new Uint8Array(t):t,this.o=!1,this.k=$,this.w=!1,(n||!(n={}))&&(n.index&&(this.c=n.index),n.bufferSize&&(this.j=n.bufferSize),n.bufferType&&(this.k=n.bufferType),n.resize&&(this.w=n.resize)),this.k){case w:this.a=32768,this.b=new(p?Uint8Array:Array)(32768+this.j+258);break;case $:this.a=0,this.b=new(p?Uint8Array:Array)(this.j),this.e=this.D,this.q=this.A,this.l=this.C;break;default:e(Error("invalid inflate mode"))}}function r(t,n){for(var i,a=t.f,o=t.d,r=t.input,s=t.c;n>o;)i=r[s++],i===d&&e(Error("input buffer is broken")),a|=i<<o,o+=8;return i=a&(1<<n)-1,t.f=a>>>n,t.d=o-n,t.c=s,i}function s(e,t){for(var n,i,a,o=e.f,r=e.d,s=e.input,l=e.c,c=t[0],u=t[1];u>r&&(n=s[l++],n!==d);)o|=n<<r,r+=8;return i=c[o&(1<<u)-1],a=i>>>16,e.f=o>>a,e.d=r-a,e.c=l,65535&i}function l(e){function t(e,t,n){var i,a,o,l;for(l=0;e>l;)switch(i=s(this,t)){case 16:for(o=3+r(this,2);o--;)n[l++]=a;break;case 17:for(o=3+r(this,3);o--;)n[l++]=0;a=0;break;case 18:for(o=11+r(this,7);o--;)n[l++]=0;a=0;break;default:a=n[l++]=i}return n}var n,i,o,l,c=r(e,5)+257,d=r(e,5)+1,u=r(e,4)+4,m=new(p?Uint8Array:Array)(M.length);for(l=0;u>l;++l)m[M[l]]=r(e,3);n=a(m),i=new(p?Uint8Array:Array)(c),o=new(p?Uint8Array:Array)(d),e.l(a(t.call(e,c,n,i)),a(t.call(e,d,n,o)))}function c(e){this.input=e,this.c=0,this.m=[],this.s=!1}var d=void 0,u=this,p="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array;new(p?Uint8Array:Array)(256);var m;for(m=0;256>m;++m)for(var h=m,f=7,h=h>>>1;h;h>>>=1)--f;var g=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],_=p?new Uint32Array(g):g;i.prototype.getName=function(){return this.name},i.prototype.getData=function(){return this.data},i.prototype.G=function(){return this.H},t("Zlib.GunzipMember",i),t("Zlib.GunzipMember.prototype.getName",i.prototype.getName),t("Zlib.GunzipMember.prototype.getData",i.prototype.getData),t("Zlib.GunzipMember.prototype.getMtime",i.prototype.G);var y,v=[];for(y=0;288>y;y++)switch(!0){case 143>=y:v.push([y+48,8]);break;case 255>=y:v.push([y-144+400,9]);break;case 279>=y:v.push([y-256+0,7]);break;case 287>=y:v.push([y-280+192,8]);break;default:e("invalid literal: "+y)}var b=function(){function t(t){switch(!0){case 3===t:return[257,t-3,0];case 4===t:return[258,t-4,0];case 5===t:return[259,t-5,0];case 6===t:return[260,t-6,0];case 7===t:return[261,t-7,0];case 8===t:return[262,t-8,0];case 9===t:return[263,t-9,0];case 10===t:return[264,t-10,0];case 12>=t:return[265,t-11,1];case 14>=t:return[266,t-13,1];case 16>=t:return[267,t-15,1];case 18>=t:return[268,t-17,1];case 22>=t:return[269,t-19,2];case 26>=t:return[270,t-23,2];case 30>=t:return[271,t-27,2];case 34>=t:return[272,t-31,2];case 42>=t:return[273,t-35,3];case 50>=t:return[274,t-43,3];case 58>=t:return[275,t-51,3];case 66>=t:return[276,t-59,3];case 82>=t:return[277,t-67,4];case 98>=t:return[278,t-83,4];case 114>=t:return[279,t-99,4];case 130>=t:return[280,t-115,4];case 162>=t:return[281,t-131,5];case 194>=t:return[282,t-163,5];case 226>=t:return[283,t-195,5];case 257>=t:return[284,t-227,5];case 258===t:return[285,t-258,0];default:e("invalid length: "+t)}}var n,i,a=[];for(n=3;258>=n;n++)i=t(n),a[n]=i[2]<<24|i[1]<<16|i[0];return a}();p&&new Uint32Array(b);var w=0,$=1;o.prototype.g=function(){for(;!this.o;){var t=r(this,3);switch(1&t&&(this.o=!0),t>>>=1){case 0:var n=this.input,i=this.c,a=this.b,o=this.a,s=d,c=d,u=d,m=a.length,h=d;switch(this.d=this.f=0,s=n[i++],s===d&&e(Error("invalid uncompressed block header: LEN (first byte)")),c=s,s=n[i++],s===d&&e(Error("invalid uncompressed block header: LEN (second byte)")),c|=s<<8,s=n[i++],s===d&&e(Error("invalid uncompressed block header: NLEN (first byte)")),u=s,s=n[i++],s===d&&e(Error("invalid uncompressed block header: NLEN (second byte)")),u|=s<<8,c===~u&&e(Error("invalid uncompressed block header: length verify")),i+c>n.length&&e(Error("input buffer is broken")),this.k){case w:for(;o+c>a.length;){if(h=m-o,c-=h,p)a.set(n.subarray(i,i+h),o),o+=h,i+=h;else for(;h--;)a[o++]=n[i++];this.a=o,a=this.e(),o=this.a}break;case $:for(;o+c>a.length;)a=this.e({t:2});break;default:e(Error("invalid inflate mode"))}if(p)a.set(n.subarray(i,i+c),o),o+=c,i+=c;else for(;c--;)a[o++]=n[i++];this.c=i,this.a=o,this.b=a;break;case 1:this.l(B,F);break;case 2:l(this);break;default:e(Error("unknown BTYPE: "+t))}}return this.q()};var k,C,S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],M=p?new Uint16Array(S):S,x=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258],A=p?new Uint16Array(x):x,T=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0],E=p?new Uint8Array(T):T,I=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],D=p?new Uint16Array(I):I,P=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],N=p?new Uint8Array(P):P,L=new(p?Uint8Array:Array)(288);for(k=0,C=L.length;C>k;++k)L[k]=143>=k?8:255>=k?9:279>=k?7:8;var O,U,B=a(L),R=new(p?Uint8Array:Array)(30);for(O=0,U=R.length;U>O;++O)R[O]=5;var F=a(R);o.prototype.l=function(e,t){var n=this.b,i=this.a;this.r=e;for(var a,o,l,c,d=n.length-258;256!==(a=s(this,e));)if(256>a)i>=d&&(this.a=i,n=this.e(),i=this.a),n[i++]=a;else for(o=a-257,c=A[o],0<E[o]&&(c+=r(this,E[o])),a=s(this,t),l=D[a],0<N[a]&&(l+=r(this,N[a])),i>=d&&(this.a=i,n=this.e(),i=this.a);c--;)n[i]=n[i++-l];for(;8<=this.d;)this.d-=8,this.c--;this.a=i},o.prototype.C=function(e,t){var n=this.b,i=this.a;this.r=e;for(var a,o,l,c,d=n.length;256!==(a=s(this,e));)if(256>a)i>=d&&(n=this.e(),d=n.length),n[i++]=a;else for(o=a-257,c=A[o],0<E[o]&&(c+=r(this,E[o])),a=s(this,t),l=D[a],0<N[a]&&(l+=r(this,N[a])),i+c>d&&(n=this.e(),d=n.length);c--;)n[i]=n[i++-l];for(;8<=this.d;)this.d-=8,this.c--;this.a=i},o.prototype.e=function(){var e,t,n=new(p?Uint8Array:Array)(this.a-32768),i=this.a-32768,a=this.b;if(p)n.set(a.subarray(32768,n.length));else for(e=0,t=n.length;t>e;++e)n[e]=a[e+32768];if(this.i.push(n),this.n+=n.length,p)a.set(a.subarray(i,i+32768));else for(e=0;32768>e;++e)a[e]=a[i+e];return this.a=32768,a},o.prototype.D=function(e){var t,n,i,a,o=this.input.length/this.c+1|0,r=this.input,s=this.b;return e&&("number"==typeof e.t&&(o=e.t),"number"==typeof e.z&&(o+=e.z)),2>o?(n=(r.length-this.c)/this.r[2],a=258*(n/2)|0,i=a<s.length?s.length+a:s.length<<1):i=s.length*o,p?(t=new Uint8Array(i),t.set(s)):t=s,this.b=t},o.prototype.q=function(){var e,t,n,i,a,o=0,r=this.b,s=this.i,l=new(p?Uint8Array:Array)(this.n+(this.a-32768));if(0===s.length)return p?this.b.subarray(32768,this.a):this.b.slice(32768,this.a);for(t=0,n=s.length;n>t;++t)for(e=s[t],i=0,a=e.length;a>i;++i)l[o++]=e[i];for(t=32768,n=this.a;n>t;++t)l[o++]=r[t];return this.i=[],this.buffer=l},o.prototype.A=function(){var e,t=this.a;return p?this.w?(e=new Uint8Array(t),e.set(this.b.subarray(0,t))):e=this.b.subarray(0,t):(this.b.length>t&&(this.b.length=t),e=this.b),this.buffer=e},c.prototype.F=function(){return this.s||this.g(),this.m.slice()},c.prototype.g=function(){for(var t=this.input.length;this.c<t;){var a=new i,r=d,s=d,l=d,c=d,u=d,m=d,h=d,f=d,g=d,_=this.input,y=this.c;switch(a.u=_[y++],a.v=_[y++],(31!==a.u||139!==a.v)&&e(Error("invalid file signature:"+a.u+","+a.v)),a.p=_[y++],a.p){case 8:break;default:e(Error("unknown compression method: "+a.p))}if(a.h=_[y++],f=_[y++]|_[y++]<<8|_[y++]<<16|_[y++]<<24,a.H=new Date(1e3*f),a.N=_[y++],a.M=_[y++],0<(4&a.h)&&(a.I=_[y++]|_[y++]<<8,y+=a.I),0<(8&a.h)){for(h=[],m=0;0<(u=_[y++]);)h[m++]=String.fromCharCode(u);a.name=h.join("")}if(0<(16&a.h)){for(h=[],m=0;0<(u=_[y++]);)h[m++]=String.fromCharCode(u);a.J=h.join("")}0<(2&a.h)&&(a.B=65535&n(_,0,y),a.B!==(_[y++]|_[y++]<<8)&&e(Error("invalid header crc16"))),r=_[_.length-4]|_[_.length-3]<<8|_[_.length-2]<<16|_[_.length-1]<<24,_.length-y-4-4<512*r&&(c=r),s=new o(_,{index:y,bufferSize:c}),a.data=l=s.g(),y=s.c,a.K=g=(_[y++]|_[y++]<<8|_[y++]<<16|_[y++]<<24)>>>0,n(l,d,d)!==g&&e(Error("invalid CRC-32 checksum: 0x"+n(l,d,d).toString(16)+" / 0x"+g.toString(16))),a.L=r=(_[y++]|_[y++]<<8|_[y++]<<16|_[y++]<<24)>>>0,(4294967295&l.length)!==r&&e(Error("invalid input size: "+(4294967295&l.length)+" / "+r)),this.m.push(a),this.c=y}this.s=!0;var v,b,w,$=this.m,k=0,C=0;for(v=0,b=$.length;b>v;++v)C+=$[v].data.length;if(p)for(w=new Uint8Array(C),v=0;b>v;++v)w.set($[v].data,k),k+=$[v].data.length;else{for(w=[],v=0;b>v;++v)w[v]=$[v].data;w=Array.prototype.concat.apply([],w)}return w},t("Zlib.Gunzip",c),t("Zlib.Gunzip.prototype.decompress",c.prototype.g),t("Zlib.Gunzip.prototype.getMembers",c.prototype.F)}.call(this),this.goog={provide:function(){},math:{}},goog.provide("goog.math.Long"),goog.math.Long=function(e,t){this.low_=0|e,this.high_=0|t},goog.math.Long.IntCache_={},goog.math.Long.fromInt=function(e){if(e>=-128&&128>e){var t=goog.math.Long.IntCache_[e];if(t)return t}var n=new goog.math.Long(0|e,0>e?-1:0);return e>=-128&&128>e&&(goog.math.Long.IntCache_[e]=n),n},goog.math.Long.fromNumber=function(e){return isNaN(e)||!isFinite(e)?goog.math.Long.ZERO:e<=-goog.math.Long.TWO_PWR_63_DBL_?goog.math.Long.MIN_VALUE:e+1>=goog.math.Long.TWO_PWR_63_DBL_?goog.math.Long.MAX_VALUE:0>e?goog.math.Long.fromNumber(-e).negate():new goog.math.Long(e%goog.math.Long.TWO_PWR_32_DBL_|0,e/goog.math.Long.TWO_PWR_32_DBL_|0)},goog.math.Long.fromBits=function(e,t){return new goog.math.Long(e,t)},goog.math.Long.fromString=function(e,t){if(0==e.length)throw Error("number format error: empty string");var n=t||10;if(2>n||n>36)throw Error("radix out of range: "+n);if("-"==e.charAt(0))return goog.math.Long.fromString(e.substring(1),n).negate();if(e.indexOf("-")>=0)throw Error('number format error: interior "-" character: '+e);for(var i=goog.math.Long.fromNumber(Math.pow(n,8)),a=goog.math.Long.ZERO,o=0;o<e.length;o+=8){var r=Math.min(8,e.length-o),s=parseInt(e.substring(o,o+r),n);if(8>r){var l=goog.math.Long.fromNumber(Math.pow(n,r));a=a.multiply(l).add(goog.math.Long.fromNumber(s))}else a=a.multiply(i),a=a.add(goog.math.Long.fromNumber(s))}return a},goog.math.Long.TWO_PWR_16_DBL_=65536,goog.math.Long.TWO_PWR_24_DBL_=1<<24,goog.math.Long.TWO_PWR_32_DBL_=goog.math.Long.TWO_PWR_16_DBL_*goog.math.Long.TWO_PWR_16_DBL_,goog.math.Long.TWO_PWR_31_DBL_=goog.math.Long.TWO_PWR_32_DBL_/2,goog.math.Long.TWO_PWR_48_DBL_=goog.math.Long.TWO_PWR_32_DBL_*goog.math.Long.TWO_PWR_16_DBL_,goog.math.Long.TWO_PWR_64_DBL_=goog.math.Long.TWO_PWR_32_DBL_*goog.math.Long.TWO_PWR_32_DBL_,goog.math.Long.TWO_PWR_63_DBL_=goog.math.Long.TWO_PWR_64_DBL_/2,goog.math.Long.ZERO=goog.math.Long.fromInt(0),goog.math.Long.ONE=goog.math.Long.fromInt(1),goog.math.Long.NEG_ONE=goog.math.Long.fromInt(-1),goog.math.Long.MAX_VALUE=goog.math.Long.fromBits(-1,2147483647),goog.math.Long.MIN_VALUE=goog.math.Long.fromBits(0,-2147483648),goog.math.Long.TWO_PWR_24_=goog.math.Long.fromInt(1<<24),goog.math.Long.prototype.toInt=function(){return this.low_},goog.math.Long.prototype.toNumber=function(){return this.high_*goog.math.Long.TWO_PWR_32_DBL_+this.getLowBitsUnsigned()},goog.math.Long.prototype.toString=function(e){var t=e||10;if(2>t||t>36)throw Error("radix out of range: "+t);if(this.isZero())return"0";if(this.isNegative()){if(this.equals(goog.math.Long.MIN_VALUE)){var n=goog.math.Long.fromNumber(t),i=this.div(n),a=i.multiply(n).subtract(this);return i.toString(t)+a.toInt().toString(t)}return"-"+this.negate().toString(t)}for(var o=goog.math.Long.fromNumber(Math.pow(t,6)),a=this,r="";;){var s=a.div(o),l=a.subtract(s.multiply(o)).toInt(),c=l.toString(t);if(a=s,a.isZero())return c+r;for(;c.length<6;)c="0"+c;r=""+c+r}},goog.math.Long.prototype.getHighBits=function(){return this.high_},goog.math.Long.prototype.getLowBits=function(){return this.low_},goog.math.Long.prototype.getLowBitsUnsigned=function(){return this.low_>=0?this.low_:goog.math.Long.TWO_PWR_32_DBL_+this.low_},goog.math.Long.prototype.getNumBitsAbs=function(){if(this.isNegative())return this.equals(goog.math.Long.MIN_VALUE)?64:this.negate().getNumBitsAbs();for(var e=0!=this.high_?this.high_:this.low_,t=31;t>0&&0==(e&1<<t);t--);return 0!=this.high_?t+33:t+1},goog.math.Long.prototype.isZero=function(){return 0==this.high_&&0==this.low_},goog.math.Long.prototype.isNegative=function(){return this.high_<0},goog.math.Long.prototype.isOdd=function(){return 1==(1&this.low_)},goog.math.Long.prototype.equals=function(e){return this.high_==e.high_&&this.low_==e.low_},goog.math.Long.prototype.notEquals=function(e){return this.high_!=e.high_||this.low_!=e.low_},goog.math.Long.prototype.lessThan=function(e){return this.compare(e)<0},goog.math.Long.prototype.lessThanOrEqual=function(e){return this.compare(e)<=0},goog.math.Long.prototype.greaterThan=function(e){return this.compare(e)>0},goog.math.Long.prototype.greaterThanOrEqual=function(e){return this.compare(e)>=0},goog.math.Long.prototype.compare=function(e){if(this.equals(e))return 0;var t=this.isNegative(),n=e.isNegative();return t&&!n?-1:!t&&n?1:this.subtract(e).isNegative()?-1:1},goog.math.Long.prototype.negate=function(){return this.equals(goog.math.Long.MIN_VALUE)?goog.math.Long.MIN_VALUE:this.not().add(goog.math.Long.ONE)},goog.math.Long.prototype.add=function(e){var t=this.high_>>>16,n=65535&this.high_,i=this.low_>>>16,a=65535&this.low_,o=e.high_>>>16,r=65535&e.high_,s=e.low_>>>16,l=65535&e.low_,c=0,d=0,u=0,p=0;return p+=a+l,u+=p>>>16,p&=65535,u+=i+s,d+=u>>>16,u&=65535,d+=n+r,c+=d>>>16,d&=65535,c+=t+o,c&=65535,goog.math.Long.fromBits(u<<16|p,c<<16|d)},goog.math.Long.prototype.subtract=function(e){return this.add(e.negate())},goog.math.Long.prototype.multiply=function(e){if(this.isZero())return goog.math.Long.ZERO;if(e.isZero())return goog.math.Long.ZERO;if(this.equals(goog.math.Long.MIN_VALUE))return e.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO;if(e.equals(goog.math.Long.MIN_VALUE))return this.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO;if(this.isNegative())return e.isNegative()?this.negate().multiply(e.negate()):this.negate().multiply(e).negate();if(e.isNegative())return this.multiply(e.negate()).negate();if(this.lessThan(goog.math.Long.TWO_PWR_24_)&&e.lessThan(goog.math.Long.TWO_PWR_24_))return goog.math.Long.fromNumber(this.toNumber()*e.toNumber());var t=this.high_>>>16,n=65535&this.high_,i=this.low_>>>16,a=65535&this.low_,o=e.high_>>>16,r=65535&e.high_,s=e.low_>>>16,l=65535&e.low_,c=0,d=0,u=0,p=0;return p+=a*l,u+=p>>>16,p&=65535,u+=i*l,d+=u>>>16,u&=65535,u+=a*s,d+=u>>>16,u&=65535,d+=n*l,c+=d>>>16,d&=65535,d+=i*s,c+=d>>>16,d&=65535,d+=a*r,c+=d>>>16,d&=65535,c+=t*l+n*s+i*r+a*o,c&=65535,goog.math.Long.fromBits(u<<16|p,c<<16|d)},goog.math.Long.prototype.div=function(e){if(e.isZero())throw Error("division by zero");if(this.isZero())return goog.math.Long.ZERO;if(this.equals(goog.math.Long.MIN_VALUE)){if(e.equals(goog.math.Long.ONE)||e.equals(goog.math.Long.NEG_ONE))return goog.math.Long.MIN_VALUE;if(e.equals(goog.math.Long.MIN_VALUE))return goog.math.Long.ONE;var t=this.shiftRight(1),n=t.div(e).shiftLeft(1);if(n.equals(goog.math.Long.ZERO))return e.isNegative()?goog.math.Long.ONE:goog.math.Long.NEG_ONE;var i=this.subtract(e.multiply(n)),a=n.add(i.div(e));return a}if(e.equals(goog.math.Long.MIN_VALUE))return goog.math.Long.ZERO;if(this.isNegative())return e.isNegative()?this.negate().div(e.negate()):this.negate().div(e).negate();if(e.isNegative())return this.div(e.negate()).negate();for(var o=goog.math.Long.ZERO,i=this;i.greaterThanOrEqual(e);){for(var n=Math.max(1,Math.floor(i.toNumber()/e.toNumber())),r=Math.ceil(Math.log(n)/Math.LN2),s=48>=r?1:Math.pow(2,r-48),l=goog.math.Long.fromNumber(n),c=l.multiply(e);c.isNegative()||c.greaterThan(i);)n-=s,l=goog.math.Long.fromNumber(n),c=l.multiply(e);l.isZero()&&(l=goog.math.Long.ONE),o=o.add(l),i=i.subtract(c)}return o},goog.math.Long.prototype.modulo=function(e){return this.subtract(this.div(e).multiply(e))},goog.math.Long.prototype.not=function(){return goog.math.Long.fromBits(~this.low_,~this.high_)},goog.math.Long.prototype.and=function(e){return goog.math.Long.fromBits(this.low_&e.low_,this.high_&e.high_)},goog.math.Long.prototype.or=function(e){return goog.math.Long.fromBits(this.low_|e.low_,this.high_|e.high_)},goog.math.Long.prototype.xor=function(e){return goog.math.Long.fromBits(this.low_^e.low_,this.high_^e.high_)},goog.math.Long.prototype.shiftLeft=function(e){if(e&=63,0==e)return this;var t=this.low_;if(32>e){var n=this.high_;return goog.math.Long.fromBits(t<<e,n<<e|t>>>32-e)}return goog.math.Long.fromBits(0,t<<e-32)},goog.math.Long.prototype.shiftRight=function(e){if(e&=63,0==e)return this;var t=this.high_;if(32>e){var n=this.low_;return goog.math.Long.fromBits(n>>>e|t<<32-e,t>>e)}return goog.math.Long.fromBits(t>>e-32,t>=0?0:-1)},goog.math.Long.prototype.shiftRightUnsigned=function(e){if(e&=63,0==e)return this;var t=this.high_;if(32>e){var n=this.low_;return goog.math.Long.fromBits(n>>>e|t<<32-e,t>>>e)}return 32==e?goog.math.Long.fromBits(t,0):goog.math.Long.fromBits(t>>>e-32,0)},bpe=0,mask=0,radix=mask+1,digitsStr="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_=!@#$%^&*()[]{}|;:,.<>/?`~ \\'\"+-";for(bpe=0;1<<bpe+1>1<<bpe;bpe++);bpe>>=1,mask=(1<<bpe)-1,radix=mask+1,one=int2bigInt(1,1,1),t=new Array(0),ss=t,s0=t,s1=t,s2=t,s3=t,s4=t,s5=t,s6=t,s7=t,T=t,sa=t,mr_x1=t,mr_r=t,mr_a=t,eg_v=t,eg_u=t,eg_A=t,eg_B=t,eg_C=t,eg_D=t,md_q1=t,md_q2=t,md_q3=t,md_r=t,md_r1=t,md_r2=t,md_tt=t,primes=t,pows=t,s_i=t,s_i2=t,s_R=t,s_rm=t,s_q=t,s_n1=t,s_a=t,s_r2=t,s_n=t,s_b=t,s_d=t,s_x1=t,s_x2=t,s_aa=t,rpprb=t;var _logTimer=(new Date).getTime();TLSerialization.prototype.createBuffer=function(){this.buffer=new ArrayBuffer(this.maxLength),this.intView=new Int32Array(this.buffer),this.byteView=new Uint8Array(this.buffer)},TLSerialization.prototype.getArray=function(){var e=new ArrayBuffer(this.offset),t=new Int32Array(e);return t.set(this.intView.subarray(0,this.offset/4)),t},TLSerialization.prototype.getBuffer=function(){return this.getArray().buffer},TLSerialization.prototype.getBytes=function(e){if(e){var t=new ArrayBuffer(this.offset),n=new Uint8Array(t);return n.set(this.byteView.subarray(0,this.offset)),n}for(var i=[],a=0;a<this.offset;a++)i.push(this.byteView[a]);return i},TLSerialization.prototype.checkLength=function(e){if(!(this.offset+e<this.maxLength)){console.trace("Increase buffer",this.offset,e,this.maxLength),this.maxLength=4*Math.ceil(Math.max(2*this.maxLength,this.offset+e+16)/4);var t=this.buffer,n=new Int32Array(t);this.createBuffer(),new Int32Array(this.buffer).set(n)}},TLSerialization.prototype.writeInt=function(e,t){this.debug&&console.log(">>>",e.toString(16),e,t),this.checkLength(4),this.intView[this.offset/4]=e,this.offset+=4},TLSerialization.prototype.storeInt=function(e,t){this.writeInt(e,(t||"")+":int")},TLSerialization.prototype.storeBool=function(e,t){e?this.writeInt(2574415285,(t||"")+":bool"):this.writeInt(3162085175,(t||"")+":bool")},TLSerialization.prototype.storeLongP=function(e,t,n){this.writeInt(t,(n||"")+":long[low]"),this.writeInt(e,(n||"")+":long[high]")},TLSerialization.prototype.storeLong=function(e,t){if(angular.isArray(e))return 2==e.length?this.storeLongP(e[0],e[1],t):this.storeIntBytes(e,64,t);var n=bigStringInt(e).divideAndRemainder(bigint(4294967296));this.writeInt(intToUint(n[1].intValue()),(t||"")+":long[low]"),this.writeInt(intToUint(n[0].intValue()),(t||"")+":long[high]")},TLSerialization.prototype.storeDouble=function(e){var t=new ArrayBuffer(8),n=new Int32Array(t),i=new Float64Array(t);i[0]=e,this.writeInt(n[0],(field||"")+":double[low]"),this.writeInt(n[1],(field||"")+":double[high]")},TLSerialization.prototype.storeString=function(e,t){this.debug&&console.log(">>>",e,(t||"")+":string");var n=unescape(encodeURIComponent(e));this.checkLength(n.length+8);var i=n.length;253>=i?this.byteView[this.offset++]=i:(this.byteView[this.offset++]=254,this.byteView[this.offset++]=255&i,this.byteView[this.offset++]=(65280&i)>>8,this.byteView[this.offset++]=(16711680&i)>>16);for(var a=0;i>a;a++)this.byteView[this.offset++]=n.charCodeAt(a);for(;this.offset%4;)this.byteView[this.offset++]=0},TLSerialization.prototype.storeBytes=function(e,t){e instanceof ArrayBuffer&&(e=new Uint8Array(e)),this.debug&&console.log(">>>",bytesToHex(e),(t||"")+":bytes");var n=e.byteLength||e.length;for(this.checkLength(n+8),253>=n?this.byteView[this.offset++]=n:(this.byteView[this.offset++]=254,this.byteView[this.offset++]=255&n,this.byteView[this.offset++]=(65280&n)>>8,this.byteView[this.offset++]=(16711680&n)>>16),this.byteView.set(e,this.offset),this.offset+=n;this.offset%4;)this.byteView[this.offset++]=0},TLSerialization.prototype.storeIntBytes=function(e,t,n){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var i=e.length;if(t%32||8*i!=t)throw new Error("Invalid bits: "+t+", "+e.length);this.debug&&console.log(">>>",bytesToHex(e),(n||"")+":int"+t),this.checkLength(i),this.byteView.set(e,this.offset),this.offset+=i},TLSerialization.prototype.storeRawBytes=function(e,t){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var n=e.length;this.debug&&console.log(">>>",bytesToHex(e),t||""),this.checkLength(n),this.byteView.set(e,this.offset),this.offset+=n},TLSerialization.prototype.storeMethod=function(e,t){var n,i=this.mtproto?Config.Schema.MTProto:Config.Schema.API,a=!1;for(n=0;n<i.methods.length;n++)if(i.methods[n].method==e){a=i.methods[n];break}if(!a)throw new Error("No method "+e+" found");this.storeInt(intToUint(a.id),e+"[id]");var o=this;return angular.forEach(a.params,function(n){o.storeObject(t[n.name],n.type,e+"["+n.name+"]")}),a.type},TLSerialization.prototype.storeObject=function(e,t,n){switch(t){case"int":return this.storeInt(e,n);case"long":return this.storeLong(e,n);case"int128":return this.storeIntBytes(e,128,n);case"int256":return this.storeIntBytes(e,256,n);case"int512":return this.storeIntBytes(e,512,n);case"string":return this.storeString(e,n);case"bytes":return this.storeBytes(e,n);case"double":return this.storeDouble(e,n);case"Bool":return this.storeBool(e,n)}if(angular.isArray(e)){if("Vector"==t.substr(0,6))this.writeInt(481674261,n+"[id]");else if("vector"!=t.substr(0,6))throw new Error("Invalid vector type "+t);var i=t.substr(7,t.length-8);this.writeInt(e.length,n+"[count]");for(var a=0;a<e.length;a++)this.storeObject(e[a],i,n+"["+a+"]");return!0}if("vector"==t.substr(0,6).toLowerCase())throw new Error("Invalid vector object");if(!angular.isObject(e))throw new Error("Invalid object for type "+t);var a,o=this.mtproto?Config.Schema.MTProto:Config.Schema.API,r=e._,s=!1,l=!1;for((s="%"==t.charAt(0))&&(t=t.substr(1)),a=0;a<o.constructors.length;a++)if(o.constructors[a].predicate==r){l=o.constructors[a];break}if(!l)throw new Error("No predicate "+r+" found");r==t&&(s=!0),s||this.writeInt(intToUint(l.id),n+"["+r+"][id]");var c=this;return angular.forEach(l.params,function(t){c.storeObject(e[t.name],t.type,n+"["+r+"]["+t.name+"]")}),l.type},TLDeserialization.prototype.readInt=function(e){if(this.offset>=4*this.intView.length)throw new Error("Nothing to fetch: "+e);var t=this.intView[this.offset/4];return this.debug&&console.log("<<<",t.toString(16),t,e),this.offset+=4,t},TLDeserialization.prototype.fetchInt=function(e){return this.readInt((e||"")+":int")},TLDeserialization.prototype.fetchDouble=function(e){var t=new ArrayBuffer(8),n=new Int32Array(t),i=new Float64Array(t);return n[0]=this.readInt((e||"")+":double[low]"),n[1]=this.readInt((e||"")+":double[high]"),i[0]},TLDeserialization.prototype.fetchLong=function(e){var t=this.readInt((e||"")+":long[low]"),n=this.readInt((e||"")+":long[high]"),i=bigint(n).shiftLeft(32).add(bigint(t)).toString();return i},TLDeserialization.prototype.fetchBool=function(e){var t=this.readInt((e||"")+":bool");return 2574415285==t?!0:3162085175==t?!1:(this.offset-=4,this.fetchObject("Object",e))},TLDeserialization.prototype.fetchString=function(e){var t=this.byteView[this.offset++];if(254==t)var t=this.byteView[this.offset++]|this.byteView[this.offset++]<<8|this.byteView[this.offset++]<<16;for(var n="",i=0;t>i;i++)n+=String.fromCharCode(this.byteView[this.offset++]);for(;this.offset%4;)this.offset++;try{var a=decodeURIComponent(escape(n))}catch(o){var a=n}return this.debug&&console.log("<<<",a,(e||"")+":string"),a},TLDeserialization.prototype.fetchBytes=function(e){var t=this.byteView[this.offset++];if(254==t)var t=this.byteView[this.offset++]|this.byteView[this.offset++]<<8|this.byteView[this.offset++]<<16;var n=this.byteView.subarray(this.offset,this.offset+t);for(this.offset+=t;this.offset%4;)this.offset++;return this.debug&&console.log("<<<",bytesToHex(n),(e||"")+":bytes"),n},TLDeserialization.prototype.fetchIntBytes=function(e,t,n){if(e%32)throw new Error("Invalid bits: "+e);var i=e/8;if(t){var a=this.byteView.subarray(this.offset,this.offset+i);return this.offset+=i,a}for(var o=[],r=0;i>r;r++)o.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(o),(n||"")+":int"+e),o},TLDeserialization.prototype.fetchRawBytes=function(e,t,n){if(e===!1&&(e=this.readInt((n||"")+"_length")),t){var i=new Uint8Array(e);return i.set(this.byteView.subarray(this.offset,this.offset+e)),this.offset+=e,i}for(var i=[],a=0;e>a;a++)i.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(i),n||""),i},TLDeserialization.prototype.fetchObject=function(e,t){switch(e){case"int":return this.fetchInt(t);case"long":return this.fetchLong(t);case"int128":return this.fetchIntBytes(128,!1,t);case"int256":return this.fetchIntBytes(256,!1,t);case"int512":return this.fetchIntBytes(512,!1,t);case"string":return this.fetchString(t);case"bytes":return this.fetchBytes(t);case"double":return this.fetchDouble(t);case"Bool":return this.fetchBool(t)}if(t=t||e||"Object","Vector"==e.substr(0,6)||"vector"==e.substr(0,6)){if("V"==e.charAt(0)){var n=this.readInt(t+"[id]");if(481674261!=n)throw new Error("Invalid vector constructor "+n)}var i=this.readInt(t+"[count]"),a=[];if(i>0)for(var o=e.substr(7,e.length-8),r=0;i>r;r++)a.push(this.fetchObject(o,t+"["+r+"]"));return a}var s=this.mtproto?Config.Schema.MTProto:Config.Schema.API,l=!1,c=!1;if("%"==e.charAt(0)){var d=e.substr(1);for(r=0;r<s.constructors.length;r++)if(s.constructors[r].type==d){c=s.constructors[r];break}if(!c)throw new Error("Constructor not found for type: "+e)}else if(e.charAt(0)>=97&&e.charAt(0)<=122){for(r=0;r<s.constructors.length;r++)if(s.constructors[r].predicate==e){c=s.constructors[r];break}if(!c)throw new Error("Constructor not found for predicate: "+e)}else{var n=this.readInt(t+"[id]"),u=uintToInt(n);if(812830625==u){var p=this.fetchBytes(t+"[packed_string]"),m=gzipUncompress(p),h=bytesToArrayBuffer(m),f=new TLDeserialization(h);return f.fetchObject(e,t)}for(r=0;r<s.constructors.length;r++)if(s.constructors[r].id==u){c=s.constructors[r];break}var g=!1;if(!c&&this.mtproto){var _=Config.Schema.API;for(r=0;r<_.constructors.length;r++)if(_.constructors[r].id==u){c=_.constructors[r],delete this.mtproto,g=!0;break}}if(!c)throw new Error("Constructor not found: "+n)}l=c.predicate;var a={_:l},y=(this.mtproto?"mt_":"")+l,v=this;return this.override[y]?this.override[y].apply(this,[a,t+"["+l+"]"]):angular.forEach(c.params,function(e){a[e.name]=v.fetchObject(e.type,t+"["+l+"]["+e.name+"]")}),g&&(this.mtproto=!0),a},TLDeserialization.prototype.getOffset=function(){return this.offset},TLDeserialization.prototype.fetchEnd=function(){if(this.offset!=this.byteView.length)throw new Error("Fetch end with non-empty buffer");return!0},angular.module("izhukov.utils",[]).provider("Storage",function(){this.setPrefix=function(e){ConfigStorage.prefix(e)},this.$get=["$q",function(e){var t={};return angular.forEach(["get","set","remove"],function(n){t[n]=function(){var t=e.defer(),i=Array.prototype.slice.call(arguments);return i.push(function(e){t.resolve(e)}),ConfigStorage[n].apply(ConfigStorage,i),t.promise}}),t}]}).service("qSync",function(){return{when:function(e){return{then:function(t){return t(e)}}}}}).service("FileManager",["$window","$q","$timeout","qSync",function(e,t,n,i){function a(){return f}function o(e,n){return l(n).then(function(n){return r(n,e).then(function(){return n},function(e){return t.reject(e)})})}function r(e,n){var i=t.defer();if(e.onwriteend=function(){i.resolve()},e.onerror=function(e){i.reject(e)},n.file)n.file(function(t){e.write(t)},function(e){i.reject(e)});else if(n instanceof Blob)e.write(n);else try{var a=blobConstruct([bytesToArrayBuffer(n)]);e.write(a)}catch(o){i.reject(o)}return i.promise}function s(n,i,a){if(!e.chrome||!chrome.fileSystem||!chrome.fileSystem.chooseEntry)return t.reject();var o=t.defer();return chrome.fileSystem.chooseEntry({type:"saveFile",suggestedName:n,accepts:[{mimeTypes:[a],extensions:[i]}]},function(e){o.resolve(e)}),o.promise}function l(e){var n=t.defer();return e.createWriter(function(e){n.resolve(e)},function(e){n.reject(e)}),n.promise}function c(e,t){var n=[],i={write:function(e){return f?(n.push(e),void setZeroTimeout(function(){i.onwriteend&&i.onwriteend()})):(i.onerror&&i.onerror(new Error("Blob not supported by browser")),!1) |
|
|
},truncate:function(){n=[]},finalize:function(){var i=blobConstruct(n,e);return t&&t(i),i}};return i}function d(e,t){return void 0!==e.toURL?e.toURL(t):e instanceof Blob?URL.createObjectURL(e):"data:"+t+";base64,"+bytesToBase64(e)}function u(e){var n;try{var i=new FileReader;i.onloadend=function(){n.resolve(i.result)},i.readAsDataURL(e)}catch(a){return t.reject(a)}return n=t.defer(),n.promise}function p(e,t){if(h&&e instanceof Blob){var t=e.type||e.mimeType||t||"";if(!t.match(/image\/(jpeg|gif|png|bmp)|video\/quicktime/))return u(e)}return i.when(d(e,t))}function m(e,t,i){if(window.navigator&&void 0!==navigator.msSaveBlob)return window.navigator.msSaveBlob(e,i),!1;if(window.navigator&&navigator.getDeviceStorage){var a="sdcard";switch(t.split("/")[0]){case"video":a="videos";break;case"audio":a="music";break;case"image":a="pictures"}var o=navigator.getDeviceStorage(a),r=o.addNamed(e,i);return r.onsuccess=function(){console.log("Device storage save result",this.result)},void(r.onerror=function(){})}p(e,t).then(function(e){var t=document.createElementNS("http://www.w3.org/1999/xhtml","a");t.href=e,t.target="_blank",t.download=i,t.dataset&&(t.dataset.downloadurl=["video/quicktime",i,e].join(":")),$(t).css({position:"absolute",top:1,left:1}).appendTo("body");try{var a=document.createEvent("MouseEvents");a.initMouseEvent("click",!0,!1,window,0,0,0,0,0,!1,!1,!1,!1,0,null),t.dispatchEvent(a)}catch(o){console.error("Download click error",o);try{console.error("Download click error",o),t[0].click()}catch(o){window.open(e,"_blank")}}n(function(){$(t).remove()},100)})}e.URL=e.URL||e.webkitURL,e.BlobBuilder=e.BlobBuilder||e.WebKitBlobBuilder||e.MozBlobBuilder;var h=-1!=navigator.userAgent.indexOf("Safari")&&-1==navigator.userAgent.indexOf("Chrome"),f=!0;try{blobConstruct([],"")}catch(g){f=!1}return{isAvailable:a,copy:o,write:r,getFileWriter:l,getFakeFileWriter:c,chooseSave:s,getUrl:d,getDataUrl:u,getFileCorrectUrl:p,download:m}}]).service("IdbFileStorage",["$q","$window","FileManager",function(e,t,n){function i(){return m}function a(){if(c)return c;try{var t=indexedDB.open(d,p),n=e.defer(),i=function(e){e.createObjectStore(u)};if(!t)throw new Exception}catch(a){return m=!1,e.reject(a)}return t.onsuccess=function(){db=t.result,db.onerror=function(e){m=!1,console.error("Error creating/accessing IndexedDB database",e),n.reject(e)},db.setVersion&&db.version!=p?db.setVersion(p).onsuccess=function(){i(db),n.resolve(db)}:n.resolve(db)},t.onerror=function(e){m=!1,console.error("Error creating/accessing IndexedDB database",e),n.reject(e)},t.onupgradeneeded=function(e){i(e.target.result)},c=n.promise}function o(t,n){return a().then(function(i){if(!h)return r(i,t,n);try{var a=i.transaction([u],IDBTransaction.READ_WRITE||"readwrite").objectStore(u),o=a.put(n,t)}catch(s){return h?(h=!1,r(i,t,n)):(m=!1,e.reject(s))}var l=e.defer();return o.onsuccess=function(){l.resolve(n)},o.onerror=function(e){l.reject(e)},l.promise})}function r(t,n,i){try{var a=new FileReader;a.readAsDataURL(i)}catch(o){return m=!1,e.reject()}var r=e.defer();return a.onloadend=function(){try{var e=t.transaction([u],IDBTransaction.READ_WRITE||"readwrite").objectStore(u),o=e.put(a.result,n)}catch(s){return m=!1,void r.reject(s)}o.onsuccess=function(){r.resolve(i)},o.onerror=function(e){r.reject(e)}},r.promise}function s(t){return a().then(function(n){var i=e.defer(),a=n.transaction([u],IDBTransaction.READ||"readonly").objectStore(u),o=a.get(t);return o.onsuccess=function(e){var t=e.target.result;void 0===t?i.reject():i.resolve("string"==typeof t&&"data:"===t.substr(0,5)?dataUrlToBlob(t):t)},o.onerror=function(e){i.reject(e)},i.promise})}function l(t,i){var a=n.getFakeFileWriter(i,function(e){o(t,e)});return e.when(a)}t.indexedDB=t.indexedDB||t.webkitIndexedDB||t.mozIndexedDB||t.OIndexedDB||t.msIndexedDB,t.IDBTransaction=t.IDBTransaction||t.webkitIDBTransaction||t.OIDBTransaction||t.msIDBTransaction;var c,d="cachedFiles",u="files",p=1,m=void 0!==t.indexedDB&&void 0!==t.IDBTransaction&&-1==navigator.userAgent.indexOf("Safari"),h=m||!1;return a(),{isAvailable:i,saveFile:o,getFile:s,getFileWriter:l}}]).service("TmpfsFileStorage",["$q","$window","FileManager",function(e,t,n){function i(){if(l)return l;if(!t.requestFileSystem)return l=e.reject({type:"FS_BROWSER_UNSUPPORTED",description:"requestFileSystem not present"});var n=e.defer();return t.requestFileSystem(t.TEMPORARY,524288e3,function(e){cachedFs=e,n.resolve()},function(e){c=!1,n.reject(e)}),l=n.promise}function a(){return c}function o(t,n){return n=n||1,i().then(function(){var i=e.defer();return cachedFs.root.getFile(t,{create:!1},function(e){e.file(function(t){t.size>=n?i.resolve(e):i.reject(new Error("FILE_NOT_FOUND"))},function(e){console.log(dT(),"error",e),i.reject(e)})},function(){i.reject(new Error("FILE_NOT_FOUND"))}),i.promise})}function r(e,t){return s(e).then(function(e){return n.write(e,t).then(function(){return e.finalize()})})}function s(t){return i().then(function(){var i=e.defer();return cachedFs.root.getFile(t,{create:!0},function(e){n.getFileWriter(e).then(function(t){t.finalize=function(){return e},i.resolve(t)},function(e){c=!1,i.reject(e)})},function(e){c=!1,i.reject(e)}),i.promise})}t.requestFileSystem=t.requestFileSystem||t.webkitRequestFileSystem;var l,c=void 0!==t.requestFileSystem;return i(),{isAvailable:a,saveFile:r,getFile:o,getFileWriter:s}}]).service("MemoryFileStorage",["$q","FileManager",function(e,t){function n(){return!0}function i(t){return r[t]?e.when(r[t]):e.reject(new Error("FILE_NOT_FOUND"))}function a(t,n){return e.when(r[t]=n)}function o(n,i){var o=t.getFakeFileWriter(i,function(e){a(n,e)});return e.when(o)}var r={};return{isAvailable:n,saveFile:a,getFile:i,getFileWriter:o}}]).service("CryptoWorker",["$timeout","$q",function(e,t){function n(e,n,a){var s=t.defer();return r[o]=s,n.task=e,n.taskID=o,(a||i).postMessage(n),o++,s.promise}var i=!1,a=!1,o=0,r={},s=Config.Modes.webcrypto&&window.crypto&&(window.crypto.subtle||window.crypto.webkitSubtle),l=s&&void 0!==s.digest,c=function(e,t){var n=r[e];void 0!==n&&(n.resolve(t),delete r[e])};if(Config.Modes.nacl&&navigator.mimeTypes&&void 0!==navigator.mimeTypes["application/x-pnacl"]){var d=$('<div id="nacl_listener"><embed id="mtproto_crypto" width="0" height="0" src="nacl/mtproto_crypto.nmf" type="application/x-pnacl" /></div>').appendTo($("body"))[0];d.addEventListener("load",function(){a=d.firstChild,console.log(dT(),"NaCl ready")},!0),d.addEventListener("message",function(e){c(e.data.taskID,e.data.result)},!0),d.addEventListener("error",function(e){console.error("NaCl error",e)},!0)}if(window.Worker){var u=new Worker("js/lib/crypto_worker.js");u.onmessage=function(e){i?c(e.data.taskID,e.data.result):i=u},u.onerror=function(e){console.error("CW error",e,e.stack),i=!1}}return{sha1Hash:function(n){if(l){var i=t.defer(),a=Array.isArray(n)?convertToUint8Array(n):n;return s.digest({name:"SHA-1"},a).then(function(e){i.resolve(e)},function(e){console.error("Crypto digest error",e),l=!1,i.resolve(sha1HashSync(n))}),i.promise}return e(function(){return sha1HashSync(n)})},aesEncrypt:function(t,i,o){return a?n("aes-encrypt",{bytes:addPadding(convertToArrayBuffer(t)),keyBytes:convertToArrayBuffer(i),ivBytes:convertToArrayBuffer(o)},a):e(function(){return convertToArrayBuffer(aesEncryptSync(t,i,o))})},aesDecrypt:function(t,i,o){return a?n("aes-decrypt",{encryptedBytes:addPadding(convertToArrayBuffer(t)),keyBytes:convertToArrayBuffer(i),ivBytes:convertToArrayBuffer(o)},a):e(function(){return convertToArrayBuffer(aesDecryptSync(t,i,o))})},factorize:function(t){return t=convertToByteArray(t),a&&t.length<=8?n("factorize",{bytes:t},a):i?n("factorize",{bytes:t}):e(function(){return pqPrimeFactorization(t)})},modPow:function(t,a,o){return i?n("mod-pow",{x:t,y:a,m:o}):e(function(){return bytesModPow(t,a,o)})}}}]).service("SearchIndexManager",function(){function e(){return{shortIndexes:{},fullTexts:{}}}function t(e){e=e.replace(a," ").replace(o,"").toLowerCase();for(var t in r)r.hasOwnProperty(t)&&(e=e.replace(r[t],t));return e}function n(e,n,i){if(void 0!==i.fullTexts[e])return!1;if(n=t(n),!n.length)return!1;var a=i.shortIndexes;i.fullTexts[e]=n,angular.forEach(n.split(" "),function(t){var n,i,o=Math.min(t.length,3);for(i=1;o>=i;i++)n=t.substr(0,i),void 0===a[n]?a[n]=[e]:a[n].push(e)})}function i(e,n){var i=n.shortIndexes,a=n.fullTexts;e=t(e);var o,r,s,l,c,d=e.split(" "),u=!1;for(r=0;r<d.length;r++){if(o=i[d[r].substr(0,3)],!o){u=[];break}(u===!1||u.length>o.length)&&(u=o)}for(o={},s=0;s<u.length;s++){for(c=!0,l=a[u[s]],r=0;r<d.length;r++)if(-1==l.indexOf(d[r])){c=!1;break}c&&(o[u[s]]=!0)}return o}var a=/[`~!@#$%^&*()\-_=+\[\]\\|{}'";:\/?.>,<\s]+/g,o=/^\s+|\s$/g,r={a:/[åáâäà]/g,e:/[éêëè]/g,i:/[íîïì]/g,o:/[óôöò]/g,u:/[úûüù]/g,c:/ç/g,ss:/ß/g};return{createIndex:e,indexObject:n,cleanSearchText:t,search:i}}).service("ExternalResourcesManager",["$q","$http",function(e,t){function n(e){return void 0!==i[e]?i[e]:i[e]=t.get(e,{responseType:"blob",transformRequest:null}).then(function(e){return window.URL=window.URL||window.webkitURL,window.URL.createObjectURL(e.data)})}var i={};return{downloadImage:n}}]).service("IdleManager",["$rootScope","$window","$timeout",function(e,t,n){function i(){r||(r=!0,$(t).on("blur focus keydown mousedown touchstart",a),setTimeout(function(){a({type:"blur"})},0))}function a(i){"mousemove"==i.type&&$(t).off("mousemove",a);var r="blur"==i.type||"timeout"==i.type?!0:!1;n.cancel(o),r||(o=n(function(){a({type:"timeout"})},3e4)),e.idle.isIDLE!=r&&(e.$apply(function(){e.idle.isIDLE=r}),r&&"timeout"==i.type&&$(t).on("mousemove",a))}e.idle={isIDLE:!1};var o,r=!1;return{start:i}}]).service("AppRuntimeManager",["$window",function(e){return{reload:function(){try{location.reload()}catch(t){}e.chrome&&chrome.runtime&&chrome.runtime.reload&&chrome.runtime.reload()},close:function(){try{e.close()}catch(t){}},focus:function(){window.navigator.mozApps&&document.hidden?window.navigator.mozApps.getSelf().onsuccess=function(){this.result.launch()}:(window.chrome&&chrome.app&&chrome.app.window&&chrome.app.window.current().focus(),window.focus())}}}]),angular.module("izhukov.mtproto",["izhukov.utils"]).factory("MtpDcConfigurator",function(){function e(e,a){if(void 0===i[e]){var o,r,s=!1;if(Config.Modes.ssl){var l=t[e-1]+(a?"-1":""),c=Config.Modes.test?"apiw_test1":"apiw1";return s="https://"+l+".web.telegram.org/"+c}for(o=0;o<n.length;o++)if(r=n[o],r.id==e){s="http://"+r.host+(80!=r.port?":"+r.port:"")+"/apiw1";break}i[e]=s}return i[e]}var t=["pluto","venus","aurora","vesta","flora"],n=Config.Modes.test?[{id:1,host:"173.240.5.253",port:80},{id:2,host:"149.154.167.40",port:80},{id:3,host:"174.140.142.5",port:80}]:[{id:1,host:"149.154.175.50",port:80},{id:2,host:"149.154.167.51",port:80},{id:3,host:"174.140.142.6",port:80},{id:4,host:"149.154.167.91",port:80},{id:5,host:"149.154.171.5",port:80}],i={};return{chooseServer:e}}).factory("MtpRsaKeysManager",function(){function e(){if(!a){for(var e=0;e<n.length;e++){var t=n[e],o=new TLSerialization;o.storeBytes(bytesFromHex(t.modulus),"n"),o.storeBytes(bytesFromHex(t.exponent),"e");var r=o.getBuffer(),s=sha1BytesSync(r).slice(-8);s.reverse(),i[bytesToHex(s)]={modulus:t.modulus,exponent:t.exponent}}a=!0}}function t(t){e();var n,a,o;for(o=0;o<t.length;o++)if(n=bigStringInt(t[o]).toString(16),a=i[n])return angular.extend({fingerprint:t[o]},a);return!1}var n=[{modulus:"c150023e2f70db7985ded064759cfecf0af328e69a41daf4d6f01b538135a6f91f8f8b2a0ec9ba9720ce352efcf6c5680ffc424bd634864902de0b4bd6d49f4e580230e3ae97d95c8b19442b3c0a10d8f5633fecedd6926a7f6dab0ddb7d457f9ea81b8465fcd6fffeed114011df91c059caedaf97625f6c96ecc74725556934ef781d866b34f011fce4d835a090196e9a5f0e4449af7eb697ddb9076494ca5f81104a305b6dd27665722c46b60e5df680fb16b210607ef217652e60236c255f6a28315f4083a96791d7214bf64c1df4fd0db1944fb26a2a57031b32eee64ad15a8ba68885cde74a5bfc920f6abf59ba5c75506373e7130f9042da922179251f",exponent:"010001"}],i={},a=!1;return{prepare:e,select:t}}).service("MtpSecureRandom",["$window",function(e){return $(e).on("click keydown",rng_seed_time),new SecureRandom}]).factory("MtpTimeManager",["Storage",function(e){function t(){var e=tsNow(),t=Math.floor(e/1e3)+a,n=e%1e3,o=nextRandomInt(65535),r=[t,n<<21|o<<3|4];return(i[0]>r[0]||i[0]==r[0]&&i[1]>=r[1])&&(r=[i[0],i[1]+4]),i=r,longFromInts(r[0],r[1])}function n(t,n){var o=t-Math.floor((n||tsNow())/1e3),r=Math.abs(a-o)>10;return e.set({server_time_offset:o}),i=[0,0],a=o,console.log(dT(),"Apply server time",t,n,o,r),r}var i=[0,0],a=0;return e.get("server_time_offset").then(function(e){e&&(a=e)}),{generateID:t,applyServerTime:n}}]).factory("MtpAuthorizer",["MtpDcConfigurator","MtpRsaKeysManager","MtpSecureRandom","MtpTimeManager","CryptoWorker","$http","$q","$timeout",function(e,t,n,i,a,o,r,s){function l(t,n){var a=n.byteLength,s=new Int32Array(n),l=new TLSerialization;l.storeLongP(0,0,"auth_key_id"),l.storeLong(i.generateID(),"msg_id"),l.storeInt(a,"request_length");var c=l.getBuffer(),d=new Int32Array(c),u=c.byteLength,p=new ArrayBuffer(u+a),m=new Int32Array(p);m.set(d),m.set(s,d.length);var h,f=g?p:m;try{h=o.post(e.chooseServer(t),f,{responseType:"arraybuffer",transformRequest:null})}catch(_){h=r.reject({code:406,type:"NETWORK_BAD_RESPONSE",originalError:_})}return h.then(function(e){if(!e.data||!e.data.byteLength)return r.reject({code:406,type:"NETWORK_BAD_RESPONSE"});try{{var t=new TLDeserialization(e.data,{mtproto:!0});t.fetchLong("auth_key_id"),t.fetchLong("msg_id"),t.fetchInt("msg_len")}}catch(n){return r.reject({code:406,type:"NETWORK_BAD_RESPONSE",originalError:n})}return t},function(e){return e.message||e.type||(e={code:406,type:"NETWORK_BAD_REQUEST",originalError:e}),r.reject(e)})}function c(e){var n=e.deferred,i=new TLSerialization({mtproto:!0});i.storeMethod("req_pq",{nonce:e.nonce}),console.log(dT(),"Send req_pq",bytesToHex(e.nonce)),l(e.dcID,i.getBuffer()).then(function(i){var o=i.fetchObject("ResPQ");if("resPQ"!=o._)throw new Error("resPQ response invalid: "+o._);if(!bytesCmp(e.nonce,o.nonce))throw new Error("resPQ nonce mismatch");if(e.serverNonce=o.server_nonce,e.pq=o.pq,e.fingerprints=o.server_public_key_fingerprints,console.log(dT(),"Got ResPQ",bytesToHex(e.serverNonce),bytesToHex(e.pq),e.fingerprints),e.publicKey=t.select(e.fingerprints),!e.publicKey)throw new Error("No public key found");console.log(dT(),"PQ factorization start",e.pq),a.factorize(e.pq).then(function(t){e.p=t[0],e.q=t[1],console.log(dT(),"PQ factorization done",t[2]),d(e)},function(e){console.log("Worker error",e,e.stack),n.reject(e)})},function(e){console.log(dT(),"req_pq error",e.message),n.reject(e)}),s(function(){t.prepare()})}function d(e){var t=e.deferred;e.newNonce=new Array(32),n.nextBytes(e.newNonce);var i=new TLSerialization({mtproto:!0});i.storeObject({_:"p_q_inner_data",pq:e.pq,p:e.p,q:e.q,nonce:e.nonce,server_nonce:e.serverNonce,new_nonce:e.newNonce},"P_Q_inner_data","DECRYPTED_DATA");var a=sha1BytesSync(i.getBuffer()).concat(i.getBytes()),o=new TLSerialization({mtproto:!0});o.storeMethod("req_DH_params",{nonce:e.nonce,server_nonce:e.serverNonce,p:e.p,q:e.q,public_key_fingerprint:e.publicKey.fingerprint,encrypted_data:rsaEncrypt(e.publicKey,a)}),console.log(dT(),"Send req_DH_params"),l(e.dcID,o.getBuffer()).then(function(n){var i=n.fetchObject("Server_DH_Params","RESPONSE");if("server_DH_params_fail"!=i._&&"server_DH_params_ok"!=i._)return t.reject(new Error("Server_DH_Params response invalid: "+i._)),!1;if(!bytesCmp(e.nonce,i.nonce))return t.reject(new Error("Server_DH_Params nonce mismatch")),!1;if(!bytesCmp(e.serverNonce,i.server_nonce))return t.reject(new Error("Server_DH_Params server_nonce mismatch")),!1;if("server_DH_params_fail"==i._){var a=sha1BytesSync(e.newNonce).slice(-16);return bytesCmp(a,i.new_nonce_hash)?(t.reject(new Error("server_DH_params_fail")),!1):(t.reject(new Error("server_DH_params_fail new_nonce_hash mismatch")),!1)}try{u(e,i.encrypted_answer)}catch(o){return t.reject(o),!1}p(e)},function(e){t.reject(e)})}function u(e,t){e.localTime=tsNow(),e.tmpAesKey=sha1BytesSync(e.newNonce.concat(e.serverNonce)).concat(sha1BytesSync(e.serverNonce.concat(e.newNonce)).slice(0,12)),e.tmpAesIv=sha1BytesSync(e.serverNonce.concat(e.newNonce)).slice(12).concat(sha1BytesSync([].concat(e.newNonce,e.newNonce)),e.newNonce.slice(0,4));var n=aesDecryptSync(t,e.tmpAesKey,e.tmpAesIv),a=n.slice(0,20),o=n.slice(20),r=bytesToArrayBuffer(o),s=new TLDeserialization(r,{mtproto:!0}),l=s.fetchObject("Server_DH_inner_data");if("server_DH_inner_data"!=l._)throw new Error("server_DH_inner_data response invalid: "+constructor);if(!bytesCmp(e.nonce,l.nonce))throw new Error("server_DH_inner_data nonce mismatch");if(!bytesCmp(e.serverNonce,l.server_nonce))throw new Error("server_DH_inner_data serverNonce mismatch");console.log(dT(),"Done decrypting answer"),e.g=l.g,e.dhPrime=l.dh_prime,e.gA=l.g_a,e.serverTime=l.server_time,e.retry=0;var c=s.getOffset();if(!bytesCmp(a,sha1BytesSync(o.slice(0,c))))throw new Error("server_DH_inner_data SHA1-hash mismatch");i.applyServerTime(e.serverTime,e.localTime)}function p(e){var t=e.deferred,i=bytesFromHex(e.g.toString(16));e.b=new Array(256),n.nextBytes(e.b),a.modPow(i,e.b,e.dhPrime).then(function(n){var i=new TLSerialization({mtproto:!0});i.storeObject({_:"client_DH_inner_data",nonce:e.nonce,server_nonce:e.serverNonce,retry_id:[0,e.retry++],g_b:n},"Client_DH_Inner_Data");var o=sha1BytesSync(i.getBuffer()).concat(i.getBytes()),r=aesEncryptSync(o,e.tmpAesKey,e.tmpAesIv),s=new TLSerialization({mtproto:!0});s.storeMethod("set_client_DH_params",{nonce:e.nonce,server_nonce:e.serverNonce,encrypted_data:r}),console.log(dT(),"Send set_client_DH_params"),l(e.dcID,s.getBuffer()).then(function(n){var i=n.fetchObject("Set_client_DH_params_answer");return"dh_gen_ok"!=i._&&"dh_gen_retry"!=i._&&"dh_gen_fail"!=i._?(t.reject(new Error("Set_client_DH_params_answer response invalid: "+i._)),!1):bytesCmp(e.nonce,i.nonce)?bytesCmp(e.serverNonce,i.server_nonce)?void a.modPow(e.gA,e.b,e.dhPrime).then(function(n){var a=sha1BytesSync(n),o=a.slice(0,8),r=a.slice(-8);switch(console.log(dT(),"Got Set_client_DH_params_answer",i._),i._){case"dh_gen_ok":var s=sha1BytesSync(e.newNonce.concat([1],o)).slice(-16);if(!bytesCmp(s,i.new_nonce_hash1))return t.reject(new Error("Set_client_DH_params_answer new_nonce_hash1 mismatch")),!1;var l=bytesXor(e.newNonce.slice(0,8),e.serverNonce.slice(0,8));e.authKeyID=r,e.authKey=n,e.serverSalt=l,t.resolve(e);break;case"dh_gen_retry":var c=sha1BytesSync(e.newNonce.concat([2],o)).slice(-16);return bytesCmp(c,i.new_nonce_hash2)?p(e):(t.reject(new Error("Set_client_DH_params_answer new_nonce_hash2 mismatch")),!1);case"dh_gen_fail":var d=sha1BytesSync(e.newNonce.concat([3],o)).slice(-16);return bytesCmp(d,i.new_nonce_hash3)?(t.reject(new Error("Set_client_DH_params_answer fail")),!1):(t.reject(new Error("Set_client_DH_params_answer new_nonce_hash3 mismatch")),!1)}},function(e){t.reject(e)}):(t.reject(new Error("Set_client_DH_params_answer server_nonce mismatch")),!1):(t.reject(new Error("Set_client_DH_params_answer nonce mismatch")),!1)},function(e){t.reject(e)})},function(e){t.reject(e)})}function m(t){if(void 0!==_[t])return _[t];for(var n=[],i=0;16>i;i++)n.push(nextRandomInt(255));if(!e.chooseServer(t))return r.reject(new Error("No server found for dc "+t));var a={dcID:t,nonce:n,deferred:r.defer()};return s(function(){c(a)}),_[t]=a.deferred.promise,_[t]["catch"](function(){delete _[t]}),_[t]}var h=navigator.userAgent.match(/Chrome\/(\d+(\.\d+)?)/),f=h&&parseFloat(h[1])||!1,g=!("ArrayBufferView"in window)&&(!f||30>f);delete o.defaults.headers.post["Content-Type"],delete o.defaults.headers.common.Accept;var _={};return{auth:m}}]).factory("MtpNetworkerFactory",["MtpDcConfigurator","MtpTimeManager","MtpSecureRandom","Storage","CryptoWorker","AppRuntimeManager","$http","$q","$timeout","$interval","$rootScope",function(e,t,n,i,a,o,r,s,l,c,d){function u(e,t,n,i){i=i||{},this.dcID=e,this.iii=f++,this.authKey=t,this.authKeyUint8=convertToUint8Array(t),this.authKeyBuffer=convertToArrayBuffer(t),this.authKeyID=sha1BytesSync(t).slice(-8),this.serverSalt=n,this.upload=i.fileUpload||i.fileDownload||!1,this.updateSession(),this.currentRequests=0,this.checkConnectionPeriod=0,this.sentMessages={},this.serverMessages=[],this.clientMessages=[],this.pendingMessages={},this.pendingAcks=[],this.pendingResends=[],this.connectionInited=!1,this.pendingTimeouts=[],this.longPollInt=c(this.checkLongPoll.bind(this),1e4),this.checkLongPoll(),g||(g=!0,d.offline=!0,d.offlineConnecting=!0),Config.Navigator.mobile&&this.setupMobileSleep()}function p(){_&&(_=!1,h({_:"new_session_created"}))}function m(){_=!0}var h,f=0,g=!1,_=!1,y=navigator.userAgent.match(/Chrome\/(\d+(\.\d+)?)/),v=y&&parseFloat(y[1])||!1,b=!("ArrayBufferView"in window)&&(!v||30>v);return delete r.defaults.headers.post["Content-Type"],delete r.defaults.headers.common.Accept,d.retryOnline=function(){$(document.body).trigger("online")},u.prototype.updateSession=function(){this.seqNo=0,this.sessionID=new Array(8),n.nextBytes(this.sessionID)},u.prototype.setupMobileSleep=function(){var e=this;d.$watch("idle.isIDLE",function(t){t?e.sleepAfter=tsNow()+3e4:(delete e.sleepAfter,e.checkLongPoll())}),d.$on("push_received",function(){e.sleepAfter&&(e.sleepAfter=tsNow()+3e4,e.checkLongPoll())})},u.prototype.updateSentMessage=function(e){var n=this.sentMessages[e];if(!n)return!1;var i=this;if(n.container){var a=[];angular.forEach(n.inner,function(e){var t=i.updateSentMessage(e);t&&a.push(t.msg_id)}),n.inner=a}return n.msg_id=t.generateID(),n.seq_no=this.generateSeqNo(n.notContentRelated||n.container),this.sentMessages[n.msg_id]=n,delete i.sentMessages[e],n},u.prototype.generateSeqNo=function(e){var t=2*this.seqNo;return e||(t++,this.seqNo++),t},u.prototype.wrapMtpCall=function(e,n,i){var a=new TLSerialization({mtproto:!0});a.storeMethod(e,n);var o=t.generateID(),r=this.generateSeqNo(),s={msg_id:o,seq_no:r,body:a.getBytes()};return Config.Modes.debug&&console.log(dT(),"MT call",e,n,o,r),this.pushMessage(s,i)},u.prototype.wrapMtpMessage=function(e,n){n=n||{};var i=new TLSerialization({mtproto:!0});i.storeObject(e,"Object");var a=t.generateID(),o=this.generateSeqNo(n.notContentRelated),r={msg_id:a,seq_no:o,body:i.getBytes()};return Config.Modes.debug&&console.log(dT(),"MT message",e,a,o),this.pushMessage(r,n)},u.prototype.wrapApiCall=function(e,n,i){var a=new TLSerialization(i);this.connectionInited||(a.storeInt(3667594509,"invokeWithLayer"),a.storeInt(Config.Schema.API.layer,"layer"),a.storeInt(1769565673,"initConnection"),a.storeInt(Config.App.id,"api_id"),a.storeString(navigator.userAgent||"Unknown UserAgent","device_model"),a.storeString(navigator.platform||"Unknown Platform","system_version"),a.storeString(Config.App.version,"app_version"),a.storeString(navigator.language||"en","lang_code")),i.afterMessageID&&(a.storeInt(3416209197,"invokeAfterMsg"),a.storeLong(i.afterMessageID,"msg_id")),i.resultType=a.storeMethod(e,n);var o=t.generateID(),r=this.generateSeqNo(),s={msg_id:o,seq_no:r,body:a.getBytes(!0),isAPI:!0};return Config.Modes.debug?console.log(dT(),"Api call",e,n,o,r,i):console.log(dT(),"Api call",e),this.pushMessage(s,i)},u.prototype.checkLongPoll=function(){var e=this.cleanupSent();if(this.longPollPending&&tsNow()<this.longPollPending||this.offline||_)return!1;var t=this;i.get("dc").then(function(n){e&&(n!=t.dcID||t.upload||t.sleepAfter&&tsNow()>t.sleepAfter)||t.sendLongPoll()})},u.prototype.sendLongPoll=function(){var e=25e3,t=this;this.longPollPending=tsNow()+e,this.wrapMtpCall("http_wait",{max_delay:0,wait_after:0,max_wait:e},{noResponse:!0,longPoll:!0}).then(function(){delete t.longPollPending,setZeroTimeout(t.checkLongPoll.bind(t))},function(){console.log("Long-poll failed")})},u.prototype.pushMessage=function(e,t){var n=s.defer();return this.sentMessages[e.msg_id]=angular.extend(e,t||{},{deferred:n}),this.pendingMessages[e.msg_id]=0,t&&t.noShedule||this.sheduleRequest(),angular.isObject(t)&&(t.messageID=e.msg_id),n.promise},u.prototype.pushResend=function(e,t){var n=t?tsNow()+t:0,i=this.sentMessages[e];if(i.container)for(var a=0;a<i.inner.length;a++)this.pendingMessages[i.inner[a]]=n;else this.pendingMessages[e]=n;this.sheduleRequest(t)},u.prototype.getMsgKeyIv=function(e,t){var n=this.authKeyUint8,i=t?0:8,o=new Uint8Array(48),r=new Uint8Array(48),l=new Uint8Array(48),c=new Uint8Array(48),d={};return o.set(e,0),o.set(n.subarray(i,i+32),16),d.sha1a=a.sha1Hash(o),r.set(n.subarray(i+32,i+48),0),r.set(e,16),r.set(n.subarray(i+48,i+64),32),d.sha1b=a.sha1Hash(r),l.set(n.subarray(i+64,i+96),0),l.set(e,32),d.sha1c=a.sha1Hash(l),c.set(e,0),c.set(n.subarray(i+96,i+128),16),d.sha1d=a.sha1Hash(c),s.all(d).then(function(e){var t=new Uint8Array(32),n=new Uint8Array(32);return sha1a=new Uint8Array(e.sha1a),sha1b=new Uint8Array(e.sha1b),sha1c=new Uint8Array(e.sha1c),sha1d=new Uint8Array(e.sha1d),t.set(sha1a.subarray(0,8)),t.set(sha1b.subarray(8,20),8),t.set(sha1c.subarray(4,16),20),n.set(sha1a.subarray(8,20)),n.set(sha1b.subarray(0,8),12),n.set(sha1c.subarray(16,20),20),n.set(sha1d.subarray(0,8),24),[t,n]})},u.prototype.checkConnection=function(e){d.offlineConnecting=!0,console.log(dT(),"Check connection",e),l.cancel(this.checkConnectionPromise);var n=new TLSerialization({mtproto:!0}),i=[nextRandomInt(4294967295),nextRandomInt(4294967295)];n.storeMethod("ping",{ping_id:i});var a={msg_id:t.generateID(),seq_no:this.generateSeqNo(!0),body:n.getBytes()},o=this;this.sendEncryptedRequest(a,{timeout:15e3}).then(function(){delete d.offlineConnecting,o.toggleOffline(!1)},function(){console.log(dT(),"Delay ",1e3*o.checkConnectionPeriod),o.checkConnectionPromise=l(o.checkConnection.bind(o),parseInt(1e3*o.checkConnectionPeriod)),o.checkConnectionPeriod=Math.min(60,1.5*o.checkConnectionPeriod),l(function(){delete d.offlineConnecting},1e3)})},u.prototype.toggleOffline=function(e){return void 0!==this.offline&&this.offline==e?!1:(this.offline=e,d.offline=e,d.offlineConnecting=!1,void(this.offline?(l.cancel(this.nextReqPromise),delete this.nextReq,this.checkConnectionPeriod<1.5&&(this.checkConnectionPeriod=0),this.checkConnectionPromise=l(this.checkConnection.bind(this),parseInt(1e3*this.checkConnectionPeriod)),this.checkConnectionPeriod=Math.min(30,1.5*(1+this.checkConnectionPeriod)),this.onOnlineCb=this.checkConnection.bind(this),$(document.body).on("online focus",this.onOnlineCb)):(delete this.longPollPending,this.checkLongPoll(),this.sheduleRequest(),this.onOnlineCb&&$(document.body).off("online focus",this.onOnlineCb),l.cancel(this.checkConnectionPromise))))},u.prototype.performSheduledRequest=function(){if(this.offline||_)return console.log(dT(),"Cancel sheduled"),!1;if(delete this.nextReq,this.pendingAcks.length){for(var e=[],n=0;n<this.pendingAcks.length;n++)e.push(this.pendingAcks[n]);this.wrapMtpMessage({_:"msgs_ack",msg_ids:e},{notContentRelated:!0,noShedule:!0})}if(this.pendingResends.length){for(var i=[],a={noShedule:!0,notContentRelated:!0},n=0;n<this.pendingResends.length;n++)i.push(this.pendingResends[n]);this.wrapMtpMessage({_:"msg_resend_req",msg_ids:i},a),this.lastResendReq={req_msg_id:a.messageID,resend_msg_ids:i}}var o,r=[],s=0,l=tsNow(),c=!1,d=!1,u=!1,p=0,m=this;if(angular.forEach(this.pendingMessages,function(e,t){if(!e||e>=l){if(o=m.sentMessages[t]){var n=(o.body.byteLength||o.body.length)+32;if(!o.notContentRelated&&u)return;if(!o.notContentRelated&&s&&s+n>655360)return void(u=!0);if(o.singleInRequest&&(p++,p>1))return;r.push(o),s+=n,o.isAPI?c=!0:o.longPoll&&(d=!0)}delete m.pendingMessages[t]}}),c&&!d){var h=new TLSerialization({mtproto:!0});h.storeMethod("http_wait",{max_delay:0,wait_after:0,max_wait:1e3}),r.push({msg_id:t.generateID(),seq_no:this.generateSeqNo(),body:h.getBytes()})}if(r.length){var f=[];if(r.length>1){var g=new TLSerialization({mtproto:!0,startMaxLength:s+64});g.storeInt(1945237724,"CONTAINER[id]"),g.storeInt(r.length,"CONTAINER[count]");for(var y=[],n=0;n<r.length;n++)g.storeLong(r[n].msg_id,"CONTAINER["+n+"][msg_id]"),y.push(r[n].msg_id),g.storeInt(r[n].seq_no,"CONTAINER["+n+"][seq_no]"),g.storeInt(r[n].body.length,"CONTAINER["+n+"][bytes]"),g.storeRawBytes(r[n].body,"CONTAINER["+n+"][body]"),r[n].noResponse&&f.push(r[n].msg_id);var v={msg_id:t.generateID(),seq_no:this.generateSeqNo(!0),container:!0,inner:y};o=angular.extend({body:g.getBytes(!0)},v),this.sentMessages[o.msg_id]=v,Config.Modes.debug&&console.log(dT(),"Container",y,o.msg_id,o.seq_no)}else o.noResponse&&f.push(o.msg_id),this.sentMessages[o.msg_id]=o;this.pendingAcks=[];var m=this;this.sendEncryptedRequest(o).then(function(e){m.toggleOffline(!1),m.parseResponse(e.data).then(function(e){Config.Modes.debug&&console.log(dT(),"Server response",m.dcID,e),m.processMessage(e.response,e.messageID,e.sessionID),angular.forEach(f,function(e){if(m.sentMessages[e]){var t=m.sentMessages[e].deferred;delete m.sentMessages[e],t.resolve()}}),m.checkLongPoll(),this.checkConnectionPeriod=Math.max(1.1,Math.sqrt(this.checkConnectionPeriod))})},function(e){console.log("Encrypted request failed",e),o.container?(angular.forEach(o.inner,function(e){m.pendingMessages[e]=0}),delete m.sentMessages[o.msg_id]):m.pendingMessages[o.msg_id]=0,angular.forEach(f,function(e){if(m.sentMessages[e]){var t=m.sentMessages[e].deferred;delete m.sentMessages[e],delete m.pendingMessages[e],t.reject()}}),m.toggleOffline(!0)}),(u||p>1)&&this.sheduleRequest()}},u.prototype.getEncryptedMessage=function(e){var t=this;return a.sha1Hash(e).then(function(n){var i=new Uint8Array(n).subarray(4,20);return t.getMsgKeyIv(i,!0).then(function(t){return a.aesEncrypt(e,t[0],t[1]).then(function(e){return{bytes:e,msgKey:i}})})})},u.prototype.getDecryptedMessage=function(e,t){return this.getMsgKeyIv(e,!1).then(function(e){return a.aesDecrypt(t,e[0],e[1])})},u.prototype.sendEncryptedRequest=function(t,n){var a=this;n=n||{};var l=new TLSerialization({startMaxLength:t.body.length+64});return l.storeIntBytes(this.serverSalt,64,"salt"),l.storeIntBytes(this.sessionID,64,"session_id"),l.storeLong(t.msg_id,"message_id"),l.storeInt(t.seq_no,"seq_no"),l.storeInt(t.body.length,"message_data_length"),l.storeRawBytes(t.body,"message_data"),this.getEncryptedMessage(l.getBuffer()).then(function(t){var l=new TLSerialization({startMaxLength:t.bytes.byteLength+256});l.storeIntBytes(a.authKeyID,64,"auth_key_id"),l.storeIntBytes(t.msgKey,128,"msg_key"),l.storeRawBytes(t.bytes,"encrypted_data");var c,d=b?l.getBuffer():l.getArray();try{n=angular.extend(n||{},{responseType:"arraybuffer",transformRequest:null}),c=r.post(e.chooseServer(a.dcID,a.upload),d,n)}catch(u){c=s.reject(u)}return c.then(function(e){return e.data&&e.data.byteLength?e:s.reject({code:406,type:"NETWORK_BAD_RESPONSE"})},function(e){return 404==e.status&&-1!=(e.data||"").indexOf("nginx/0.3.33")&&i.remove("dc"+a.dcID+"_server_salt","dc"+a.dcID+"_auth_key").then(function(){o.reload()}),e.message||e.type||(e={code:406,type:"NETWORK_BAD_REQUEST"}),s.reject(e)})})},u.prototype.parseResponse=function(e){var t=this,n=new TLDeserialization(e),i=n.fetchIntBytes(64,!1,"auth_key_id");if(!bytesCmp(i,this.authKeyID))throw new Error("Invalid server auth_key_id: "+bytesToHex(i));var o=n.fetchIntBytes(128,!0,"msg_key"),r=n.fetchRawBytes(e.byteLength-n.getOffset(),!0,"encrypted_data");return this.getDecryptedMessage(o,r).then(function(e){var n=new TLDeserialization(e,{mtproto:!0}),i=(n.fetchIntBytes(64,!1,"salt"),n.fetchIntBytes(64,!1,"session_id")),r=n.fetchLong("message_id"),s=n.fetchInt("seq_no"),l=n.fetchRawBytes(!1,!0,"message_data"),c=convertToUint8Array(e).subarray(0,n.getOffset());return a.sha1Hash(c).then(function(e){if(!bytesCmp(o,bytesFromArrayBuffer(e).slice(-16)))throw console.warn(o,bytesFromArrayBuffer(e)),new Error("server msgKey mismatch");var n=bytesToArrayBuffer(l),a={mtproto:!0,override:{mt_message:function(e,t){e.msg_id=this.fetchLong(t+"[msg_id]"),e.seqno=this.fetchInt(t+"[seqno]"),e.bytes=this.fetchInt(t+"[bytes]");var n=this.getOffset();try{e.body=this.fetchObject("Object",t+"[body]")}catch(i){console.error(dT(),"parse error",i.message,i.stack),e.body={_:"parse_error",error:i} |
|
|
}this.offset!=n+e.bytes&&(console.warn(dT(),"set offset",this.offset,n,e.bytes),this.offset=n+e.bytes)},mt_rpc_result:function(e,n){e.req_msg_id=this.fetchLong(n+"[req_msg_id]");var i=t.sentMessages[e.req_msg_id],a=i&&i.resultType||"Object";e.result=this.fetchObject(a,n+"[result]")}}},c=new TLDeserialization(n,a),d=c.fetchObject("","INPUT");return{response:d,messageID:r,sessionID:i,seqNo:s}})})},u.prototype.applyServerSalt=function(e){var t=longToBytes(e),n={};return n["dc"+this.dcID+"_server_salt"]=bytesToHex(t),i.set(n),this.serverSalt=t,!0},u.prototype.sheduleRequest=function(e){this.offline&&this.checkConnection("forced shedule");var t=tsNow()+e;return e&&this.nextReq&&this.nextReq<=t?!1:(l.cancel(this.nextReqPromise),e>0?this.nextReqPromise=l(this.performSheduledRequest.bind(this),e||0):setZeroTimeout(this.performSheduledRequest.bind(this)),void(this.nextReq=t))},u.prototype.ackMessage=function(e){this.pendingAcks.push(e),this.sheduleRequest(3e4)},u.prototype.reqResendMessage=function(e){console.log(dT(),"Req resend",e),this.pendingResends.push(e),this.sheduleRequest(100)},u.prototype.cleanupSent=function(){var e=this,t=!1;return angular.forEach(this.sentMessages,function(n,i){if(n.notContentRelated&&void 0===e.pendingMessages[i])delete e.sentMessages[i];else if(n.container){for(var a=0;a<n.inner.length;a++)if(void 0!==e.sentMessages[n.inner[a]])return void(t=!0);delete e.sentMessages[i]}else t=!0}),!t},u.prototype.processMessageAck=function(e){var t=this.sentMessages[e];return t&&!t.acked?(delete t.body,t.acked=!0,!0):!1},u.prototype.processError=function(e){var t=(e.error_message||"").match(/^([A-Z_0-9]+\b)(: (.+))?/)||[];return e.error_code=uintToInt(e.error_code),{code:!e.error_code||e.error_code<=0?500:e.error_code,type:t[1]||"UNKNOWN",description:t[3]||"CODE#"+e.error_code+" "+e.error_message,originalError:e}},u.prototype.processMessage=function(e,n,a){switch(e._){case"msg_container":for(var o=e.messages.length,r=0;o>r;r++)this.processMessage(e.messages[r],n,a);break;case"bad_server_salt":console.log(dT(),"Bad server salt",e);var s=this.sentMessages[e.bad_msg_id];if(!s||s.seq_no!=e.bad_msg_seqno)throw console.log(e.bad_msg_id,e.bad_msg_seqno),new Error("Bad server salt for invalid message");this.applyServerSalt(e.new_server_salt),this.pushResend(e.bad_msg_id),this.ackMessage(n);break;case"bad_msg_notification":console.log(dT(),"Bad msg notification",e);var s=this.sentMessages[e.bad_msg_id];if(!s||s.seq_no!=e.bad_msg_seqno)throw console.log(e.bad_msg_id,e.bad_msg_seqno),new Error("Bad msg notification for invalid message");if(16==e.error_code||17==e.error_code){t.applyServerTime(bigStringInt(n).shiftRight(32).toString(10))&&(console.log(dT(),"Update session"),this.updateSession());var l=this.updateSentMessage(e.bad_msg_id);this.pushResend(l.msg_id),this.ackMessage(n)}break;case"message":this.serverMessages.push(e.msg_id),this.processMessage(e.body,e.msg_id,a);break;case"new_session_created":this.ackMessage(n),this.processMessageAck(e.first_msg_id),this.applyServerSalt(e.server_salt);var c=this;i.get("dc").then(function(t){t==c.dcID&&!c.upload&&h&&h(e)});break;case"msgs_ack":for(var r=0;r<e.msg_ids.length;r++)this.processMessageAck(e.msg_ids[r]);break;case"msg_detailed_info":if(!this.sentMessages[e.msg_id]){this.ackMessage(e.answer_msg_id);break}case"msg_new_detailed_info":this.reqResendMessage(e.answer_msg_id);break;case"msgs_state_info":if(this.ackMessage(e.answer_msg_id),this.lastResendReq&&this.lastResendReq.req_msg_id==e.req_msg_id&&this.pendingResends.length){var r,d,u;for(r=0;r<this.lastResendReq.resend_msg_ids.length;r++)d=this.lastResendReq.resend_msg_ids[r],u=this.pendingResends.indexOf(d),-1!=u&&this.pendingResends.splice(u,1)}break;case"rpc_result":this.ackMessage(n);var p=e.req_msg_id,s=this.sentMessages[p];if(this.processMessageAck(p),s){var m=s.deferred;if("rpc_error"==e.result._){var f=this.processError(e.result);console.log(dT(),"Rpc error",f),m&&m.reject(f)}else{if(m){if(Config.Modes.debug)console.log(dT(),"Rpc response",e.result);else{var g=e.result._;g||(g=e.result.length>5?"[.."+e.result.length+"..]":e.result),console.log(dT(),"Rpc response",g)}s.deferred.resolve(e.result)}s.isAPI&&(this.connectionInited=!0)}delete this.sentMessages[p]}break;default:this.ackMessage(n),h&&h(e)}},{getNetworker:function(e,t,n,i){return new u(e,t,n,i)},setUpdatesProcessor:function(e){h=e},stopAll:m,startAll:p}}]),angular.module("izhukov.mtproto.wrapper",["izhukov.utils","izhukov.mtproto"]).factory("MtpApiManager",["Storage","MtpAuthorizer","MtpNetworkerFactory","MtpSingleInstanceService","ErrorService","qSync","$q",function(e,t,n,i,a,o,r){function s(t,n){e.set({dc:t,user_auth:angular.extend({dcID:t},n)}),g=t}function l(){for(var t=[],n=1;5>=n;n++)t.push("dc"+n+"_auth_key");return e.get.apply(e,t).then(function(n){for(var i=[],a=0;a<n.length;a++)n[a]&&i.push(d("auth.logOut",{},{dcID:a+1}));return r.all(i).then(function(){e.remove("dc","user_auth"),g=!1},function(n){e.remove.apply(t),e.remove("dc","user_auth"),g=!1,n.handled=!0})})}function c(i,a){a=a||{};var s=a.fileUpload||a.fileDownload?h:m;if(!i)throw new Exception("get Networker without dcID");if(void 0!==s[i])return o.when(s[i]);var l="dc"+i+"_auth_key",c="dc"+i+"_server_salt";return e.get(l,c).then(function(o){if(void 0!==s[i])return s[i];var d=o[0],u=o[1];if(d&&512==d.length){var p=bytesFromHex(d),m=bytesFromHex(u);return s[i]=n.getNetworker(i,p,m,a)}return a.createNetworker?t.auth(i).then(function(t){var o={};return o[l]=bytesToHex(t.authKey),o[c]=bytesToHex(t.serverSalt),e.set(o),s[i]=n.getNetworker(i,t.authKey,t.serverSalt,a)},function(e){return console.log("Get networker error",e,e.stack),r.reject(e)}):r.reject({type:"AUTH_KEY_EMPTY",code:401})})}function d(t,n,i){i=i||{};var o,s,l=r.defer(),u=function(e){e?angular.isObject(e)||(e={message:e}):e={type:"ERROR_EMPTY"},l.reject(e),i.noErrorBox||(e.input=t,e.stack=e.originalError&&e.originalError.stack||e.stack||(new Error).stack,setTimeout(function(){e.handled||(a.show({error:e}),e.handled=!0)},100))},p=(new Error).stack;if(!p)try{window.unexistingFunction()}catch(m){p=m.stack||""}var h=function(a){return(s=a).wrapApiCall(t,n,i).then(function(e){l.resolve(e)},function(p){if(console.error(dT(),"Error",p.code,p.type,g,o),401==p.code&&g==o)e.remove("dc","user_auth"),u(p);else if(401==p.code&&g&&o!=g){if(void 0===f[o]){var m=r.defer();d("auth.exportAuthorization",{dc_id:o},{noErrorBox:!0}).then(function(e){d("auth.importAuthorization",{id:e.id,bytes:e.bytes},{dcID:o,noErrorBox:!0}).then(function(){m.resolve()},function(e){m.reject(e)})},function(e){m.reject(e)}),f[o]=m.promise}f[o].then(function(){(s=a).wrapApiCall(t,n,i).then(function(e){l.resolve(e)},u)},u)}else if(303==p.code){var h=p.type.match(/^(PHONE_MIGRATE_|NETWORK_MIGRATE_|USER_MIGRATE_)(\d+)/)[2];h!=o&&(i.dcID?i.dcID=h:e.set({dc:g=h}),c(h,i).then(function(e){e.wrapApiCall(t,n,i).then(function(e){l.resolve(e)},u)}))}else u(p)})};return(o=i.dcID||g)?c(o,i).then(h,u):e.get("dc").then(function(e){c(o=e||2,i).then(h,u)}),l.promise}function u(){return e.get("user_auth").then(function(e){return e.id||0})}function p(){return g||!1}var m={},h={},f={},g=!1;return i.start(),e.get("dc").then(function(e){e&&(g=e)}),{getBaseDcID:p,getUserID:u,invokeApi:d,getNetworker:c,setUserAuth:s,logOut:l}}]).factory("MtpApiFileManager",["MtpApiManager","$q","FileManager","IdbFileStorage","TmpfsFileStorage","MemoryFileStorage",function(e,t,n,i,a,o){function r(e,n,i){void 0===v[e]&&(v[e]=[],b[e]=0);var a=v[e],o=t.defer();return a.push({cb:n,deferred:o,activeDelta:i}),setZeroTimeout(function(){s(e)}),o.promise}function s(e){var t=v[e],n="upload"==e?11:5;if(b[e]>=n||!t||!t.length)return!1;var i=t.shift(),a=i.activeDelta||1;b[e]+=a;w++;i.cb().then(function(t){b[e]-=a,s(e),i.deferred.resolve(t)},function(t){b[e]-=a,s(e),i.deferred.reject(t)})}function l(e){switch(e._){case"inputVideoFileLocation":return"video"+e.id+".mp4";case"inputDocumentFileLocation":return"doc"+e.id;case"inputAudioFileLocation":return"audio"+e.id}return e.volume_id||console.trace("Empty location",e),e.volume_id+"_"+e.local_id+"_"+e.secret+".jpg"}function c(e){if(!e)return!1;var t=l(e);return y[t]||!1}function d(){return a.isAvailable()?a:i.isAvailable()?i:o}function u(e,t){var n=l(e);return g[n]||(g[n]=d().saveFile(n,t).then(function(e){return y[n]=e})),g[n]}function p(i){if(!n.isAvailable())return t.reject({type:"BROWSER_BLOB_NOT_SUPPORTED"});var a=l(i),o="image/jpeg",s=g[a]||_[a];if(s)return s;var c=d();return _[a]=c.getFile(a).then(function(e){return y[a]=e},function(){var t=r(i.dc_id,function(){return e.invokeApi("upload.getFile",{location:angular.extend({},i,{_:"inputFileLocation"}),offset:0,limit:0},{dcID:i.dc_id,fileDownload:!0,createNetworker:!0})});return c.getFileWriter(a,o).then(function(e){return t.then(function(t){return n.write(e,t.bytes).then(function(){return y[a]=e.finalize()})})})})}function m(e,t){var n=d(),i=l(e);return n.getFile(i,t)}function h(i,a,o,s){if(!n.isAvailable())return t.reject({type:"BROWSER_BLOB_NOT_SUPPORTED"});s=s||{};var c=l(a),u=s.toFileEntry||null,p=g[c]||_[c],m=d();if(p)return u?p.then(function(e){return n.copy(e,u)}):p;var h,f=t.defer(),v=!1,b=!1,w=s.mime||"image/jpeg",$=function(e){f.reject(e),$=angular.noop,!h||e&&"DOWNLOAD_CANCELED"==e.type||h.truncate(0)};return m.getFile(c,o).then(function(e){u?n.copy(e,u).then(function(){f.resolve()},$):f.resolve(y[c]=e)},function(){var s=u?n.getFileWriter(u):m.getFileWriter(c,w);s.then(function(s){h=s;var l,d,p=524288,m=0,g=t.when();for(s.length&&(m=s.length,s.seek(m),f.notify({done:m,total:o})),l=m;o>l;l+=p)d=t.defer(),function(l,d,m,h){return r(i,function(){return v?t.when():e.invokeApi("upload.getFile",{location:a,offset:d,limit:p},{dcID:i,fileDownload:!0,createNetworker:!0})},2).then(function(e){h.then(function(){return v?t.when():n.write(s,e.bytes).then(function(){m.resolve()},$).then(function(){l?(b=!0,u?f.resolve():f.resolve(y[c]=s.finalize())):f.notify({done:d+p,total:o})})})})}(l+p>=o,l,d,g),g=d.promise})}),f.promise.cancel=function(){v||b||(v=!0,delete _[c],$({type:"DOWNLOAD_CANCELED"}))},u||(_[c]=f.promise),f.promise}function f(n){var i=n.size,a=i>=10485760,o=!1,s=!1,l=0,c=262144,d=2;i>67108864?(c=524288,d=4):102400>i&&(c=32768,d=1);var u=Math.ceil(i/c);if(u>1500)return t.reject({type:"FILE_TOO_BIG"});var p,m=[nextRandomInt(4294967295),nextRandomInt(4294967295)],h=t.defer(),f=function(e){h.reject(e),o=!0,f=angular.noop},g=0,_={_:a?"inputFileBig":"inputFile",id:m,parts:u,name:n.name,md5_checksum:""};for(p=0;i>p;p+=c)!function(p,g){r("upload",function(){var r=t.defer(),d=new FileReader,y=n.slice(p,p+c);return d.onloadend=function(t){return o?void r.reject():void(t.target.readyState==FileReader.DONE&&e.invokeApi(a?"upload.saveBigFilePart":"upload.saveFilePart",{file_id:m,file_part:g,file_total_parts:u,bytes:t.target.result},{startMaxLength:c+256,fileUpload:!0,singleInRequest:!0}).then(function(){l++,r.resolve(),l>=u?(h.resolve(_),s=!0):(console.log(dT(),"Progress",l*c/i),h.notify({done:l*c,total:i}))},f))},d.readAsArrayBuffer(y),r.promise},d)}(p,g++);return h.promise.cancel=function(){console.log("cancel upload",o,s),o||s||(o=!0,f({type:"UPLOAD_CANCELED"}))},h.promise}var g={},_={},y={},v={},b={},w=0;return{getCachedFile:c,getDownloadedFile:m,downloadFile:h,downloadSmallFile:p,saveSmallFile:u,uploadFile:f}}]).service("MtpSingleInstanceService",["_","$rootScope","$interval","Storage","AppRuntimeManager","IdleManager","ErrorService","MtpNetworkerFactory",function(e,t,n,i,a,o,r,s){function l(){if(!p&&!Config.Navigator.mobile&&!Config.Modes.packed){p=!0,o.start(),h=tsNow(),t.$watch("idle.isIDLE",d),n(d,5e3),d();try{$($window).on("beforeunload",c)}catch(e){}}}function c(){i.remove(m?"xt_instance":"xt_idle_instance")}function d(){var n=tsNow(),a=t.idle&&t.idle.isIDLE,o={id:u,idle:a,time:n};i.get("xt_instance","xt_idle_instance").then(function(t){var l=t[0],c=t[1];!l||l.time<n-6e4||l.id==u||l.idle||!a?(c&&(c.id==u?i.remove("xt_idle_instance"):c.time>n-1e4&&n>f&&(r.alert(e("error_modal_warning_title_raw"),e("error_modal_multiple_open_tabs_raw")),f+=tsNow()+6e4)),i.set({xt_instance:o}),m||s.startAll(),m=!0):(i.set({xt_idle_instance:o}),m&&s.stopAll(),m=!1)})}var u=nextRandomInt(4294967295),p=!1,m=!1,h=tsNow(),f=0;return{start:l}}]),angular.module("myApp",["ngRoute","ngSanitize","ngTouch","ui.bootstrap","mediaPlayer","izhukov.utils","izhukov.mtproto","izhukov.mtproto.wrapper","myApp.filters","myApp.services","myApp.templates","myApp.directives","myApp.controllers"]).config(["$locationProvider","$routeProvider","$compileProvider","StorageProvider",function(e,t,n,i){var a,o,r,s,l,c,d,u={},p={};for(o=0;o<Config.EmojiCategories.length;o++)for(d=Config.EmojiCategorySpritesheetDimens[o][1],a=0;a<Config.EmojiCategories[o].length;a++)s=Config.Emoji[Config.EmojiCategories[o][a]],r=s[1][0],l=Math.floor(a/d),c=a%d,u[":"+r+":"]=[o,l,c,":"+r+":"],p[r]=s[0];$.emojiarea.spritesheetPath="img/emojisprite_!.png",$.emojiarea.spritesheetDimens=Config.EmojiCategorySpritesheetDimens,$.emojiarea.iconSize=20,$.emojiarea.icons=u,$.emojiarea.reverseIcons=p,n.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|file|blob|filesystem|chrome-extension|app):|data:image\//),n.aHrefSanitizationWhitelist(/^\s*(https?|ftp|file|mailto|blob|filesystem|chrome-extension|app):|data:image\//),Config.Modes.test&&i.setPrefix("t_"),t.when("/",{templateUrl:templateUrl("welcome"),controller:"AppWelcomeController"}),t.when("/login",{templateUrl:templateUrl("login"),controller:"AppLoginController"}),t.when("/im",{templateUrl:templateUrl("im"),controller:"AppIMController",reloadOnSearch:!1}),t.otherwise({redirectTo:"/"})}]),angular.module("myApp.services",["myApp.i18n","izhukov.utils"]).service("AppUsersManager",["$rootScope","$modal","$modalStack","$filter","$q","MtpApiFileManager","MtpApiManager","RichTextProcessor","SearchIndexManager","ErrorService","Storage","_",function(e,t,n,i,a,o,r,s,l,c,d,u){function p(){return D?D:D=r.invokeApi("contacts.getContacts",{hash:""}).then(function(e){var t,n;P=[],f(e.users);for(var n=0;n<e.contacts.length;n++)t=e.contacts[n].user_id,P.push(t),l.indexObject(t,m(t),O);return P})}function m(e){var t=N[e];return t?(t.first_name||"")+" "+(t.last_name||"")+" "+(t.phone||"")+" "+(t.username||""):!1}function h(e){return p().then(function(t){if(angular.isString(e)&&e.length){for(var n=l.search(e,O),i=[],a=0;a<t.length;a++)n[t[a]]&&i.push(t[a]);t=i}return t})}function f(e){angular.forEach(e,g)}function g(t,n){!angular.isObject(t)||n&&angular.isObject(N[t.id])&&N[t.id].first_name||(t.phone&&(t.rPhone=i("phoneNumber")(t.phone)),t.num=Math.abs(t.id)%8+1,t.first_name?(t.rFirstName=s.wrapRichText(t.first_name,{noLinks:!0,noLinebreaks:!0}),t.rFullName=s.wrapRichText(t.first_name+" "+(t.last_name||""),{noLinks:!0,noLinebreaks:!0})):(t.rFirstName=s.wrapRichText(t.last_name,{noLinks:!0,noLinebreaks:!0})||t.rPhone||u("user_first_name_deleted"),t.rFullName=s.wrapRichText(t.last_name,{noLinks:!0,noLinebreaks:!0})||t.rPhone||u("user_name_deleted")),t.sortName=l.cleanSearchText(t.first_name+" "+(t.last_name||"")),t.sortStatus=_(t.status),void 0===N[t.id]?N[t.id]=t:safeReplaceObject(N[t.id],t),e.$broadcast("user_update",t.id),void 0!==L[t.id]&&safeReplaceObject(L[t.id],t&&t.photo&&t.photo.photo_small||{empty:!0}))}function _(e){if(e){var t=e.expires||e.was_online;if(t)return t;{tsNow(!0)+U}switch(e._){case"userStatusRecently":return tsNow(!0)+U-259200;case"userStatusLastWeek":return tsNow(!0)+U-604800;case"userStatusLastMonth":return tsNow(!0)+U-2592e3}}return 0}function y(e){return angular.isObject(e)?e:N[e]||{id:e,deleted:!0,num:1}}function v(e){return angular.isObject(N[e])}function b(e,t){var n=y(e);return 333e3==e?{placeholder:"img/placeholders/DialogListAvatarSystem@2x.png"}:(void 0===L[e]&&(L[e]=n&&n.photo&&n.photo.photo_small||{empty:!0}),{num:n.num,placeholder:"img/placeholders/"+t+"Avatar"+n.num+"@2x.png",location:L[e]})}function w(e){var t=y(e);return"u"+e+(t.access_hash?"_"+t.access_hash:"")}function $(e){var t=y(e);return"userSelf"==t._?{_:"inputUserSelf"}:{_:"inputUserForeign",user_id:e,access_hash:t.access_hash||0}}function k(){var t=tsNow(!0)+U;angular.forEach(N,function(n){n.status&&"userStatusOnline"==n.status._&&n.status.expires<t&&(n.status=n.status.wasStatus||{_:"userStatusOffline",was_online:n.status.expires},delete n.status.wasStatus,e.$broadcast("user_update",n.id))})}function C(t){var n=y(t);if(n&&n.status&&"userStatusOnline"!=n.status._&&"userStatusEmpty"!=n.status._){var i;"userStatusOffline"!=n.status._&&(delete n.status.wasStatus,i!=angular.copy(n.status)),n.status={_:"userStatusOnline",expires:tsNow(!0)+U+60,wasStatus:i},e.$broadcast("user_update",t)}}function S(e){var t=y(e);return t}function M(n,i){var a=e.$new();a.userID=n,a.override=i||{};t.open({templateUrl:templateUrl("user_modal"),controller:"UserModalController",scope:a,windowClass:"user_modal_window mobile_modal"})}function x(e,t,n){return r.invokeApi("contacts.importContacts",{contacts:[{_:"inputPhoneContact",client_id:"1",phone:e,first_name:t,last_name:n}],replace:!1}).then(function(e){f(e.users);var t=!1;return angular.forEach(e.imported,function(e){E(t=e.user_id,!0)}),t||!1})}function A(e){var t,n,i=[];for(t=0;t<e.length;t++)for(n=0;n<e[t].phones.length;n++)i.push({_:"inputPhoneContact",client_id:(t<<16|n).toString(10),phone:e[t].phones[n],first_name:e[t].first_name,last_name:e[t].last_name});return r.invokeApi("contacts.importContacts",{contacts:i,replace:!1}).then(function(e){f(e.users);var t=[];return angular.forEach(e.imported,function(e){E(e.user_id,!0),t.push(e.user_id)}),t})}function T(e){var t=[];return angular.forEach(e,function(e){t.push({_:"inputUserContact",user_id:e})}),r.invokeApi("contacts.deleteContacts",{id:t}).then(function(){angular.forEach(e,function(e){E(e,!1)})})}function E(t,n){if(angular.isArray(P)){var i=a=P.indexOf(parseInt(t)),a=-1!=i;n!=a&&(n?(P.push(t),l.indexObject(t,m(t),O)):P.splice(i,1),e.$broadcast("contacts_update",t))}}function I(){return t.open({templateUrl:templateUrl("import_contact_modal"),controller:"ImportContactModalController",windowClass:"import_contact_modal_window mobile_modal"}).result.then(function(e){return e?e:a.reject()})}var D,P,N={},L={},O=l.createIndex(),U=0;return d.get("server_time_offset").then(function(e){e&&(U=e)}),e.$on("apiUpdate",function(t,n){switch(n._){case"updateUserStatus":var i=n.user_id,a=N[i];a&&(a.status=n.status,a.sortStatus=_(n.status),e.$broadcast("user_update",i));break;case"updateUserPhoto":var i=n.user_id;N[i]&&(C(i),safeReplaceObject(N[i].photo,n.photo),void 0!==L[i]&&safeReplaceObject(L[i],n.photo&&n.photo.photo_small||{empty:!0}),e.$broadcast("user_update",i));break;case"updateContactLink":E(n.user_id,"contacts.myLinkContact"==n.my_link._)}}),setInterval(k,6e4),{getContacts:h,saveApiUsers:f,saveApiUser:g,getUser:y,getUserInput:$,forceUserOnline:C,getUserPhoto:b,getUserString:w,getUserSearchText:m,hasUser:v,importContact:x,importContacts:A,deleteContacts:T,wrapForFull:S,openUser:M,openImportContact:I}}]).service("PhonebookContactsService",["$q","$modal","$sce","FileManager",function(e,t,n,i){function a(){if(Config.Mobile&&Config.Navigator.ffos&&Config.Modes.packed)try{return navigator.mozContacts&&navigator.mozContacts.getAll}catch(e){return console.error(dT(),"phonebook n/a",e),!1}return!1}function o(){return t.open({templateUrl:templateUrl("phonebook_modal"),controller:"PhonebookModalController",windowClass:"phonebook_modal_window mobile_modal"})}function r(){try{var t=window.navigator.mozContacts.getAll({})}catch(a){return e.reject(a)}var o=e.defer(),r=[],s=0;return t.onsuccess=function(){if(this.result){var e={id:s,first_name:(this.result.givenName||[]).join(" "),last_name:(this.result.familyName||[]).join(" "),phones:[]};if(void 0!=this.result.tel)for(var t=0;t<this.result.tel.length;t++)e.phones.push(this.result.tel[t].value);if(this.result.photo&&this.result.photo[0])try{e.photo=i.getUrl(this.result.photo[0])}catch(a){}e.photo||(e.photo="img/placeholders/UserAvatar"+(Math.abs(s)%8+1)+"@2x.png"),e.photo=n.trustAsResourceUrl(e.photo),s++,r.push(e)}return!this.result||s>=1e3?void o.resolve(r):void this["continue"]()},t.onerror=function(e){console.log("phonebook error",e,e.type,e.message),o.reject(e)},o.promise}return{isAvailable:a,openPhonebookImport:o,getPhonebookContacts:r}}]).service("AppChatsManager",["$rootScope","$modal","_","MtpApiFileManager","MtpApiManager","AppUsersManager","RichTextProcessor",function(e,t,n,i,a,o,r){function s(e){angular.forEach(e,l)}function l(e){angular.isObject(e)&&(e.rTitle=r.wrapRichText(e.title,{noLinks:!0,noLinebreaks:!0})||n("chat_title_deleted"),void 0===f[e.id]?f[e.id]=e:safeReplaceObject(f[e.id],e),void 0!==g[e.id]&&safeReplaceObject(g[e.id],e&&e.photo&&e.photo.photo_small||{empty:!0}))}function c(e){return f[e]||{id:e,deleted:!0}}function d(e){return angular.isObject(f[e])}function u(e,t){var n=c(e);return void 0===g[e]&&(g[e]=n&&n.photo&&n.photo.photo_small||{empty:!0}),{placeholder:"img/placeholders/"+t+"Avatar"+(Math.abs(e)%4+1)+"@2x.png",location:g[e]}}function p(e){c(e);return"g"+e}function m(e,t){var n=angular.copy(t),i=c(e);return n.participants&&"chatParticipants"==n.participants._&&a.getUserID().then(function(e){angular.forEach(n.participants.participants,function(t){t.user=o.getUser(t.user_id),t.inviter=o.getUser(t.inviter_id),t.canKick=e!=t.user_id&&(e==n.participants.admin_id||e==t.inviter_id)})}),n.thumb={placeholder:"img/placeholders/GroupAvatar"+(Math.abs(e)%4+1)+"@2x.png",location:i&&i.photo&&i.photo.photo_small,width:120,height:120,size:0},n.peerString=p(e),n.chat=i,n}function h(n){var i=e.$new();i.chatID=n;t.open({templateUrl:templateUrl("chat_modal"),controller:"ChatModalController",scope:i,windowClass:"chat_modal_window mobile_modal"})}var f={},g={};return{saveApiChats:s,saveApiChat:l,getChat:c,getChatPhoto:u,getChatString:p,hasChat:d,wrapForFull:m,openChat:h}}]).service("AppPeersManager",["AppUsersManager","AppChatsManager",function(e,t){return{getInputPeer:function(e){var t="u"==e.charAt(0),n=e.substr(1).split("_");return t?{_:"inputPeerForeign",user_id:n[0],access_hash:n[1]}:{_:"inputPeerChat",chat_id:n[0]}},getInputPeerByID:function(t){return t>0?{_:"inputPeerForeign",user_id:t,access_hash:e.getUser(t).access_hash||0}:0>t?{_:"inputPeerChat",chat_id:-t}:void 0},getPeerSearchText:function(n){var i;if(n>0)i=e.getUserSearchText(n);else if(0>n){var a=t.getChat(-n);i=a.title||""}return i},getPeerString:function(n){return n>0?e.getUserString(n):t.getChatString(-n)},getOutputPeer:function(e){return e>0?{_:"peerUser",user_id:e}:{_:"peerChat",chat_id:-e}},getPeerID:function(e){if(angular.isObject(e))return e.user_id?e.user_id:-e.chat_id;var t="u"==e.charAt(0),n=e.substr(1).split("_");return t?n[0]:-n[0]||0},getPeer:function(n){return n>0?e.getUser(n):t.getChat(-n)},getPeerPhoto:function(n,i,a){return n>0?e.getUserPhoto(n,i):t.getChatPhoto(-n,a)}}}]).service("AppMessagesManager",["$q","$rootScope","$location","$filter","ApiUpdatesManager","AppUsersManager","AppChatsManager","AppPeersManager","AppPhotosManager","AppVideoManager","AppDocsManager","AppAudioManager","MtpApiManager","MtpApiFileManager","RichTextProcessor","NotificationsManager","SearchIndexManager","PeersSelectService","Storage","FileManager","_",function(e,t,n,i,a,o,r,s,l,c,d,u,p,m,h,f,g,_,y,v,b){function w(t,n,i){var a=X;if(angular.isString(t)&&t.length){if(!i||nt.query!==t){nt.query=t;var l=g.search(t,tt);nt.dialogs=[],angular.forEach(X.dialogs,function(e){l[e.peerID]&&nt.dialogs.push(e)}),nt.count=nt.dialogs.length}a=nt}else nt.query=!1;var c=0;if(n>0)for(c=0;c<a.dialogs.length&&!(n>a.dialogs[c].top_message);c++);return null!==a.count&&a.dialogs.length==a.count||a.dialogs.length>=c+(i||1)?e.when({count:a.count,dialogs:a.dialogs.slice(c,c+(i||20))}):(i=i||20,p.invokeApi("messages.getDialogs",{offset:c,limit:i,max_id:n||0}).then(function(e){if(o.saveApiUsers(e.users),r.saveApiChats(e.chats),I(e.messages),n>0)for(c=0;c<a.dialogs.length&&!(n>a.dialogs[c].top_message);c++);return a.count=e.count||e.dialogs.length,a.dialogs.splice(c,a.dialogs.length-c),angular.forEach(e.dialogs,function(e){var t=s.getPeerID(e.peer),n=s.getPeerSearchText(t);g.indexObject(t,n,tt),a.dialogs.push({peerID:t,top_message:e.top_message,unread_count:e.unread_count}),void 0===K[t]&&(K[t]={count:null,history:[e.top_message],pending:[]}),f.savePeerSettings(t,e.notify_settings)}),{count:a.count,dialogs:a.dialogs.slice(c,c+i)}}))}function $(e,t,n,i){return p.invokeApi("messages.getHistory",{peer:e,offset:i||0,limit:n||0,max_id:t||0},{noErrorBox:!0}).then(function(e){return o.saveApiUsers(e.users),r.saveApiChats(e.chats),I(e.messages),e})}function k(e,t,n,i){return $(e,t,n).then(function(a){i.count=a.count||a.messages.length;var o=0;if(t>0)for(o=0;o<i.history.length&&!(t>i.history[o]);o++);return i.history.splice(o,i.history.length-o),angular.forEach(a.messages,function(e){i.history.push(e.id)}),n-=a.messages.length,n>0&&i.history.length<i.count?(t=i.history[i.history.length-1],k(e,t,n,i)):!0})}function C(t,n,i,a,o){var r=s.getPeerID(t),l=K[r],c=0,d=!1,u=!1,p=!1,m=[];if(o=o?Math.min(50,o):0,void 0===l?l=K[r]={count:null,history:[],pending:[]}:!n&&l.pending.length&&(m=l.pending.slice()),i||n){if(n>0)for(d=!0,c=0;c<l.history.length;c++)if(n>l.history[c]){d=!1;break}}else{var h=H(r);if(h&&h[0]&&h[0].unread_count>1){var f=h[0].unread_count;(p=f>50)?(i=10,u=6,c=f-u):(i=Math.max(10,o,f+2),u=f)}else Config.Mobile&&(i=20)}return!d&&(null!==l.count&&l.history.length==l.count||l.history.length>=c+(i||1))?(a?(a=Math.min(c,a),c=Math.max(0,c-a),i+=a):i=i||(c?20:o||5),e.when({count:l.count,history:m.concat(l.history.slice(c,c+i)),unreadOffset:u,unreadSkip:p})):(a||i||(i=o||20),d&&(c=0),a||p||n&&-1==l.history.indexOf(n)?(a&&(c=-a,i+=a),$(t,n,i,c).then(function(e){l.count=e.count||e.messages.length;var t=[];return angular.forEach(e.messages,function(e){t.push(e.id)}),{count:l.count,history:m.concat(t),unreadOffset:u,unreadSkip:p}})):k(t,n,i,l).then(function(){if(c=0,n>0)for(c=0;c<l.history.length&&!(n>l.history[c]);c++);return{count:l.count,history:m.concat(l.history.slice(c,c+i)),unreadOffset:u,unreadSkip:p}}))}function S(t,n,i,a,l){var c=[],d=!n,u=s.getPeerID(t),m={peer:u,filter:i},h=d&&angular.equals(it,m);if(d&&!h&&(it=m,at=[]),!a&&!n){var f=K[u];if(void 0!==f&&f.history.length){var g,_,y={},v=l||20;switch(i._){case"inputMessagesFilterPhotos":y.messageMediaPhoto=!0;break;case"inputMessagesFilterVideo":y.messageMediaVideo=!0;break;case"inputMessagesFilterPhotoVideo":y.messageMediaPhoto=!0,y.messageMediaVideo=!0;break;case"inputMessagesFilterDocument":y.messageMediaDocument=!0;break;case"inputMessagesFilterAudio":y.messageMediaAudio=!0}for(g=0;g<f.history.length&&(_=z[f.history[g]],!(_.media&&y[_.media._]&&(c.push(_.id),c.length>=v)));g++);}if(c.length<v&&at.length&&h)for(var b=c.length?c[c.length-1]:4294967295,g=0;g<at.length&&!(at[g]<b&&(c.push(at[g]),c.length>=v));g++);}return c.length||1e3==l?(d&&(at=listMergeSorted(at,c)),e.when({count:null,history:c})):p.invokeApi("messages.search",{peer:t,q:n||"",filter:i||{_:"inputMessagesFilterEmpty"},min_date:0,max_date:0,limit:l||20,max_id:a||0}).then(function(e){o.saveApiUsers(e.users),r.saveApiChats(e.chats),I(e.messages);var t=e.count||e.messages.length;return c=[],angular.forEach(e.messages,function(e){c.push(e.id)}),d&&(at=listMergeSorted(at,c)),{count:t,history:c}})}function M(e){return z[e]||{deleted:!0}}function x(e){return p.invokeApi("messages.deleteMessages",{id:e}).then(function(e){return a.processUpdateMessage({_:"updateShort",update:{_:"updateDeleteMessages",messages:e}}),e})}function A(t,n,i){return a.processUpdateMessage({_:"updates",seq:n.seq,updates:[]})?n.offset?p.invokeApi(i,{peer:t,offset:n.offset,max_id:0,read_contents:!0}).then(function(e){return A(t,e,i)}):e.when():!1}function T(e){var n=s.getPeerID(e),i=K[n],a=H(n);if(!a[0]||!a[0].unread_count){if(!i||!i.history.length)return!1;var o,r,l=!1;for(c=i.history.length;c>=0;c--)if(o=i.history[c],r=z[o],r&&!r.out&&r.unread){l=!0;break}if(!l)return!1}if(i.readPromise)return i.readPromise;if(i.readPromise=p.invokeApi("messages.readHistory",{peer:e,offset:0,max_id:0,read_contents:!0}).then(function(t){return A(e,t,"messages.readHistory")}).then(function(){a[0]&&(a[0].unread_count=0,t.$broadcast("dialog_unread",{peerID:n,count:0}),t.$broadcast("messages_read"))})["finally"](function(){delete i.readPromise}),i&&i.history.length){var o,r,c,n,a;for(c=0;c<i.history.length;c++)o=i.history[c],r=z[o],r&&!r.out&&(r.unread=!1,W[o]&&(W[o].unread=!1),G[o]&&(G[o].unread=!1))}return i.readPromise}function E(e){{var n=s.getPeerID(e);K[n]}return p.invokeApi("messages.deleteHistory",{peer:e,offset:0}).then(function(t){return A(e,t,"messages.deleteHistory")}).then(function(){var e=H(n);e[0]&&X.dialogs.splice(e[1],1),delete K[n],t.$broadcast("dialog_flush",{peerID:n})})}function I(e){angular.forEach(e,function(e){e.unread=1&e.flags?!0:!1,e.out=2&e.flags?!0:!1,z[e.id]=e,e.date-=ot,e.media&&"messageMediaPhoto"==e.media._&&l.savePhoto(e.media.photo),e.media&&"messageMediaVideo"==e.media._&&c.saveVideo(e.media.video),e.media&&"messageMediaDocument"==e.media._&&d.saveDoc(e.media.document),e.media&&"messageMediaAudio"==e.media._&&u.saveAudio(e.media.audio),e.action&&"messageActionChatEditPhoto"==e.action._&&l.savePhoto(e.action.photo)})}function D(e,n){if(angular.isString(n)&&n.length){var i,o=et--,r=[nextRandomInt(4294967295),nextRandomInt(4294967295)],l=bigint(r[0]).shiftLeft(32).add(bigint(r[1])).toString(),c=K[e],d=s.getInputPeerByID(e);void 0===c&&(c=K[e]={count:null,history:[],pending:[]}),p.getUserID().then(function(u){i={_:"message",id:o,from_id:u,to_id:s.getOutputPeer(e),flags:3,date:tsNow(!0)+ot,message:n,media:{_:"messageMediaEmpty"},random_id:l,pending:!0};var m=function(e){var n=W[o];e?(i.error=!0,n&&(n.error=!0)):(delete i.error,n&&delete n.error),t.$broadcast("messages_pending")};i.send=function(){m(!1);var t={};J[e]&&(t.afterMessageID=J[e].messageID),p.invokeApi("messages.sendMessage",{peer:d,message:n,random_id:r},t).then(function(e){i.date=e.date,i.id=e.id,a.processUpdateMessage({_:"updates",users:[],chats:[],seq:e.seq,updates:[{_:"updateMessageID",random_id:l,id:e.id},{_:"updateNewMessage",message:i,pts:e.pts}]})},function(){m(!0)})["finally"](function(){J[e]===t&&delete J[e]}),J[e]=t},I([i]),c.pending.unshift(o),t.$broadcast("history_append",{peerID:e,messageID:o,my:!0}),i.send()}),Z[l]=[e,o]}}function P(n,i,o){o=o||{};var r,l,c=et--,d=[nextRandomInt(4294967295),nextRandomInt(4294967295)],u=bigint(d[0]).shiftLeft(32).add(bigint(d[1])).toString(),h=K[n],f=s.getInputPeerByID(n);o.isMedia?["image/jpeg","image/png","image/bmp"].indexOf(i.type)>=0?(r="photo",l="photo."+i.type.split("/")[1]):"video/"==i.type.substr(0,6)?(r="video",l="video.mp4"):"audio/"==i.type.substr(0,6)?(r="audio",l="audio."+("ogg"==i.type.split("/")[1]?"ogg":"mp3")):(r="document",l="document."+i.type.split("/")[1]):(r="document",l="document."+i.type.split("/")[1]),void 0===h&&(h=K[n]={count:null,history:[],pending:[]}),p.getUserID().then(function(o){var g={_:"messageMediaPending",type:r,file_name:i.name||l,size:i.size,progress:{percent:1,total:i.size}},_={_:"message",id:c,from_id:o,to_id:s.getOutputPeer(n),flags:3,date:tsNow(!0)+ot,message:"",media:g,random_id:u,pending:!0},y=function(e){var n=W[c];e?(_.error=!0,n&&(n.error=!0)):(delete _.error,n&&delete n.error),t.$broadcast("messages_pending")};_.send=function(){var o=e.defer();Q.then(function(){var e=!1,s=m.uploadFile(i);s.then(function(t){t.name=l,e=!0;var n;switch(r){case"photo":n={_:"inputMediaUploadedPhoto",file:t};break;case"video":n={_:"inputMediaUploadedVideo",file:t,duration:0,w:0,h:0,mime_type:i.type};break;case"audio":n={_:"inputMediaUploadedAudio",file:t,duration:0,mime_type:i.type};break;case"document":default:n={_:"inputMediaUploadedDocument",file:t,file_name:i.name,mime_type:i.type}}p.invokeApi("messages.sendMedia",{peer:f,media:n,random_id:d}).then(function(e){_.date=e.message.date,_.id=e.message.id,_.media=e.message.media,a.processUpdateMessage({_:"updates",users:e.users,chats:e.chats,seq:e.seq,updates:[{_:"updateMessageID",random_id:u,id:e.message.id},{_:"updateNewMessage",message:_,pts:e.pts}]}) |
|
|
},function(){y(!0)})},function(){y(!0)},function(e){g.progress.done=e.done,g.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update",{peerID:n})}),g.progress.cancel=function(){e||(o.resolve(),s.cancel(),O(u))},s["finally"](function(){o.resolve()})}),Q=o.promise},I([_]),h.pending.unshift(c),t.$broadcast("history_append",{peerID:n,messageID:c,my:!0}),_.send()}),Z[u]=[n,c]}function N(e,n){var i=et--,o=[nextRandomInt(4294967295),nextRandomInt(4294967295)],r=bigint(o[0]).shiftLeft(32).add(bigint(o[1])).toString(),c=K[e],d=s.getInputPeerByID(e);void 0===c&&(c=K[e]={count:null,history:[],pending:[]}),p.getUserID().then(function(u){var m;switch(n._){case"inputMediaContact":m=angular.extend({},n,{_:"messageMediaContact"});break;case"inputMediaPhoto":m={photo:l.getPhoto(n.id.id)}}var h={_:"message",id:i,from_id:u,to_id:s.getOutputPeer(e),flags:3,date:tsNow(!0)+ot,message:"",media:m,random_id:r,pending:!0},f=function(e){var n=W[i];e?(h.error=!0,n&&(n.error=!0)):(delete h.error,n&&delete n.error),t.$broadcast("messages_pending")};h.send=function(){p.invokeApi("messages.sendMedia",{peer:d,media:n,random_id:o}).then(function(e){h.date=e.message.date,h.id=e.message.id,h.media=e.message.media,a.processUpdateMessage({_:"updates",users:e.users,chats:e.chats,seq:e.seq,updates:[{_:"updateMessageID",random_id:r,id:e.message.id},{_:"updateNewMessage",message:h,pts:e.pts}]})},function(){f(!0)})},I([h]),c.pending.unshift(i),t.$broadcast("history_append",{peerID:e,messageID:i,my:!0}),h.send()}),Z[r]=[e,i]}function L(e,t){return t=t.sort(),p.invokeApi("messages.forwardMessages",{peer:s.getInputPeerByID(e),id:t}).then(function(e){var t=[];angular.forEach(e.messages,function(n){t.push({_:"updateNewMessage",message:n,pts:e.pts})}),a.processUpdateMessage({_:"updates",users:e.users,chats:e.chats,seq:e.seq,updates:t})})}function O(e){var t=Z[e];if(console.log("pending",e,t),t){var n,i=t[0],o=t[1],r=K[i];for(a.processUpdateMessage({_:"updateShort",update:{_:"updateDeleteMessages",messages:[o]}}),n=0;n<r.pending.length;n++)if(r.pending[n]==o){r.pending.splice(n,1);break}return delete W[o],delete z[o],!0}return!1}function U(e,n){var i=Z[e];if(i){var a,o=i[0],r=i[1],s=K[o],l=!1,c=!1;for(a=0;a<s.pending.length;a++)if(s.pending[a]==r){s.pending.splice(a,1);break}return(l=z[r])&&(delete l.pending,delete l.error,delete l.random_id,delete l.send),(c=W[r])&&(W[n.id]=angular.extend(c,F(n.id)),delete c.pending,delete c.error,delete c.random_id,delete c.send,t.$broadcast("messages_pending")),delete W[r],delete z[r],l}return!1}function B(e){var t=e.to_id&&s.getPeerID(e.to_id)||0;return 0>t?t:e.out||2&e.flags?t:e.from_id}function R(e,t){var n=-1!=t;if(n&&void 0!==G[e])return G[e];var i=angular.copy(z[e])||{id:e};return i.fromUser=o.getUser(i.from_id),(i.chatID=i.to_id.chat_id)?(i.peerID=-i.chatID,i.peerData=r.getChat(i.chatID)):(i.peerID=i.out?i.to_id.user_id:i.from_id,i.peerData=o.getUser(i.peerID)),i.peerString=s.getPeerString(i.peerID),i.peerPhoto=s.getPeerPhoto(i.peerID,"User","Group"),i.unreadCount=t,"messageService"==i._&&i.action.user_id&&(i.action.user=o.getUser(i.action.user_id)),i.message&&i.message.length&&(i.richMessage=h.wrapRichText(i.message.substr(0,64),{noLinks:!0,noLinebreaks:!0})),i.dateText=ct(i.date),n&&(G[e]=i),i}function F(e){if(void 0!==W[e])return W[e];var t=angular.copy(z[e])||{id:e};if(t.media&&void 0!==t.media.progress&&(t.media.progress=z[e].media.progress),t.media)switch(t.media._){case"messageMediaPhoto":t.media.photo=l.wrapForHistory(t.media.photo.id);break;case"messageMediaVideo":t.media.video=c.wrapForHistory(t.media.video.id);break;case"messageMediaDocument":t.media.document=d.wrapForHistory(t.media.document.id);break;case"messageMediaAudio":t.media.audio=u.wrapForHistory(t.media.audio.id);break;case"messageMediaContact":t.media.rFullName=h.wrapRichText(t.media.first_name+" "+(t.media.last_name||""),{noLinks:!0,noLinebreaks:!0});break;case"messageMediaEmpty":delete t.media}else if(t.action)switch(t.action._){case"messageActionChatEditPhoto":t.action.photo=l.wrapForHistory(t.action.photo.id);break;case"messageActionChatCreate":case"messageActionChatEditTitle":t.action.rTitle=h.wrapRichText(t.action.title,{noLinks:!0,noLinebreaks:!0})||b("chat_title_deleted")}return t.message&&t.message.length&&(t.richMessage=h.wrapRichText(t.message),Config.Navigator.mobile||(t.richUrlEmbed=h.extractExternalEmbed(t.message))),W[e]=t}function q(e,t){if(!e||!e.length)return!1;var n,i,a,o,r,s,l,c=0,d=e.length,u=d,p=!1,m=!Config.Mobile;for(t>0?u=Math.min(t,d):0>t&&(c=Math.max(0,u+t)),n=c;u>n;n++){if(o=e[n],i=Math.floor((o.date+V)/86400),l=r&&r.grouped,s=o.grouped,i===a?o.needDate&&(delete o.needDate,p=!0):(!n||r)&&(o.needDate||(o.needDate=!0,p=!0)),r&&o.from_id==r.from_id&&!r.fwd_from_id==!o.fwd_from_id&&!r.action&&!o.action&&o.date<r.date+900){var h=o.message&&o.message.length<70&&-1==o.message.indexOf("\n");o.grouped=m&&o.fwd_from_id&&o.fwd_from_id==r.fwd_from_id?h?"im_grouped_fwd_short":"im_grouped_fwd":!o.fwd_from_id&&h?"im_grouped_short":"im_grouped",m&&o.fwd_from_id&&(r.grouped||(r.grouped="im_grouped_fwd_start"),o.grouped&&n==d-1&&(o.grouped+=" im_grouped_fwd_end"))}else(r||!n)&&(delete o.grouped,m&&r&&r.grouped&&r.fwd_from_id&&(r.grouped+=" im_grouped_fwd_end"));p||l==(r&&r.grouped)||(p=!0),r=o,a=i}return p||s==(r&&r.grouped)||(p=!0),p}function H(e){for(var t=0;t<X.dialogs.length;t++)if(X.dialogs[t].peerID==e)return[X.dialogs[t],t];return[]}function j(e){var n,i,a=B(e),s=o.getUser(e.from_id),l=o.getUserPhoto(e.from_id,"User"),c={},d=!1;if(e.message)d=h.wrapPlainText(e.message);else if(e.media&&"messageMediaEmpty"!=e.media._)switch(e.media._){case"messageMediaPhoto":d=b("conversation_media_photo_raw");break;case"messageMediaVideo":d=b("conversation_media_video_raw");break;case"messageMediaDocument":d=e.media.document.file_name||b("conversation_media_document_raw");break;case"messageMediaAudio":d=b("conversation_media_audio_raw");break;case"messageMediaGeo":d=b("conversation_media_location_raw");break;case"messageMediaContact":d=b("conversation_media_contact_raw");break;default:d=b("conversation_media_attachment_raw")}else if("messageService"==e._)switch(e.action._){case"messageActionChatCreate":d=b("conversation_group_created_raw");break;case"messageActionChatEditTitle":d=b("conversation_group_renamed_raw");break;case"messageActionChatEditPhoto":d=b("conversation_group_photo_updated_raw");break;case"messageActionChatDeletePhoto":d=b("conversation_group_photo_removed_raw");break;case"messageActionChatAddUser":d=b(e.action.user_id==e.from_id?"conversation_returned_to_group":"conversation_invited_user_message_raw");break;case"messageActionChatDeleteUser":d=b(e.action.user_id==e.from_id?"conversation_left_group":"conversation_kicked_user_message_raw")}a>0?(c.title=(s.first_name||"")+(s.first_name&&s.last_name?" ":"")+(s.last_name||""),i=l,n=o.getUserString(a)):(c.title=(s.first_name||s.last_name||b("conversation_unknown_user_raw"))+" @ "+(r.getChat(-a).title||b("conversation_unknown_chat_raw")),i=r.getChatPhoto(-a,"Group"),n=r.getChatString(-a)),c.title=h.wrapPlainText(c.title),c.onclick=function(){t.$broadcast("history_focus",{peerString:n})},c.message=d,c.image=i.placeholder,c.key="msg"+e.id,c.tag=n,i.location&&!i.location.empty?m.downloadSmallFile(i.location,i.size).then(function(t){c.image=v.getUrl(t,"image/jpeg"),e.unread&&f.notify(c)}):f.notify(c)}var V,z={},W={},G={},K={},X={count:null,dialogs:[]},Z={},Y={},J={},Q=e.when(),et=-1,tt=g.createIndex(),nt={query:!1},it={},at=[],ot=0,rt=tsNow(!0),st=rt-rt%86400,lt=new Date;y.get("server_time_offset").then(function(e){e&&(ot=e)});var ct=i("dateOrTime");return lt.setHours(0),lt.setMinutes(0),lt.setSeconds(0),V=st-Math.floor(+lt/1e3),f.start(),window.navigator.mozSetMessageHandler&&window.navigator.mozSetMessageHandler("activity",function(e){var n=e.source;console.log(dT(),"Received activity",n.name,n.data),"share"===n.name&&n.data.blobs.length>0&&_.selectPeer({confirm_type:"EXT_SHARE_PEER"}).then(function(e){var i=s.getPeerID(e);angular.forEach(n.data.blobs,function(e){P(i,e,{isMedia:!0})}),t.$broadcast("history_focus",{peerString:e})})}),t.$on("apiUpdate",function(e,n){switch(n._){case"updateMessageID":Y[n.id]=n.random_id;break;case"updateNewMessage":var i=n.message,a=B(i),r=K[a];if(void 0!==r){{K[a].history[0]}if(-1!=K[a].history.indexOf(i.id))return!1;r.history.unshift(i.id),r.history.sort(function(e,t){return t-e})}else r=K[a]={count:null,history:[i.id],pending:[]};I([i]),i.out||o.forceUserOnline(i.from_id),null!==r.count&&r.count++;var l,c=Y[i.id];c&&((l=U(c,i))&&t.$broadcast("history_update",{peerID:a}),delete Y[i.id]),l||t.$broadcast("history_append",{peerID:a,messageID:i.id});var d,u=H(a);u.length?(d=u[0],X.dialogs.splice(u[1],1)):d={peerID:a,unread_count:0,top_message:!1},!i.out&&i.unread&&d.unread_count++,d.top_message=i.id,g.indexObject(a,s.getPeerSearchText(a),tt),X.dialogs.unshift(d),t.$broadcast("dialogs_update",d),(Config.Mobile&&t.selectedPeerID!=a||t.idle.isIDLE)&&!i.out&&i.unread&&f.getPeerMuted(a).then(function(e){i.unread&&!e&&j(i)});break;case"updateReadMessages":var p,i,m,a,u,d,h={},_=!1;for(m=0;m<n.messages.length;m++)p=n.messages[m],i=z[p],i&&i.unread&&(i.unread=!1,W[p]&&(W[p].unread=!1,_||(_=!0)),G[p]&&(G[p].unread=!1),a=B(i),i.out?a>0&&o.forceUserOnline(a):(u=H(a),u&&(h[a]=--u[0].unread_count),f.cancel("msg"+p)));angular.forEach(h,function(e,n){t.$broadcast("dialog_unread",{peerID:n,count:e})}),_&&t.$broadcast("messages_read");break;case"updateDeleteMessages":var p,i,m,a,u,d,y,h={},v={};for(m=0;m<n.messages.length;m++)p=n.messages[m],i=z[p],i&&(a=B(i),y=v[a]||(v[a]={count:0,unread:0,msgs:{}}),!i.out&&i.unread&&(y.unread++,f.cancel("msg"+p)),y.count++,y.msgs[p]=!0,W[p]&&(W[p].deleted=!0,delete W[p]),G[p]&&(G[p].deleted=!0,delete G[p]),i.deleted=!0,z[p]={deleted:!0,id:p,from_id:i.from_id,to_id:i.to_id,flags:i.flags,out:i.out,unread:i.unread,date:i.date});angular.forEach(v,function(e,n){var i=H(n);i&&e.unread&&(i[0].unread_count-=e.unread,t.$broadcast("dialog_unread",{peerID:n,count:i[0].unread_count}));var a=K[n];if(void 0!==a){for(var o=[],r=[],s=0;s<a.history.length;s++)e.msgs[a.history[s]]||o.push(a.history[s]);a.history=o;for(var s=0;s<a.pending.length;s++)e.msgs[a.pending[s]]||r.push(a.pending[s]);a.pending=r,t.$broadcast("history_delete",{peerID:n,msgs:e.msgs})}})}}),{getDialogs:w,getHistory:C,getSearch:S,getMessage:M,readHistory:T,flushHistory:E,deleteMessages:x,saveMessages:I,sendText:D,sendFile:P,sendOther:N,forwardMessages:L,getMessagePeer:B,wrapForDialog:R,wrapForHistory:F,regroupWrappedHistory:q}}]).service("AppPhotosManager",["$modal","$window","$timeout","$rootScope","MtpApiManager","MtpApiFileManager","AppUsersManager","FileManager",function(e,t,n,i,a,o,r,s){function l(e){_[e.id]=e,angular.forEach(e.sizes,function(e){"photoCachedSize"==e._&&(o.saveSmallFile(e.location,e.bytes),e.size=e.bytes.length,delete e.bytes,e._="photoSize")})}function c(e,t,n){Config.Navigator.retina&&(t*=2,n*=2);var i={_:"photoSizeEmpty"},a=16777215;return angular.forEach(e.sizes,function(e){var o=Math.abs(e.w*e.h-t*n);a>o&&(i=e,a=o)}),i}function d(e,t,n){return a.invokeApi("photos.getUserPhotos",{user_id:e,offset:0,limit:n||20,max_id:t||0}).then(function(e){r.saveApiUsers(e.users);for(var t=[],n=0;n<e.photos.length;n++)l(e.photos[n]),t.push(e.photos[n].id);return{count:e.count||e.photos.length,photos:t}})}function u(e){if(_[e]){var n=_[e],i=$(window).width()-(Config.Mobile?20:32),a=$(t).height()-(Config.Mobile?150:116);i>800&&(i-=208);var r=c(n,i,a);r&&!r.preloaded&&(r.preloaded=!0,r.size?o.downloadFile(r.location.dc_id,{_:"inputFileLocation",volume_id:r.location.volume_id,local_id:r.location.local_id,secret:r.location.secret},r.size):o.downloadSmallFile(r.location))}}function p(e){return _[e]||{_:"photoEmpty"}}function m(e){var t=angular.copy(_[e])||{_:"photoEmpty"},n=Math.min(y-80,Config.Mobile?210:260),i=Math.min(v-100,Config.Mobile?210:260),a=c(t,n,i),o={placeholder:"img/placeholders/PhotoThumbConversation.gif",width:n,height:i};return a&&"photoSizeEmpty"!=a._?(a.w/a.h>n/i?o.height=parseInt(a.h*n/a.w):(o.width=parseInt(a.w*i/a.h),o.width>n&&(o.height=parseInt(o.height*n/o.width),o.width=n)),o.location=a.location,o.size=a.size):(o.width=100,o.height=100),t.thumb=o,t}function h(e){var n=m(e),i=$(window).width()-(Config.Mobile?0:32),a=$(t).height()-(Config.Mobile?0:116);!Config.Mobile&&i>800&&(i-=208);var o=c(n,i,a),r={placeholder:"img/placeholders/PhotoThumbModal.gif"};if(r.width=i,r.height=a,o&&"photoSizeEmpty"!=o._){var s=calcImageInBox(o.w,o.h,i,a,!0);r.width=s.w,r.height=s.h,r.modalWidth=Math.max(r.width,Math.min(400,i)),r.location=o.location,r.size=o.size}return n.full=r,n}function f(t,n){if(!t||"0"===t)return!1;var a=i.$new(!0);a.photoID=t,0>n?a.userID=-n:a.messageID=n;e.open({templateUrl:templateUrl("photo_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:a.userID?"UserpicModalController":"PhotoModalController",scope:a,windowClass:"photo_modal_window"})}function g(e){var n=_[e],i="jpg",a="image/jpeg",r="photo"+e+"."+i,l=Math.max(screen.width||0,$(window).width()-36,800),d=Math.max(screen.height||0,$(t).height()-150,800),u=c(n,l,d),p={_:"inputFileLocation",volume_id:u.location.volume_id,local_id:u.location.local_id,secret:u.location.secret};s.chooseSave(r,i,a).then(function(e){e&&o.downloadFile(u.location.dc_id,p,u.size,{mime:a,toFileEntry:e}).then(function(){},function(e){console.log("photo download failed",e)})},function(){o.downloadFile(u.location.dc_id,p,u.size,{mime:a}).then(function(e){s.download(e,a,r)},function(e){console.log("photo download failed",e)})})}var _={},y=$(window).width(),v=$(window).height();return i.preloadPhoto=u,i.openPhoto=f,{savePhoto:l,preloadPhoto:u,getUserPhotos:d,getPhoto:p,wrapForHistory:m,wrapForFull:h,openPhoto:f,downloadPhoto:g}}]).service("AppVideoManager",["$sce","$rootScope","$modal","$window","$timeout","MtpApiFileManager","AppUsersManager","FileManager",function(e,t,n,i,a,o,r,s){function l(e){f[e.id]=e,e.thumb&&"photoCachedSize"==e.thumb._&&(o.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize")}function c(e){if(void 0!==g[e])return g[e];var t=angular.copy(f[e]),n=Math.min(_-80,Config.Mobile?210:150),i=Math.min(y-100,Config.Mobile?210:150),a=t.thumb,o={placeholder:"img/placeholders/VideoThumbConversation.gif",width:n,height:i};return a&&"photoSizeEmpty"!=a._&&(a.w/a.h>n/i?o.height=parseInt(a.h*n/a.w):(o.width=parseInt(a.w*i/a.h),o.width>n&&(o.height=parseInt(o.height*n/o.width),o.width=n)),o.location=a.location,o.size=a.size),t.thumb=o,g[e]=t}function d(e){var t=c(e),n=Math.min($(window).width()-(Config.Mobile?0:60),542),a=$(i).height()-(Config.Mobile?92:150),o={placeholder:"img/placeholders/VideoThumbModal.gif",width:n,height:a};if(t.w&&t.h){var r=calcImageInBox(t.w,t.h,n,a);o.width=r.w,o.height=r.h}else o.height=o.width=Math.min(n,a);return t.full=o,t.fullThumb=angular.copy(t.thumb),t.fullThumb.width=o.width,t.fullThumb.height=o.height,t}function u(e,i){var a=t.$new(!0);return a.videoID=e,a.messageID=i,n.open({templateUrl:templateUrl("video_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"VideoModalController",scope:a,windowClass:"video_modal_window"})}function p(e){var t=f[e],n=g[e]||t||{},i={_:"inputVideoFileLocation",id:e,access_hash:t.access_hash};void 0===n.downloaded&&o.getDownloadedFile(i,t.size).then(function(){n.downloaded=!0},function(){n.downloaded=!1})}function m(n,i){var a=f[n],r=g[n]||a||{},l=a.mime_type||"video/ogg",c={_:"inputVideoFileLocation",id:n,access_hash:a.access_hash};r.progress={enabled:!r.downloaded,percent:1,total:a.size};var d=o.downloadFile(a.dc_id,c,a.size,{mime:l,toFileEntry:i});return d.then(function(t){s.getFileCorrectUrl(t,l).then(function(t){r.url=e.trustAsResourceUrl(t)}),delete r.progress,r.downloaded=!0,console.log("video save done")},function(e){console.log("video download failed",e),r.progress.enabled=!1},function(e){console.log("dl progress",e),r.progress.enabled=!0,r.progress.done=e.done,r.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update")}),r.progress.cancel=d.cancel,d}function h(e){{var t=f[e],n=t.mime_type||"video/mp4",i=n.split(".")[1]||"mp4",a="t_video"+e+"."+i;g[e]||t||{}}s.chooseSave(a,i,n).then(function(t){t&&m(e,t)},function(){m(e).then(function(e){s.download(e,n,a)})})}var f={},g={},_=$(window).width(),y=$(window).height();return{saveVideo:l,wrapForHistory:c,wrapForFull:d,openVideo:u,updateVideoDownloaded:p,downloadVideo:m,saveVideoFile:h}}]).service("AppDocsManager",["$sce","$rootScope","$modal","$window","$timeout","$q","MtpApiFileManager","FileManager",function(e,t,n,i,a,o,r,s){function l(e){h[e.id]=e,e.thumb&&"photoCachedSize"==e.thumb._&&(r.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize")}function c(e){if(void 0!==f[e])return f[e];var t=angular.copy(h[e]),n="image/gif"==t.mime_type,i="audio/"==t.mime_type.substr(0,6),a=n?Math.min(g-80,260):100,o=n?Math.min(_-100,260):100,r=t.thumb,s={width:a,height:o};return r&&"photoSizeEmpty"!=r._?(r.w/r.h>a/o?s.height=parseInt(r.h*a/r.w):(s.width=parseInt(r.w*o/r.h),s.width>a&&(s.height=parseInt(s.height*a/s.width),s.width=a)),s.location=r.location,s.size=r.size):s=!1,t.thumb=s,t.withPreview=!Config.Mobile&&t.mime_type.match(/^(image\/)/)?1:0,n&&t.thumb?t.isSpecial="gif":i&&(t.isSpecial="audio"),f[e]=t}function d(e){var t=h[e],n=f[e]||t||{},i={_:"inputDocumentFileLocation",id:e,access_hash:t.access_hash};void 0===n.downloaded&&r.getDownloadedFile(i,t.size).then(function(){n.downloaded=!0},function(){n.downloaded=!1})}function u(n,i){var a=h[n],o=f[n]||a||{},l={_:"inputDocumentFileLocation",id:n,access_hash:a.access_hash};o.progress={enabled:!o.downloaded,percent:1,total:a.size};var c=r.downloadFile(a.dc_id,l,a.size,{mime:a.mime_type,toFileEntry:i});return c.then(function(t){s.getFileCorrectUrl(t,a.mime_type).then(function(t){o.url=e.trustAsResourceUrl(t)}),delete o.progress,o.downloaded=!0,console.log("file save done")},function(e){console.log("document download failed",e),o.progress.enabled=!1},function(e){console.log("dl progress",e),o.progress.enabled=!0,o.progress.done=e.done,o.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update")}),o.progress.cancel=c.cancel,c}function p(e,i){var a=t.$new(!0);a.docID=e,a.messageID=i;n.open({templateUrl:templateUrl("document_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"DocumentModalController",scope:a,windowClass:"document_modal_window"})}function m(e){var t=h[e],n=(f[e]||t||{},(t.file_name.split(".",2)||[])[1]||"");s.chooseSave(t.file_name,n,t.mime_type).then(function(t){t&&u(e,t)},function(){u(e).then(function(e){s.download(e,t.mime_type,t.file_name)})})}var h={},f={},g=$(window).width(),_=$(window).height();return{saveDoc:l,wrapForHistory:c,updateDocDownloaded:d,downloadDoc:u,openDoc:p,saveDocFile:m}}]).service("AppAudioManager",["$sce","$rootScope","$modal","$window","$timeout","MtpApiFileManager","FileManager",function(e,t,n,i,a,o,r){function s(e){p[e.id]=e}function l(e){if(void 0!==m[e])return m[e];var t=angular.copy(p[e]);return m[e]=t}function c(e){var t=p[e],n=m[e]||t||{},i={_:"inputAudioFileLocation",id:e,access_hash:t.access_hash};void 0===n.downloaded&&o.getDownloadedFile(i,t.size).then(function(){n.downloaded=!0},function(){n.downloaded=!1})}function d(n,i){var a=p[n],s=m[n]||a||{},l=a.mime_type||"audio/ogg",c={_:"inputAudioFileLocation",id:n,access_hash:a.access_hash};s.progress={enabled:!s.downloaded,percent:1,total:a.size};var d=o.downloadFile(a.dc_id,c,a.size,{mime:l,toFileEntry:i});return d.then(function(t){r.getFileCorrectUrl(t,l).then(function(t){s.url=e.trustAsResourceUrl(t)}),delete s.progress,s.downloaded=!0,console.log("audio save done")},function(e){console.log("audio download failed",e),s.progress.enabled=!1},function(e){console.log("dl progress",e),s.progress.enabled=!0,s.progress.done=e.done,s.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update")}),s.progress.cancel=d.cancel,d}function u(e){{var t=p[e],n=t.mime_type||"audio/ogg",i=n.split(".")[1]||"ogg",a="t_audio"+e+"."+i;m[e]||t||{}}r.chooseSave(a,i,n).then(function(t){t&&d(e,t)},function(){d(e).then(function(e){r.download(e,n,a)})})}var p={},m={};return{saveAudio:s,wrapForHistory:l,updateAudioDownloaded:c,downloadAudio:d,saveAudioFile:u}}]).service("ApiUpdatesManager",["$rootScope","MtpNetworkerFactory","AppUsersManager","AppChatsManager","AppPeersManager","MtpApiManager",function(e,t,n,i,a,o){function r(){var e=f.seq+1,t=g[e];t&&(console.log(dT(),"pop pending update",e,t),l(t)&&delete g[e])}function s(){m||c()}function l(e){if(e.seq){if(!u(e.seq,e.seq_start))return g[e.seq_start||e.seq]=e,!1;e.date&&(f.date=e.date)}switch(e._){case"updatesTooLong":case"new_session_created":s();break;case"updateShort":d(e.update);break;case"updateShortMessage":if(!n.hasUser(e.from_id)){console.log("User not found",e.from_id,"getDiff"),s();break}d({_:"updateNewMessage",message:{_:"message",id:e.id,from_id:e.from_id,to_id:a.getOutputPeer(o.getUserID()),flags:1,date:e.date,message:e.message,media:{_:"messageMediaEmpty"}},pts:e.pts});break;case"updateShortChatMessage":if(!n.hasUser(e.from_id)||!i.hasChat(e.chat_id)){console.log("User or chat not found",e.from_id,e.chat_id,"getDiff"),s();break}d({_:"updateNewMessage",message:{_:"message",id:e.id,from_id:e.from_id,to_id:a.getOutputPeer(-e.chat_id),flags:1,date:e.date,message:e.message,media:{_:"messageMediaEmpty"}},pts:e.pts});break;case"updatesCombined":case"updates":n.saveApiUsers(e.users),i.saveApiChats(e.chats);for(var t,l,c,t=0;t<e.updates.length;t++)switch(l=e.updates[t],l._){case"updateNewMessage":if(c=l.message,c.from_id&&!n.hasUser(c.from_id))return console.log("User not found",c.from_id,"getDiff"),s(),!1;if(c.to_id.chat_id&&!i.hasChat(c.to_id.chat_id))return console.log("Chat not found",c.to_id.chat_id,"getDiff"),s(),!1}angular.forEach(e.updates,function(e){d(e)});break;default:console.warn(dT(),"Unknown update message",e)}return r(),h&&f.seq>=h.seqAwaiting&&(console.log(dT(),"cancel pending getDiff",h.seqAwaiting),clearTimeout(h.timeout),h=!1),!0}function c(){m=!0,h&&(clearTimeout(h.timeout),h=!1),o.invokeApi("updates.getDifference",{pts:f.pts,date:f.date,qts:0}).then(function(e){if("updates.differenceEmpty"==e._)return console.log(dT(),"apply empty diff",e.seq),f.date=e.date,f.seq=e.seq,m=!1,r(),!1;n.saveApiUsers(e.users),i.saveApiChats(e.chats),angular.forEach(e.other_updates,function(e){d(e)}),angular.forEach(e.new_messages,function(e){d({_:"updateNewMessage",message:e,pts:f.pts})});var t=e.intermediate_state||e.state;f.seq=t.seq,f.pts=t.pts,f.date=t.date,console.log(dT(),"apply diff",f.seq,f.pts),"updates.differenceSlice"==e._?c(!0):m=!1})}function d(t){t.pts&&(f.pts=t.pts),e.$broadcast("apiUpdate",t)}function u(e,t){return(t=t||e)?m?(console.log(dT(),"Seq decline",t),!1):t!=f.seq+1?(t>f.seq&&(console.warn(dT(),"Seq hole",t,h&&h.seqAwaiting),h||(h={seqAwaiting:t,timeout:setTimeout(function(){c()},5e3)})),!1):(f.seq=e,!0):!0}function p(){t.setUpdatesProcessor(l),o.invokeApi("updates.getState",{},{noErrorBox:!0}).then(function(e){f.seq=e.seq,f.pts=e.pts,f.date=e.date,setTimeout(function(){m=!1},1e3)})}var m=!0,h=!1,f={},g={};return{processUpdateMessage:l,attach:p}}]).service("RichTextProcessor",["$sce","$sanitize",function(e,t){function n(e){for(var t,n,i,a,o=0;o<Config.EmojiCategories.length;o++)if(a=Config.EmojiCategorySpritesheetDimens[o][1],t=Config.EmojiCategories[o].indexOf(e),t>-1)return n=Math.floor(t/a),i=t%a,{category:o,row:n,column:i};return console.error("emoji not found in spritesheet",e),null}function i(i,a){if(!i||!i.length)return"";a=a||{},i=i.replace(/\ufe0f/g,"",i);for(var o,s,u,p=i,m=[],f=!1;o=p.match(h);)m.push(encodeEntities(p.substr(0,o.index))),o[1]?a.noLinks?m.push(encodeEntities(o[0])):o[3]?m.push('<a href="',encodeEntities("mailto:"+o[3]+o[4]),'" target="_blank">',encodeEntities(o[3]+o[4]),"</a>"):m.push('<a href="',encodeEntities(o[2]+"://"+o[4]),'" target="_blank">',encodeEntities(o[2]+"://"+o[4]),"</a>"):o[5]?m.push(a.noLinebreaks?" ":"<br/>"):o[6]?(r=l[o[6]])&&(u=n(r))?(s=encodeEntities(c[r][1][0]),f=!0,m.push('<span class="emoji emoji-',u.category,"-",d*u.column,"-",d*u.row,'" ','title="',s,'">',":",s,":</span>")):m.push(encodeEntities(o[6])):o[8]&&(a.noLinks?m.push(o[7],encodeEntities(o[8])):m.push(o[7],'<a href="#/im?q=',encodeURIComponent(o[8]),'">',encodeEntities(o[8]),"</a>")),p=p.substr(o.index+o[0].length);return m.push(encodeEntities(p)),i=t(m.join("")),f&&(i=i.replace(/<span class="emoji emoji-(\d)-(\d+)-(\d+)"(.+?)<\/span>/g,'<span class="emoji emoji-spritesheet-$1" style="background-position: -$2px -$3px;" $4</span>')),e.trustAs("html",i)}function a(e){var t;if(t=e.match(f))return["youtube",t[1]];if(t=e.match(g))return["vimeo",t[1]];if(t=e.match(_))return["instagram",t[1]];if(t=e.match(y))return["vine",t[1]];if(t=e.match(w)){var n="explore,upload,pages,terms-of-use,mobile,jobs,imprint".split(",");if(-1!=n.indexOf(t[1]))return["soundcloud",t[0]]}if(!Config.Modes.chrome_packed){if(t=e.match(v))return["twitter",t[0]];if(t=e.match(b))return["facebook",t[0]]}return!1}function o(e,t){if(u)return e;if(!e||!e.length)return"";t=t||{},e=e.replace(/\ufe0f/g,"",e);for(var n,i,a=e,e=[];n=a.match(h);)e.push(a.substr(0,n.index)),e.push(n[6]?(r=l[n[6]])&&(i=c[r][1][0])?":"+i+":":n[0]:n[0]),a=a.substr(n.index+n[0].length);return e.push(a),e.join("")}var r,s=[],l={},c=Config.Emoji,d=18,u=-1!=navigator.userAgent.search(/OS X|iPhone|iPad|iOS|Android/i);for(r in c)s.push(c[r][0]),l[c[r][0]]=r;var p="a-z\\u00c0-\\u00d6\\u00d8-\\u00f6\\u00f8-\\u00ff\\u0100-\\u024f\\u0253\\u0254\\u0256\\u0257\\u0259\\u025b\\u0263\\u0268\\u026f\\u0272\\u0289\\u028b\\u02bb\\u0300-\\u036f\\u1e00-\\u1eff\\u0400-\\u04ff\\u0500-\\u0527\\u2de0-\\u2dff\\ua640-\\ua69f\\u0591-\\u05bf\\u05c1-\\u05c2\\u05c4-\\u05c5\\u05c7\\u05d0-\\u05ea\\u05f0-\\u05f4\\ufb1d-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufb4f\\u0610-\\u061a\\u0620-\\u065f\\u066e-\\u06d3\\u06d5-\\u06dc\\u06de-\\u06e8\\u06ea-\\u06ef\\u06fa-\\u06fc\\u06ff\\u0750-\\u077f\\u08a0\\u08a2-\\u08ac\\u08e4-\\u08fe\\ufb50-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\u200c\\u0e01-\\u0e3a\\u0e40-\\u0e4e\\u1100-\\u11ff\\u3130-\\u3185\\uA960-\\uA97F\\uAC00-\\uD7AF\\uD7B0-\\uD7FF\\u3003\\u3005\\u303b\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uff9f\\uffa1-\\uffdc",m="0-9._"+p,h=new RegExp("((?:(ftp|https?)://|(?:mailto:)?([A-Za-z0-9._%+-]+@))(\\S*\\.\\S*[^\\s.;,(){}<>\"']))|(\\n)|("+s.join("|")+")|(^|\\s)(#["+m+"]{3,20})","i"),f=/(?:https?:\/\/)?(?:www\.)?youtu(?:|\.be|be\.com|\.b)(?:\/v\/|\/watch\\?v=|e\/|(?:\/\??#)?\/watch(?:.+)v=)(.{11})(?:\&[^\s]*)?/,g=/(?:https?:\/\/)?(?:www\.)?vimeo\.com\/(\d+)/,_=/https?:\/\/(?:instagr\.am\/p\/|instagram\.com\/p\/)([a-zA-Z0-9\-\_]+)/i,y=/https?:\/\/vine\.co\/v\/([a-zA-Z0-9\-\_]+)/i,v=/https?:\/\/twitter\.com\/.+?\/status\/\d+/i,b=/https?:\/\/(?:www\.)?facebook\.com\/.+?\/posts\/\d+/i,w=/https?:\/\/(?:soundcloud\.com|snd\.sc)\/([a-zA-Z0-9%\-\_]+)\/([a-zA-Z0-9%\-\_]+)/i;return{wrapRichText:i,wrapPlainText:o,extractExternalEmbed:a}}]).service("StatusManager",["$timeout","$rootScope","MtpApiManager","IdleManager",function(e,t,n){function i(){l||(l=!0,t.$watch("idle.isIDLE",o),t.$watch("offline",o))}function a(e){var i=tsNow();if(!(e&&!s||!e&&5e4>i-s||t.offline))return s=e?0:i,n.invokeApi("account.updateStatus",{offline:e},{noErrorBox:!0})}function o(){r&&e.cancel(r),t.idle.isIDLE?r=e(function(){a(!0)},5e3):(a(!1),r=e(o,6e4))}var r,s=0,l=!1;return{start:i}}]).service("NotificationsManager",["$rootScope","$window","$timeout","$interval","$q","_","MtpApiManager","AppPeersManager","IdleManager","Storage","AppRuntimeManager",function(e,t,n,i,a,o,r,s,l,c,d){function u(e){return void 0!==D[e]?D[e]:D[e]=r.invokeApi("account.getNotifySettings",{peer:{_:"inputNotifyPeer",peer:s.getInputPeerByID(e)}})}function p(e,t){D[e]=a.when(t)}function m(e,t){p(e,t);var n=angular.copy(t);return n._="inputPeerNotifySettings",r.invokeApi("account.updateNotifySettings",{peer:{_:"inputNotifyPeer",peer:s.getInputPeerByID(e)},settings:n})}function h(e){return u(e).then(function(e){return"peerNotifySettings"==e._&&1e3*e.mute_until>tsNow()})}function f(){if(w(),!x)return!1;"Notification"in window&&"granted"!==Notification.permission&&"denied"!==Notification.permission&&$(t).on("click",g);try{"onbeforeunload"in window&&$(t).on("beforeunload",b)}catch(e){}}function g(){Notification.requestPermission(),$(t).off("click",g)}function _(e){return Config.Navigator.ffos?e.image="https://raw.githubusercontent.com/zhukov/webogram/master/app/img/icons/icon60.png":e.image||(e.image="img/icons/icon60.png"),E++,c.get("notify_nosound","notify_volume").then(function(e){(!e[0]&&e[1]===!1||e[1]>0)&&y(e[1]||.5)}),!x||"Notification"in window&&"granted"!==Notification.permission?!1:void c.get("notify_nodesktop","notify_novibrate").then(function(t){if(t[0]){if(I&&!t[1])return void navigator.vibrate([200,100,200])}else{var n,i=++T,a=e.key||"k"+i;if("Notification"in window)n=new Notification(e.title,{icon:e.image||"",body:e.message||"",tag:e.tag||""});else if("mozNotification"in navigator)n=navigator.mozNotification.createNotification(e.title,e.message||"",e.image||"");else{if(!C)return;window.external.msSiteModeClearIconOverlay(),window.external.msSiteModeSetIconOverlay("img/icons/icon16.png",e.title),window.external.msSiteModeActivate(),n={index:i}}n.onclick=function(){n.close(),d.focus(),b(),e.onclick&&e.onclick()},n.onclose=function(){delete A[a],b()},n.show&&n.show(),A[a]=n}})}function y(e){var t="img/sound_a.wav",n=$("#notify_sound").html('<audio autoplay="autoplay"><source src="'+t+'" type="audio/mpeg" /><embed hidden="true" autostart="true" loop="false" volume="'+100*e+'" src="'+t+'" /></audio>');n.find("audio")[0].volume=e}function v(e){var t=A[e];if(t){E>0&&E--;try{t.close?t.close():C&&t.index==T&&window.external.msSiteModeClearIconOverlay()}catch(n){}delete E[e]}}function b(){C?window.external.msSiteModeClearIconOverlay():angular.forEach(A,function(e){try{e.close&&e.close()}catch(t){}}),A={},E=0}function w(){if(U)return!1;if(navigator.push&&Config.Navigator.ffos&&Config.Modes.packed){var e=navigator.push.register();e.onsuccess=function(){clearTimeout(R),console.log(dT(),"Push registered",e.result),U=e.result,r.invokeApi("account.registerDevice",{token_type:4,token:U,device_model:navigator.userAgent||"Unknown UserAgent",system_version:navigator.platform||"Unknown Platform",app_version:Config.App.version,app_sandbox:!1,lang_code:navigator.language||"en"})},e.onerror=function(e){console.error("Push register error",e,e.toString()),R=setTimeout(w,B),B=Math.min(3e4,1.5*B)}}}function k(){return I}navigator.vibrate=navigator.vibrate||navigator.mozVibrate||navigator.webkitVibrate;var C=!1;try{window.external&&window.external.msIsSiteMode()&&(C=!0)}catch(S){}var M,x=C||"Notification"in window||"mozNotification"in navigator,A={},T=0,E=0,I=!!navigator.vibrate,D={},P=$('link[rel="icon"]:first'),N=$('<link rel="icon" href="favicon_unread.ico" type="image/x-icon" />'),L=o.pluralize("page_title_pluralize_notifications"),O=document.title;e.$watch("idle.isIDLE",function(e){e||b(),Config.Navigator.mobile||(i.cancel(M),e?(O=document.title,M=i(function(){var e=tsNow();if(!E||e%2e3>1e3){document.title=O;var t=$('link[rel="icon"]:first');-1!=t.attr("href").indexOf("favicon_unread")&&t.replaceWith(P)}else document.title=L(E),$('link[rel="icon"]:first').replaceWith(N)},1e3)):(document.title=O,$('link[rel="icon"]:first').replaceWith(P)))}),e.$on("apiUpdate",function(e,t){switch(t._){case"updateNotifySettings":if("notifyPeer"==t.peer._){var n=s.getPeerID(t.peer.peer);p(n,t.notify_settings)}}});var U=!1;return window.navigator.mozSetMessageHandler&&(window.navigator.mozSetMessageHandler("push",function(t){console.log(dT(),"received push",t),e.$broadcast("push_received") |
|
|
}),window.navigator.mozSetMessageHandler("push-register",function(e){console.log(dT(),"received push",e),U=!1,w()})),{start:f,notify:_,cancel:v,clear:b,getPeerSettings:u,getPeerMuted:h,savePeerSettings:p,updatePeerSettings:m,getVibrateSupport:k,testSound:y};var B,R}]).service("ErrorService",["$rootScope","$modal","$window",function(e,t,n){function i(n,i){if(r>=2)return console.log("Skip error box, too many open",r,n,i),!1;i=i||{};var a=e.$new();angular.extend(a,n),r++;var o=t.open({templateUrl:templateUrl("error_modal"),scope:a,windowClass:i.windowClass||"error_modal_window"});return o.result["finally"](function(){r--}),o}function a(e,t){return i({title:e,description:t})}function o(n,i){i=i||{};var a=e.$new();angular.extend(a,n);var o=t.open({templateUrl:templateUrl("confirm_modal"),scope:a,windowClass:i.windowClass||"confirm_modal_window"});return o.result}var r=0;return n.safeConfirm=function(e,t){"string"==typeof e&&(e={message:e}),o(e).then(function(e){t(e||!0)},function(){t(!1)})},{show:i,alert:a,confirm:o}}]).service("PeersSelectService",["$rootScope","$modal",function(e,t){function n(n){var i=e.$new();return n&&angular.extend(i,n),t.open({templateUrl:templateUrl("peer_select"),controller:"PeerSelectController",scope:i,windowClass:"peer_select_window mobile_modal"}).result}return{selectPeer:n}}]).service("ContactsSelectService",["$rootScope","$modal",function(e,t){function n(n,i){i=i||{};var a=e.$new();return a.multiSelect=n,angular.extend(a,i),!a.action&&n&&(a.action="select"),t.open({templateUrl:templateUrl("contacts_modal"),controller:"ContactsModalController",scope:a,windowClass:"contacts_modal_window mobile_modal"}).result}return{selectContacts:function(e){return n(!0,e)},selectContact:function(e){return n(!1,e)}}}]).service("ChangelogNotifyService",["Storage","$rootScope","$modal",function(e,t,n){function i(e,t){"string"!=typeof e&&(e=""),"string"!=typeof t&&(t=""),e=e.replace(/^\s+|\s+$/g,"").split("."),t=t.replace(/^\s+|\s+$/g,"").split(".");var n,i=Math.max(e.length,t.length);for(n=0;i>n;n++)if(e[n]!=t[n])return e[n]>t[n]?1:-1;return 0}function a(){e.get("last_version").then(function(t){t!=Config.App.version&&(t&&o(t),e.set({last_version:Config.App.version}))})}function o(e){var a=t.$new();a.lastVersion=e,a.canShowVersion=function(t){return a.lastVersion===!1||void 0===a.lastVersion?!0:i(t,e)>=0},n.open({controller:"ChangelogModalController",templateUrl:templateUrl("changelog_modal"),scope:a,windowClass:"changelog_modal_window mobile_modal"})}return{checkUpdate:a,showChangelog:o}}]).service("HttpsMigrateService",["ErrorService","Storage",function(e,t){function n(){t.get("https_dismiss").then(function(n){(!n||tsNow()>n+432e5)&&e.confirm({type:"MIGRATE_TO_HTTPS"}).then(function(){var e;try{e=window.open("https://web.telegram.org","_blank")}catch(t){}e||(location="https://web.telegram.org")},function(){t.set({https_dismiss:tsNow()})})})}function i(){a||"http:"!=location.protocol||-1==Config.App.domains.indexOf(location.hostname)||(a=!0,setTimeout(n,12e4))}var a=!1;return{start:i,check:n}}]).service("LayoutSwitchService",["ErrorService","Storage","AppRuntimeManager","$window",function(e,t,n,i){function a(e){t.set({current_layout:e?"mobile":"desktop",layout_confirmed:{width:$(window).width(),mobile:e}}).then(function(){n.reload()})}function o(n){if(!l){var i=$(window).width();if(!(!n&&Config.Mobile&&800>=i)){var o=600>i;o!=Config.Mobile&&t.get("layout_confirmed").then(function(n){return n&&(n.mobile?i==n.width:i==n.width)?!1:(l=!0,void e.confirm({type:o?"SWITCH_MOBILE_VERSION":"SWITCH_DESKTOP_VERSION"}).then(function(){t.remove("layout_confirmed"),a(o)},function(){t.set({layout_confirmed:{width:i,mobile:Config.Mobile}}),l=!1}))})}}}function r(){s||Config.Navigator.mobile||(s=!0,o(),$(i).on("resize",o))}var s=!1,l=!1;return{start:r,switchLayout:a}}]),angular.module("myApp.controllers",["myApp.i18n"]).controller("AppWelcomeController",["$scope","$location","MtpApiManager","ErrorService","ChangelogNotifyService","LayoutSwitchService",function(e,t,n,i,a,o){n.getUserID().then(function(n){return n?void t.url("/im"):"http:"==location.protocol&&-1!=Config.App.domains.indexOf(location.hostname)?void(location="https://web.telegram.org"):void(e.showWelcome=!0)}),a.checkUpdate(),o.start()}]).controller("AppLoginController",["$scope","$rootScope","$location","$timeout","$modal","$modalStack","MtpApiManager","ErrorService","NotificationsManager","ChangelogNotifyService","IdleManager","LayoutSwitchService","_",function(e,t,n,i,a,o,r,s,l,c,d,u,p){function m(){var t=(navigator.language||"").toLowerCase(),n=Config.LangCountries[t],i=!Config.Navigator.mobile;if(h(-1==["en","en-us","en-uk"].indexOf(t)?void 0!==n?n:t.indexOf("-")>0?t.split("-")[1].toUpperCase():"US":"US"),i){var a=e.credentials.phone_country;r.invokeApi("help.getNearestDc",{},{dcID:2,createNetworker:!0}).then(function(t){a==e.credentials.phone_country&&h(t.country),t.nearest_dc!=t.this_dc&&r.getNetworker(t.nearest_dc,{createNetworker:!0})})}}function h(e){var t,n;for(t=0;t<Config.CountryCodes.length;t++)if(n=Config.CountryCodes[t],n[0]==e)return f({name:p(n[1]+"_raw"),code:n[2]});return f({name:p("country_select_modal_country_us_raw"),code:"+1"})}function f(t){b=t,e.credentials.phone_country!=t.code?e.credentials.phone_country=t.code:g(),e.$broadcast("country_selected")}function g(){var t,n,i,a=((e.credentials.phone_country||"")+(e.credentials.phone_number||"")).replace(/\D+/g,""),o=0,r=!1;if(a.length)if(b&&!a.indexOf(b.code.replace(/\D+/g,"")))r=b.name;else for(t=0;t<Config.CountryCodes.length;t++)for(n=2;n<Config.CountryCodes[t].length;n++)i=Config.CountryCodes[t][n].replace(/\D+/g,""),i.length>o&&!a.indexOf(i)&&(o=i.length,r=p(Config.CountryCodes[t][1]+"_raw"));e.credentials.phone_full=a,e.credentials.phone_country_name=r||p("login_controller_unknown_country_raw")}function _(e){r.setUserAuth(v.dcID,{expires:e.expires,id:e.user.id}),i.cancel(w),n.url("/im")}function y(){i.cancel(w),e.credentials.viaApp||(--e.callPending.remaining?w=i(y,1e3):(e.callPending.success=!1,r.invokeApi("auth.sendCall",{phone_number:e.credentials.phone_full,phone_code_hash:e.credentials.phone_code_hash},v).then(function(){e.callPending.success=!0})))}o.dismissAll(),d.start(),r.getUserID().then(function(e){return e?void n.url("/im"):void("http:"==location.protocol&&-1!=Config.App.domains.indexOf(location.hostname)&&(location="https://web.telegram.org/#/login"))});var v={dcID:2,createNetworker:!0},b=!1;e.credentials={phone_country:"",phone_country_name:"",phone_number:"",phone_full:""},e.progress={},e.callPending={},e.chooseCountry=function(){var e=a.open({templateUrl:templateUrl("country_select_modal"),controller:"CountrySelectModalController",windowClass:"countries_modal_window mobile_modal"});e.result.then(f)},e.$watch("credentials.phone_country",g),e.$watch("credentials.phone_number",g),m();var w;e.sendCode=function(){i.cancel(w),s.confirm({type:"LOGIN_PHONE_CORRECT",country_code:e.credentials.phone_country,phone_number:e.credentials.phone_number}).then(function(){e.progress.enabled=!0,onContentLoaded(function(){e.$broadcast("ui_height")});var n=tsNow();r.invokeApi("auth.sendCode",{phone_number:e.credentials.phone_full,sms_type:5,api_id:Config.App.id,api_hash:Config.App.hash},v).then(function(t){e.progress.enabled=!1,e.credentials.phone_code_hash=t.phone_code_hash,e.credentials.phone_occupied=t.phone_registered,e.credentials.viaApp="auth.sentAppCode"==t._,e.callPending.remaining=t.send_call_timeout||60,e.error={},y(),onContentLoaded(function(){e.$broadcast("ui_height")})},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}})["finally"](function(){(t.idle.isIDLE||tsNow()-n>6e4)&&l.notify({title:"Telegram",message:"Your authorization key was successfully generated! Open the app to log in.",tag:"auth_key"})})})},e.sendSms=function(){e.credentials.viaApp&&(delete e.credentials.viaApp,r.invokeApi("auth.sendSms",{phone_number:e.credentials.phone_full,phone_code_hash:e.credentials.phone_code_hash},v).then(y))},e.editPhone=function(){i.cancel(w),delete e.credentials.phone_code_hash,delete e.credentials.phone_unoccupied,delete e.credentials.phone_code_valid,delete e.credentials.viaApp,delete e.callPending.remaining,delete e.callPending.success},e.logIn=function(t){var n="auth.signIn",i={phone_number:e.credentials.phone_full,phone_code_hash:e.credentials.phone_code_hash,phone_code:e.credentials.phone_code};t&&(n="auth.signUp",angular.extend(i,{first_name:e.credentials.first_name,last_name:e.credentials.last_name})),e.progress.enabled=!0,r.invokeApi(n,i,v).then(_,function(t){if(e.progress.enabled=!1,400==t.code&&"PHONE_NUMBER_UNOCCUPIED"==t.type)return t.handled=!0,e.credentials.phone_code_valid=!0,void(e.credentials.phone_unoccupied=!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"},delete e.credentials.phone_code_valid,t.handled=!0}})},c.checkUpdate(),u.start()}]).controller("AppIMController",["$scope","$location","$routeParams","$modal","$rootScope","$modalStack","MtpApiManager","AppUsersManager","AppChatsManager","ContactsSelectService","ChangelogNotifyService","ErrorService","AppRuntimeManager","HttpsMigrateService","LayoutSwitchService",function(e,t,n,i,a,o,r,s,l,c,d,u,p,m,h){function f(){if(n.q){if(n.q!==g&&(e.search.query=g=n.q,e.search.messages=!0,void 0!==e.curDialog))return!1}else g=!1;e.curDialog={peer:n.p||!1,messageID:n.m||!1}}e.$on("$routeUpdate",f),e.$on("history_focus",function(n,i){o.dismissAll(),i.peerString==e.curDialog.peer&&i.messageID==e.curDialog.messageID?e.$broadcast(i.messageID?"ui_history_change_scroll":"ui_history_focus"):t.url("/im?p="+i.peerString+(i.messageID?"&m="+i.messageID:""))}),e.isLoggedIn=!0,e.isEmpty={},e.search={},e.historyFilter={mediaType:!1},e.historyPeer={},e.historyState={selectActions:!1,typing:[]},e.openSettings=function(){i.open({templateUrl:templateUrl("settings_modal"),controller:"SettingsModalController",windowClass:"settings_modal_window mobile_modal"})},e.openContacts=function(){c.selectContact().then(function(t){e.dialogSelect(s.getUserString(t))})},e.openGroup=function(){c.selectContacts({action:"new_group"}).then(function(t){if(1==t.length)e.dialogSelect(s.getUserString(t[0]));else if(t.length>1){var n=a.$new();n.userIDs=t,i.open({templateUrl:templateUrl("chat_create_modal"),controller:"ChatCreateModalController",scope:n,windowClass:"group_edit_modal_window mobile_modal"})}})},e.importContact=function(){s.openImportContact().then(function(e){e&&a.$broadcast("history_focus",{peerString:s.getUserString(e)})})},e.dialogSelect=function(e,t){var n={peerString:e};t&&(n.messageID=t),a.$broadcast("history_focus",n)},e.logOut=function(){u.confirm({type:"LOGOUT"}).then(function(){r.logOut().then(function(){location.hash="/login",p.reload()})})},e.showPeerInfo=function(){e.curDialog.peerID>0?s.openUser(e.curDialog.peerID):e.curDialog.peerID<0&&l.openChat(-e.curDialog.peerID)},e.toggleEdit=function(){e.$broadcast("history_edit_toggle")},e.selectedFlush=function(){e.$broadcast("history_edit_flush")},e.toggleMedia=function(t){e.$broadcast("history_media_toggle",t)},e.returnToRecent=function(){e.$broadcast("history_return_recent")},e.toggleSearch=function(){e.$broadcast("dialogs_search_toggle")},f();var g=!1;d.checkUpdate(),m.start(),h.start()}]).controller("AppImDialogsController",["$scope","$location","$q","$timeout","$routeParams","MtpApiManager","AppUsersManager","AppChatsManager","AppMessagesManager","AppPeersManager","PhonebookContactsService","ErrorService",function(e,t,n,i,a,o,r,s,l,c,d){function u(t){var a,r=e.search.messages&&e.search.query.length>0,s=++v;return i.cancel($),r?($=t?n.when():i(angular.noop,500),a=$.then(function(){return l.getSearch({_:"inputPeerEmpty"},e.search.query,{_:"inputMessagesFilterEmpty"},_)})):a=l.getDialogs(e.search.query,_),a.then(function(e){if(s!=v)return n.reject();if(r){var t=[];angular.forEach(e.history,function(e){var n=l.getMessage(e),i=l.getMessagePeer(n);t.push({peerID:i,top_message:e,unread_count:-1})}),e={count:e.count,dialogs:t}}return e},function(e){return 401==e.code&&(o.logOut()["finally"](function(){"http:"==location.protocol&&-1!=Config.App.domains.indexOf(location.hostname)?location="https://web.telegram.org/#/login":(location.hash="/login",AppRuntimeManager.reload())}),e.handled=!0),n.reject()})}function p(t){g=0,_=0,y=!1,b={},f=!1,u(t).then(function(t){e.dialogs=[],e.contacts=[],e.foundUsers=[],t.dialogs.length&&(g+=t.dialogs.length,_=t.dialogs[t.dialogs.length-1].top_message,y=null===t.count||g<t.count,angular.forEach(t.dialogs,function(t){b[t.peerID]=!0;var n=l.wrapForDialog(t.top_message,t.unread_count);e.dialogs.push(n)}),delete e.isEmpty.dialogs),e.$broadcast("ui_dialogs_change"),e.search.query?h():(l.getDialogs("",_,100),t.dialogs.length||(e.isEmpty.dialogs=!0,h()))})}function m(){f=!0;var t=++v;r.getContacts(e.search.query).then(function(n){t==v&&(e.contacts=[],angular.forEach(n,function(t){void 0===b[t]&&e.contacts.push({userID:t,user:r.getUser(t),peerString:r.getUserString(t)})}),n.length?delete e.isEmpty.contacts:e.search.query||(e.isEmpty.contacts=!0),e.$broadcast("ui_dialogs_append"))}),e.search.query&&e.search.query.length>=5&&i(function(){t==v&&o.invokeApi("contacts.search",{q:e.search.query,limit:10}).then(function(n){r.saveApiUsers(n.users),t==v&&(e.foundUsers=[],angular.forEach(n.results,function(t){var n=t.user_id;void 0===b[n]&&e.foundUsers.push({userID:n,user:r.getUser(n),peerString:r.getUserString(n)})}))},function(e){400==e.code&&(e.handled=!0)})},500)}function h(){return!f||y&&g?y||e.search.messages||!e.search.query&&e.dialogs.length?void u().then(function(t){t.dialogs.length&&(g+=t.dialogs.length,_=t.dialogs[t.dialogs.length-1].top_message,y=null===t.count||g<t.count,angular.forEach(t.dialogs,function(t){b[t.peerID]=!0,e.dialogs.push(l.wrapForDialog(t.top_message,t.unread_count))}),e.$broadcast("ui_dialogs_append"))}):void m():void 0}e.dialogs=[],e.contacts=[],e.foundUsers=[],e.contactsLoaded=!1,void 0===e.search&&(e.search={}),void 0===e.isEmpty&&(e.isEmpty={}),e.phonebookAvailable=d.isAvailable();var f,g=0,_=0,y=!1,v=0,b={};e.$on("dialogs_need_more",function(){h()}),e.$on("dialog_unread",function(t,n){angular.forEach(e.dialogs,function(e){e.peerID==n.peerID&&(e.unreadCount=n.count)})}),e.$on("dialogs_update",function(t,n){if(void 0!==e.search.query&&e.search.query.length)return!1;var i=!1;angular.forEach(e.dialogs,function(e,t){e.peerID==n.peerID&&(i=t)});var a=l.wrapForDialog(n.top_message,n.unread_count);if(i!==!1){var o=e.dialogs.splice(i,1);safeReplaceObject(o,a),g++}e.dialogs.unshift(a),b[n.peerID]||(b[n.peerID]=!0,f&&m())}),e.$on("dialog_flush",function(t,n){for(var i=0;i<e.dialogs.length;i++)if(e.dialogs[i].peerID==n.peerID){e.dialogs.splice(i,1);break}}),e.$on("history_delete",function(t,n){for(var i=0;i<e.dialogs.length;i++)if(e.dialogs[i].peerID==n.peerID){n.msgs[e.dialogs[i].id]&&(e.dialogs[i].deleted=!0);break}});var w=!1;e.$watchCollection("search",function(){e.search.messages!=w?(w=e.search.messages,e.dialogs=[],p(!0)):p(),!a.q||e.search.messages&&e.search.query==a.q||i(function(){t.url("/im"+(e.curDialog.peer?"?p="+e.curDialog.peer+(e.curDialog.messageID?"&m="+e.curDialog.messageID:""):""))})}),Config.Mobile&&e.$watch("curDialog.peer",function(){e.$broadcast("ui_dialogs_update")}),e.importPhonebook=function(){d.openPhonebookImport()},e.$on("contacts_update",function(){f&&m()}),e.searchClear=function(){e.search.query="",e.search.messages=!1,e.$broadcast("search_clear")},e.$on("ui_dialogs_search_clear",e.searchClear);var $}]).controller("AppImHistoryController",["$scope","$location","$timeout","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","AppMessagesManager","AppPeersManager","ApiUpdatesManager","PeersSelectService","IdleManager","StatusManager","ErrorService",function(e,t,n,i,a,o,r,s,l,c,d,u,p,m){function h(t,n){var a=t.peer||e.curDialog.peer||"";return D=l.getPeerID(a),D==e.curDialog.peerID&&n.messageID==t.messageID?!1:(i.selectedPeerID=D,e.curDialog.peerID=D,e.curDialog.inputPeer=l.getInputPeer(a),e.historyFilter.mediaType=!1,S(!0),void(n.peer&&n.peer==t.peer&&t.messageID?y():D?(_(!0),w()):k()))}function f(t){var n,i,a,o=-1,r=10;for(n=0;n<e.peerHistories.length;n++)if(e.peerHistories[n].peerID==t){o=n;break}return o>-1?i=e.peerHistories[o]:(i={peerID:t,messages:[]},e.peerHistories.unshift(i),a=e.peerHistories.length-r,a>0&&e.peerHistories.splice(r-1,a),i)}function g(t){var n;for(n=0;n<e.peerHistories.length;n++)if(e.peerHistories[n].peerID==t)return e.peerHistories[n];return!1}function _(t){var n=l.getPeer(D);return!n||n.deleted?(safeReplaceObject(e.state,{loaded:!1}),!1):(P=f(D),safeReplaceObject(e.historyPeer,{id:D,data:n,photo:l.getPeerPhoto(D,"User","Group")}),a.getUserID().then(function(t){e.ownPhoto=o.getUserPhoto(t,"User")}),void(t&&(e.historyState.typing.splice(0,e.historyState.typing.length),e.$broadcast("ui_peer_change"),e.$broadcast("ui_history_change"),safeReplaceObject(e.state,{loaded:!0,empty:!P.messages.length}))))}function y(){var t,n=!1,i=g();if(i)for(t=0;t<i.messages.length;t++)if(e.curDialog.messageID==i.messages[t].id){n=!0;break}n?(e.historyUnread={},e.$broadcast("messages_focus",e.curDialog.messageID),e.$broadcast("ui_history_change_scroll")):w()}function v(){if(L){if(H)return void(W=!0);W=!1,z=!0;var t=F,n=++V,i=0,a=20;s.getHistory(e.curDialog.inputPeer,U,i,a).then(function(i){if(z=!1,t==F&&n==V){var o,r;for(o=i.history.length-1;o>=0;o--)r=i.history[o],r>U&&P.messages.push(s.wrapForHistory(r));i.history.length?(U=i.history.length>=a?i.history[0]:0,s.regroupWrappedHistory(P.messages,-a)&&e.$broadcast("messages_regroup"),delete e.state.empty,e.$broadcast("ui_history_append")):U=0,e.skippedHistory=L=U>0,j&&b()}})}}function b(){if(N){if(z)return void(j=!0);j=!1,H=!0;var t=F,n=q,i=e.historyFilter.mediaType&&{_:R[e.historyFilter.mediaType]},a=Config.Mobile?20:0,o=i?s.getSearch(e.curDialog.inputPeer,"",i,O,a):s.getHistory(e.curDialog.inputPeer,O,a);o.then(function(i){H=!1,t==F&&n==q&&(angular.forEach(i.history,function(e){P.messages.unshift(s.wrapForHistory(e))}),N=null===i.count||i.history.length&&P.messages.length<i.count,i.history.length&&(delete e.state.empty,O=i.history[i.history.length-1],e.$broadcast("ui_history_prepend"),s.regroupWrappedHistory(P.messages,i.history.length+1)&&e.$broadcast("messages_regroup")),W&&v())})}}function w(t){e.missedCount=0,N=!1,e.skippedHistory=L=!1,O=0,U=0,P=f(D);var n=0,i=0;e.curDialog.messageID?(O=parseInt(e.curDialog.messageID),n=10,i=10):t&&(n=10),H=!1,j=!1,z=!1,W=!1;var a=P.messages.length;a&&(O||i)&&(a=0,P.messages=[]);var o=++F,r=e.historyFilter.mediaType&&{_:R[e.historyFilter.mediaType]},l=r?s.getSearch(e.curDialog.inputPeer,"",r,O):s.getHistory(e.curDialog.inputPeer,O,n,i,a);e.state.mayBeHasMore=!0,l.then(function(t){if(o==F){var n=t.history.length;U=t.unreadSkip||O&&t.history.indexOf(O)>=i-1?t.history[0]:0,O=t.history[t.history.length-1],e.skippedHistory=L=U>0,N=null===t.count||n&&n<t.count,_(),safeReplaceObject(e.state,{loaded:!0,empty:!n}),P.messages=[],angular.forEach(t.history,function(n){var i=s.wrapForHistory(n);e.skippedHistory&&delete i.unread,t.unreadOffset&&(i.unreadAfter=!0),P.messages.push(i)}),P.messages.reverse(),s.regroupWrappedHistory(P.messages)&&e.$broadcast("messages_regroup"),t.unreadOffset?e.historyUnreadAfter=t.history[t.unreadOffset-1]:e.historyUnreadAfter&&delete e.historyUnreadAfter,e.$broadcast("messages_unread_after"),onContentLoaded(function(){e.$broadcast("messages_focus",e.curDialog.messageID||0)}),e.$broadcast("ui_history_change"),s.readHistory(e.curDialog.inputPeer)}},function(){safeReplaceObject(e.state,{error:!0})})}function k(){safeReplaceObject(e.state,{notSelected:!0}),P=!1,N=!1,e.$broadcast("ui_history_change")}function C(t,n){var i=n.target,a=n.shiftKey;if(a&&e.$broadcast("ui_selection_clear"),!e.historyState.selectActions&&!$(i).hasClass("icon-select-tick")&&!$(i).hasClass("im_content_message_select_area"))return!1;if(e.selectedMsgs[t])B=!1,delete e.selectedMsgs[t],e.selectedCount--,e.selectedCount||(e.historyState.selectActions=!1,e.$broadcast("ui_panel_update"));else{if(a){if(B!=t){var o,r,s,l=B>t;for(o=0;o<P.messages.length;o++)if(P.messages[o].id==B){r=o;break}for(o=r;P.messages[o]&&(s=P.messages[o].id)!=t;)e.selectedMsgs[s]||(e.selectedMsgs[s]=!0,e.selectedCount++),o+=l?-1:1}}else B=t;e.selectedMsgs[t]=!0,e.selectedCount++,e.historyState.selectActions||(e.historyState.selectActions=!0,e.$broadcast("ui_panel_update"))}e.$broadcast("messages_select")}function S(t){e.selectedMsgs={},e.selectedCount=0,e.historyState.selectActions=!1,B=!1,t||e.$broadcast("ui_panel_update"),e.$broadcast("messages_select")}function M(){m.confirm({type:"HISTORY_FLUSH"}).then(function(){s.flushHistory(e.curDialog.inputPeer).then(function(){S()})})}function x(){if(e.selectedCount>0){var t=[];angular.forEach(e.selectedMsgs,function(e,n){t.push(n)}),s.deleteMessages(t).then(function(){S()})}}function A(){if(e.selectedCount>0){var t=[];angular.forEach(e.selectedMsgs,function(e,n){t.push(n)}),d.selectPeer({confirm_type:"FORWARD_PEER"}).then(function(e){var n=l.getPeerID(e);s.forwardMessages(n,t).then(function(){S(),i.$broadcast("history_focus",{peerString:e})})})}}function T(){e.historyState.selectActions?S():(e.historyState.selectActions=!0,e.$broadcast("ui_panel_update"))}function E(t){e.historyFilter.mediaType=t||!1,P.messages=[],e.state.empty=!0,w()}function I(){e.historyFilter.mediaType?E():e.curDialog.messageID?i.$broadcast("history_focus",{peerString:e.curDialog.peer}):w(!0)}e.$watch("curDialog",h),c.attach(),u.start(),p.start(),e.peerHistories=[],e.skippedHistory=!1,e.selectedMsgs={},e.selectedCount=0,e.historyState.selectActions=!1,e.missedCount=0,e.state={},e.toggleMessage=C,e.selectedDelete=x,e.selectedForward=A,e.selectedCancel=S,e.selectedFlush=M,e.toggleEdit=T,e.toggleMedia=E,e.returnToRecent=I,e.$on("history_edit_toggle",T),e.$on("history_edit_flush",M),e.$on("history_media_toggle",function(e,t){E(t)}),e.$on("history_return_recent",I);var D,P=!1,N=!1,L=!1,O=0,U=0,B=!1,R={photos:"inputMessagesFilterPhotos",video:"inputMessagesFilterVideo",documents:"inputMessagesFilterDocument",audio:"inputMessagesFilterAudio"},F=0,q=0,H=!1,j=!1,V=0,z=!1,W=!1;e.$on("history_update",angular.noop);var G={};e.$on("history_append",function(t,a){var o=g(a.peerID);if(o){var r=a.peerID==e.curDialog.peerID;if(r){if(e.historyFilter.mediaType||e.skippedHistory)return void(a.my?I():e.missedCount++);delete e.state.empty}o.messages.push(s.wrapForHistory(a.messageID)),s.regroupWrappedHistory(o.messages,-3)&&e.$broadcast("messages_regroup"),r&&(e.historyState.typing.splice(0,e.historyState.typing.length),e.$broadcast("ui_history_append_new",{my:a.my}),a.my&&e.historyUnreadAfter&&(delete e.historyUnreadAfter,e.$broadcast("messages_unread_after")),i.idle.isIDLE||n(function(){s.readHistory(e.curDialog.inputPeer)}))}}),e.$on("history_delete",function(t,n){var i=g(n.peerID);if(i){var a,o=[];for(a=0;a<i.messages.length;a++)n.msgs[i.messages[a].id]||o.push(i.messages[a]);i.messages=o,s.regroupWrappedHistory(i.messages),e.$broadcast("messages_regroup"),n.peerID==e.curDialog.peerID&&(e.state.empty=!o.length)}}),e.$on("dialog_flush",function(t,n){var i=g(n.peerID);i&&(i.messages=[],n.peerID==e.curDialog.peerID&&(e.state.empty=!0))}),e.$on("history_focus",function(){e.historyFilter.mediaType&&E()}),e.$on("apiUpdate",function(t,i){switch(i._){case"updateUserTyping":case"updateChatUserTyping":o.forceUserOnline(i.user_id),o.hasUser(i.user_id)&&e.curDialog.peerID==("updateUserTyping"==i._?i.user_id:-i.chat_id)&&(-1==e.historyState.typing.indexOf(i.user_id)&&e.historyState.typing.push(i.user_id),n.cancel(G[i.user_id]),G[i.user_id]=n(function(){var t=e.historyState.typing.indexOf(i.user_id);-1!==t&&e.historyState.typing.splice(t,1)},6e3))}}),e.$on("history_need_less",v),e.$on("history_need_more",b),i.$watch("idle.isIDLE",function(t){t||!e.curDialog||!e.curDialog.peerID||e.historyFilter.mediaType||e.skippedHistory||s.readHistory(e.curDialog.inputPeer)})}]).controller("AppImPanelController",["$scope",function(e){e.$on("user_update",angular.noop)}]).controller("AppImSendController",["$scope","$timeout","MtpApiManager","Storage","AppPeersManager","AppMessagesManager","ApiUpdatesManager","MtpApiFileManager",function(e,t,n,i,a,o){function r(n){return e.$broadcast("ui_message_before_send"),t(function(){var t=e.draftMessage.text;if(angular.isString(t)&&t.length>0){t=t.replace(/:([a-z0-9\-\+\*_]+?):/gi,function(e,t){var n=$.emojiarea.reverseIcons[t];return void 0!==n?n:e});var n=0;do!function(e,t,n){setTimeout(function(){o.sendText(e,t)},n)}(e.curDialog.peerID,t.substr(0,4096),n),t=t.substr(4096),n+=100;while(t.length)}s(),e.$broadcast("ui_message_send")}),cancelEvent(n)}function s(t){t?i.get("draft"+e.curDialog.peerID).then(function(t){e.draftMessage.text=t||"",e.$broadcast("ui_peer_draft")}):(e.draftMessage.text="",e.$broadcast("ui_peer_draft"))}function l(t){if(t&&t.length){e.historyFilter.mediaType||e.skippedHistory||o.readHistory(e.curDialog.inputPeer);var n={};n["draft"+e.curDialog.peerID]=t,i.set(n)}else i.remove("draft"+e.curDialog.peerID)}function c(){n.invokeApi("messages.setTyping",{peer:e.curDialog.inputPeer,action:{_:"sendMessageTypingAction"}})}function d(t){if(angular.isArray(t)&&t.length)for(var n=0;n<t.length;n++)o.sendFile(e.curDialog.peerID,t[n],{isMedia:e.draftMessage.isMedia}),e.$broadcast("ui_message_send")}e.$watch("curDialog.peer",s),e.$on("user_update",angular.noop),e.$on("ui_typing",c),e.draftMessage={text:"",send:r},e.$watch("draftMessage.text",l),e.$watch("draftMessage.files",d)}]).controller("AppLangSelectController",["$scope","_","Storage","ErrorService","AppRuntimeManager",function(e,t,n,i,a){e.supportedLocales=Config.I18n.supported,e.langNames=Config.I18n.languages,e.curLocale=Config.I18n.locale,e.form={locale:Config.I18n.locale},e.localeSelect=function(t){t=t||e.form.locale,e.curLocale!==t&&i.confirm({type:"APPLY_LANG_WITH_RELOAD"}).then(function(){n.set({i18n_locale:t}).then(function(){a.reload()})},function(){e.form.locale=e.curLocale})}}]).controller("AppFooterController",["$scope","LayoutSwitchService",function(e,t){e.switchLayout=function(e){t.switchLayout(e)}}]).controller("PhotoModalController",["$q","$scope","$rootScope","$modalInstance","AppPhotosManager","AppMessagesManager","AppPeersManager","PeersSelectService","ErrorService",function(e,t,n,i,a,o,r,s,l){function c(n){var i=_.indexOf(t.messageID),r=i>=0?i+n:0,s=++w,l=r>=_.length?u():e.when();l.then(function(){if(s==w){var e=_[r],i=o.getMessage(e);if(!(i&&i.media&&i.media.photo&&i.media.photo.id))return void console.error("Invalid photo message",r,_,e,i);t.messageID=e,t.photoID=i.media.photo.id,t.photo=a.wrapForFull(t.photoID),y[t.messageID]=!0,p(),n>0&&b&&_.indexOf(e)+1>=_.length?u():d(n)}})}function d(e){var n=0>e?[-1,-2]:[1,2],i=_.indexOf(t.messageID);angular.forEach(n,function(e){var t=_[i+e];if(void 0!==t&&void 0===y[t]){y[t]=!0;var n=o.getMessage(t),r=n.media.photo.id;a.preloadPhoto(r)}})}function u(){return $?$:$=o.getSearch(h,f,g,v).then(function(t){return t.history.length?(v=t.history[t.history.length-1],_=_.concat(t.history),b=_.length<t.count):b=!1,p(t.count),$=!1,t.history.length?e.reject():void d(1)})}function p(e){var n=_.indexOf(t.messageID);b?e&&(t.count=Math.max(e,_.length)):t.count=_.length,t.pos=t.count-n,t.nav.hasNext=n>0,t.nav.hasPrev=b||n<_.length-1,t.canForward=t.canDelete=t.messageID>0}if(t.photo=a.wrapForFull(t.photoID),t.nav={},t.download=function(){a.downloadPhoto(t.photoID)},t.messageID){t.forward=function(){var e=t.messageID;s.selectPeer({confirm_type:"FORWARD_PEER"}).then(function(t){var i=r.getPeerID(t);o.forwardMessages(i,[e]).then(function(){n.$broadcast("history_focus",{peerString:t})})})},t.goToMessage=function(){var e=t.messageID,a=o.getMessagePeer(o.getMessage(e)),s=r.getPeerString(a);i.dismiss(),n.$broadcast("history_focus",{peerString:s,messageID:e})},t["delete"]=function(){var e=t.messageID;l.confirm({type:"MESSAGE_DELETE"}).then(function(){o.deleteMessages([e])})};var m=o.getMessagePeer(o.getMessage(t.messageID)),h=r.getInputPeerByID(m),f="",g={_:"inputMessagesFilterPhotos"},_=[t.messageID],y={},v=t.messageID,b=!0;y[t.messageID]=!0,p(),o.getSearch(h,f,g,0,1e3).then(function(e){e.history.indexOf(t.messageID)>=0&&(_=e.history,v=_[_.length-1],p(),d(1)),u()},u);var w=0,$=!1;t.nav.next=function(){return t.nav.hasNext?void c(-1):!1},t.nav.prev=function(){return t.nav.hasPrev?void c(1):!1},t.$on("history_delete",function(e,n){if(n.peerID==m){if(n.msgs[t.messageID])if(t.nav.hasNext)t.nav.next();else{if(!t.nav.hasPrev)return i.dismiss();t.nav.prev()}for(var a=[],o=0;o<_.length;o++)n.msgs[_[o]]||a.push(_[o]);_=a}})}}]).controller("UserpicModalController",["$q","$scope","$rootScope","$modalInstance","AppPhotosManager","AppUsersManager","AppPeersManager","AppMessagesManager","PeersSelectService","ErrorService",function(e,t,n,i,a,o,r,s,l,c){function d(n){var i=h.indexOf(t.photoID),o=i>=0?i+n:0,r=++_,s=o>=h.length?u():e.when();s.then(function(){r==_&&(t.photoID=h[o],t.photo=a.wrapForFull(t.photoID),p())})}function u(){return y?y:y=a.getUserPhotos(m,f).then(function(e){f=e.photos[e.photos.length-1],h=h.concat(e.photos),g=h.length<e.count,p(),y=!1},function(){y=!1})}function p(){var e=h.indexOf(t.photoID);t.nav.hasNext=e>0,t.nav.hasPrev=g||e<h.length-1}t.photo=a.wrapForFull(t.photoID),t.nav={},t.canForward=!0;var m=o.getUserInput(t.userID),h=[t.photoID],f=t.photoID,g=!0;p(),a.getUserPhotos(m,0,1e3).then(function(e){e.photos.indexOf(t.photoID)>=0&&(h=e.photos,f=h[h.length-1],g=h.length<e.count,p())});var _=0,y=!1;t.nav.next=function(){return t.nav.hasNext?void d(-1):!1},t.nav.prev=function(){return t.nav.hasPrev?void d(1):!1},t.forward=function(){t.photoID;l.selectPeer({confirm_type:"FORWARD_PEER"}).then(function(e){var i=r.getPeerID(e);s.sendOther(i,{_:"inputMediaPhoto",id:{_:"inputPhoto",id:t.photoID,access_hash:t.photo.access_hash}}),n.$broadcast("history_focus",{peerString:e})})},t["delete"]=function(){var e=t.photoID;c.confirm({type:"MESSAGE_DELETE"}).then(function(){s.deleteMessages([e])})},t.download=function(){a.downloadPhoto(t.photoID)}}]).controller("VideoModalController",["$scope","$rootScope","$modalInstance","PeersSelectService","AppMessagesManager","AppVideoManager","AppPeersManager","ErrorService",function(e,t,n,i,a,o,r,s){e.video=o.wrapForFull(e.videoID),e.progress={enabled:!1},e.player={},e.forward=function(){var n=e.messageID;i.selectPeer({confirm_type:"FORWARD_PEER"}).then(function(e){var i=r.getPeerID(e);a.forwardMessages(i,[n]).then(function(){t.$broadcast("history_focus",{peerString:e})})})},e["delete"]=function(){var t=e.messageID;s.confirm({type:"MESSAGE_DELETE"}).then(function(){a.deleteMessages([t])})},e.download=function(){o.saveVideoFile(e.videoID)},e.$on("history_delete",function(t,i){i.msgs[e.messageID]&&n.dismiss()})}]).controller("DocumentModalController",["$scope","$rootScope","$modalInstance","PeersSelectService","AppMessagesManager","AppDocsManager","AppPeersManager","ErrorService",function(e,t,n,i,a,o,r,s){e.document=o.wrapForHistory(e.docID),e.forward=function(){var n=e.messageID;i.selectPeer({confirm_type:"FORWARD_PEER"}).then(function(e){var i=r.getPeerID(e);a.forwardMessages(i,[n]).then(function(){t.$broadcast("history_focus",{peerString:e})})})},e["delete"]=function(){var t=e.messageID;s.confirm({type:"MESSAGE_DELETE"}).then(function(){a.deleteMessages([t])})},e.download=function(){o.saveDocFile(e.docID)},e.$on("history_delete",function(t,i){i.msgs[e.messageID]&&n.dismiss()})}]).controller("UserModalController",["$scope","$location","$rootScope","$modal","AppUsersManager","MtpApiManager","NotificationsManager","AppPhotosManager","AppMessagesManager","AppPeersManager","PeersSelectService","ErrorService",function(e,t,n,i,a,o,r,s,l,c,d,u){var p=a.getUserString(e.userID); |
|
|
e.user=a.getUser(e.userID),e.userPhoto=a.getUserPhoto(e.userID,"User"),e.blocked=!1,e.settings={notifications:!0},o.invokeApi("users.getFullUser",{id:a.getUserInput(e.userID)}).then(function(t){e.override&&!t.user.phone?(t.user.phone=e.override.phone_number,t.user.first_name=e.override.first_name,t.user.last_name=e.override.last_name,a.saveApiUser(t.user)):a.saveApiUser(t.user,!0),s.savePhoto(t.profile_photo),"photoEmpty"!=t.profile_photo._&&(e.userPhoto.id=t.profile_photo.id),e.blocked=t.blocked,r.savePeerSettings(e.userID,t.notify_settings),r.getPeerMuted(e.userID).then(function(t){e.settings.notifications=!t,e.$watch("settings.notifications",function(t,n){return t===n?!1:void r.getPeerSettings(e.userID).then(function(n){n.mute_until=t?0:2e9,r.updatePeerSettings(e.userID,n)})})})}),e.goToHistory=function(){n.$broadcast("history_focus",{peerString:p})},e.flushHistory=function(){u.confirm({type:"HISTORY_FLUSH"}).then(function(){l.flushHistory(c.getInputPeerByID(e.userID)).then(function(){e.goToHistory()})})},e.importContact=function(t){var o=n.$new();o.importContact={phone:e.user.phone,first_name:e.user.first_name,last_name:e.user.last_name},i.open({templateUrl:templateUrl(t?"edit_contact_modal":"import_contact_modal"),controller:"ImportContactModalController",windowClass:"import_contact_modal_window mobile_modal",scope:o}).result.then(function(t){e.userID==t&&(e.user=a.getUser(e.userID))})},e.deleteContact=function(){a.deleteContacts([e.userID]).then(function(){e.user=a.getUser(e.userID)})},e.toggleBlock=function(t){o.invokeApi(t?"contacts.block":"contacts.unblock",{id:a.getUserInput(e.userID)}).then(function(){e.blocked=t})},e.shareContact=function(){d.selectPeer({confirm_type:"SHARE_CONTACT_PEER"}).then(function(t){var i=c.getPeerID(t);l.sendOther(i,{_:"inputMediaContact",phone_number:e.user.phone,first_name:e.user.first_name,last_name:e.user.last_name,user_id:e.user.id}),n.$broadcast("history_focus",{peerString:t})})}}]).controller("ChatModalController",["$scope","$timeout","$rootScope","$modal","AppUsersManager","AppChatsManager","MtpApiManager","MtpApiFileManager","NotificationsManager","AppMessagesManager","AppPeersManager","ApiUpdatesManager","ContactsSelectService","ErrorService",function(e,t,n,i,a,o,r,s,l,c,d,u,p,m){function h(t){u.processUpdateMessage({_:"updates",users:t.users,chats:t.chats,seq:t.seq,updates:[{_:"updateNewMessage",message:t.message,pts:t.pts}]}),n.$broadcast("history_focus",{peerString:e.chatFull.peerString})}function f(t){t&&t.type&&0===t.type.indexOf("image")&&(e.photo.updating=!0,s.uploadFile(t).then(function(t){return r.invokeApi("messages.editChatPhoto",{chat_id:e.chatID,photo:{_:"inputChatUploadedPhoto",file:t,crop:{_:"inputPhotoCropAuto"}}}).then(function(e){h(e)})})["finally"](function(){e.photo.updating=!1}))}e.chatFull=o.wrapForFull(e.chatID,{}),r.invokeApi("messages.getFullChat",{chat_id:e.chatID}).then(function(t){o.saveApiChats(t.chats),a.saveApiUsers(t.users),e.chatFull=o.wrapForFull(e.chatID,t.full_chat),e.$broadcast("ui_height")}),e.settings={notifications:!0},l.getPeerMuted(-e.chatID).then(function(t){e.settings.notifications=!t,e.$watch("settings.notifications",function(t,n){return t===n?!1:void l.getPeerSettings(-e.chatID).then(function(n){n.mute_until=t?0:2e9,l.updatePeerSettings(-e.chatID,n)})})}),e.leaveGroup=function(){r.invokeApi("messages.deleteChatUser",{chat_id:e.chatID,user_id:{_:"inputUserSelf"}}).then(h)},e.returnToGroup=function(){r.invokeApi("messages.addChatUser",{chat_id:e.chatID,user_id:{_:"inputUserSelf"}}).then(h)},e.inviteToGroup=function(){var t=[];angular.forEach(e.chatFull.participants.participants,function(e){t.push(e.user_id)}),p.selectContacts({disabled:t}).then(function(t){angular.forEach(t,function(t){r.invokeApi("messages.addChatUser",{chat_id:e.chatID,user_id:{_:"inputUserContact",user_id:t},fwd_limit:100}).then(function(e){u.processUpdateMessage({_:"updates",seq:e.seq,users:e.users,chats:e.chats,updates:[{_:"updateNewMessage",message:e.message,pts:e.pts}]})})}),n.$broadcast("history_focus",{peerString:e.chatFull.peerString})})},e.kickFromGroup=function(t){var n=a.getUser(t);r.invokeApi("messages.deleteChatUser",{chat_id:e.chatID,user_id:{_:"inputUserForeign",user_id:t,access_hash:n.access_hash||"0"}}).then(h)},e.flushHistory=function(){m.confirm({type:"HISTORY_FLUSH"}).then(function(){c.flushHistory(d.getInputPeerByID(-e.chatID)).then(function(){n.$broadcast("history_focus",{peerString:e.chatFull.peerString})})})},e.photo={},e.$watch("photo.file",f),e.deletePhoto=function(){e.photo.updating=!0,r.invokeApi("messages.editChatPhoto",{chat_id:e.chatID,photo:{_:"inputChatPhotoEmpty"}}).then(function(e){h(e)})["finally"](function(){e.photo.updating=!1})},e.editTitle=function(){var t=n.$new();t.chatID=e.chatID,i.open({templateUrl:templateUrl("chat_edit_modal"),controller:"ChatEditModalController",scope:t,windowClass:"group_edit_modal_window mobile_modal"})}}]).controller("SettingsModalController",["$rootScope","$scope","$timeout","$modal","AppUsersManager","AppChatsManager","AppPhotosManager","MtpApiManager","Storage","NotificationsManager","MtpApiFileManager","ApiUpdatesManager","ChangelogNotifyService","ErrorService","_",function(e,t,n,i,a,o,r,s,l,c,d,u,p,m){function h(e){e&&e.type&&0===e.type.indexOf("image")&&(t.photo.updating=!0,d.uploadFile(e).then(function(e){s.invokeApi("photos.uploadProfilePhoto",{file:e,caption:"",geo_point:{_:"inputGeoPointEmpty"},crop:{_:"inputPhotoCropAuto"}}).then(function(e){a.saveApiUsers(e.users),s.getUserID().then(function(e){u.processUpdateMessage({_:"updateShort",update:{_:"updateUserPhoto",user_id:e,date:tsNow(!0),photo:a.getUser(e).photo,previous:!0}}),t.photo=a.getUserPhoto(e,"User")})})})["finally"](function(){delete t.updating}))}t.profile={},t.photo={},t.version=Config.App.version,s.getUserID().then(function(e){t.profile=a.getUser(e),t.photo=a.getUserPhoto(e,"User")}),s.invokeApi("users.getFullUser",{id:{_:"inputUserSelf"}}).then(function(e){a.saveApiUser(e.user),r.savePhoto(e.profile_photo),"photoEmpty"!=e.profile_photo._&&(t.photo.id=e.profile_photo.id)}),t.notify={volume:.5},t.send={},t.$watch("photo.file",h),t.deletePhoto=function(){t.photo.updating=!0,s.invokeApi("photos.updateProfilePhoto",{id:{_:"inputPhotoEmpty"},crop:{_:"inputPhotoCropAuto"}}).then(function(e){s.getUserID().then(function(n){u.processUpdateMessage({_:"updateShort",update:{_:"updateUserPhoto",user_id:n,date:tsNow(!0),photo:e,previous:!0}}),t.photo=a.getUserPhoto(n,"User")})})["finally"](function(){delete t.photo.updating})},t.editProfile=function(){i.open({templateUrl:templateUrl("profile_edit_modal"),controller:"ProfileEditModalController",windowClass:"profile_edit_modal_window mobile_modal"})},t.changeUsername=function(){i.open({templateUrl:templateUrl("username_edit_modal"),controller:"UsernameEditModalController",windowClass:"username_edit_modal_window mobile_modal"})},t.terminateSessions=function(){m.confirm({type:"TERMINATE_SESSIONS"}).then(function(){s.invokeApi("auth.resetAuthorizations",{})})},l.get("notify_nodesktop","notify_nosound","send_ctrlenter","notify_volume","notify_novibrate").then(function(i){t.notify.desktop=!i[0],t.send.enter=i[2]?"":"1",t.notify.volume=i[1]?0:i[3]!==!1?i[3]>0&&i[3]<=1?i[3]:0:.5,t.notify.canVibrate=c.getVibrateSupport(),t.notify.vibrate=!i[4],t.notify.volumeOf4=function(){return 1+Math.ceil((t.notify.volume-.1)/.33)},t.toggleSound=function(){t.notify.volume=t.notify.volume?0:.5};var a;t.$watch("notify.volume",function(e,t){e!==t&&(l.set({notify_volume:e}),l.remove("notify_nosound"),c.clear(),a&&n.cancel(a),a=n(function(){c.testSound(e)},500))}),t.toggleDesktop=function(){t.notify.desktop=!t.notify.desktop,t.notify.desktop?l.remove("notify_nodesktop"):l.set({notify_nodesktop:!0})},t.toggleVibrate=function(){t.notify.vibrate=!t.notify.vibrate,t.notify.vibrate?l.remove("notify_novibrate"):l.set({notify_novibrate:!0})},t.toggleCtrlEnter=function(n){t.send.enter=n,t.send.enter?l.remove("send_ctrlenter"):l.set({send_ctrlenter:!0}),e.$broadcast("settings_changed")}}),t.openChangelog=function(){p.showChangelog(!1)}}]).controller("ChangelogModalController",["$scope","$modal",function(e,t){e.changeUsername=function(){t.open({templateUrl:templateUrl("username_edit_modal"),controller:"UsernameEditModalController",windowClass:"username_edit_modal_window mobile_modal"})}}]).controller("ProfileEditModalController",["$scope","$modalInstance","AppUsersManager","MtpApiManager",function(e,t,n,i){e.profile={},e.error={},i.getUserID().then(function(t){e.profile=n.getUser(t)}),e.updateProfile=function(){e.profile.updating=!0,i.invokeApi("account.updateProfile",{first_name:e.profile.first_name||"",last_name:e.profile.last_name||""}).then(function(i){e.error={},n.saveApiUser(i),t.close()},function(n){switch(n.type){case"FIRSTNAME_INVALID":e.error={field:"first_name"},n.handled=!0;break;case"LASTNAME_INVALID":e.error={field:"last_name"},n.handled=!0;break;case"NAME_NOT_MODIFIED":n.handled=!0,t.close()}})["finally"](function(){delete e.profile.updating})}}]).controller("UsernameEditModalController",["$scope","$modalInstance","AppUsersManager","MtpApiManager",function(e,t,n,i){e.profile={},e.error={},i.getUserID().then(function(t){e.profile=angular.copy(n.getUser(t))}),e.updateUsername=function(){e.profile.updating=!0,i.invokeApi("account.updateUsername",{username:e.profile.username||""}).then(function(i){e.checked={},n.saveApiUser(i),t.close()},function(e){"USERNAME_NOT_MODIFIED"==e.type&&(e.handled=!0,t.close())})["finally"](function(){delete e.profile.updating})},e.$watch("profile.username",function(t){return t.length?void i.invokeApi("account.checkUsername",{username:t||""}).then(function(n){e.profile.username==t&&(e.checked=n?{success:!0}:{error:!0})},function(n){if(e.profile.username==t)switch(n.type){case"USERNAME_INVALID":e.checked={error:!0},n.handled=!0}}):void(e.checked={})})}]).controller("ContactsModalController",["$scope","$timeout","$modal","$modalInstance","MtpApiManager","AppUsersManager","ErrorService",function(e,t,n,i,a,o){function r(){e.selectedContacts={},e.selectedCount=0}function s(n){var i=++l,r=[];o.getContacts(n).then(function(t){i==l&&(e.contacts=[],e.slice.limit=20,angular.forEach(t,function(t){var n={userID:t,user:o.getUser(t),userPhoto:o.getUserPhoto(t,"User")};r.push(t),e.contacts.push(n)}),e.contactsEmpty=n?!1:!e.contacts.length,e.$broadcast("contacts_change"))}),n&&n.length>=5&&t(function(){i==l&&a.invokeApi("contacts.search",{q:n,limit:10}).then(function(t){o.saveApiUsers(t.users),i==l&&angular.forEach(t.results,function(t){var n=t.user_id;-1==r.indexOf(n)&&e.contacts.push({userID:n,user:o.getUser(n),peerString:o.getUserString(n),found:!0})})},function(e){400==e.code&&(e.handled=!0)})},500)}e.contacts=[],e.foundUsers=[],e.search={},e.slice={limit:20,limitDelta:20};var l=0;if(r(),e.disabledContacts={},e.disabled)for(var c=0;c<e.disabled.length;c++)e.disabledContacts[e.disabled[c]]=!0;if(e.selected)for(var c=0;c<e.selected.length;c++)e.selectedContacts[e.selected[c]]||(e.selectedContacts[e.selected[c]]=!0,e.selectedCount++);e.$watch("search.query",s),e.$on("contacts_update",function(){s(e.search&&e.search.query||"")}),e.toggleEdit=function(t){e.action=t?"edit":"",e.multiSelect=t,r()},e.contactSelect=function(t){return e.disabledContacts[t]?!1:e.multiSelect?void(e.selectedContacts[t]?(delete e.selectedContacts[t],e.selectedCount--):(e.selectedContacts[t]=!0,e.selectedCount++)):i.close(t)},e.submitSelected=function(){if(e.selectedCount>0){var t=[];return angular.forEach(e.selectedContacts,function(e,n){t.push(n)}),i.close(t)}},e.deleteSelected=function(){if(e.selectedCount>0){var t=[];angular.forEach(e.selectedContacts,function(e,n){t.push(n)}),o.deleteContacts(t).then(function(){e.toggleEdit(!1)})}},e.importContact=function(){o.openImportContact()}}]).controller("PeerSelectController",["$scope","$modalInstance","$q","AppPeersManager","ErrorService",function(e,t,n,i,a){e.dialogSelect=function(o){var r;if(e.confirm_type){var s=i.getPeerID(o),l=i.getPeer(s);r=a.confirm({type:e.confirm_type,peer_id:s,peer_data:l})}else r=n.when();r.then(function(){t.close(o)})},e.toggleSearch=function(){e.$broadcast("dialogs_search_toggle")}}]).controller("ChatCreateModalController",["$scope","$modalInstance","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","ApiUpdatesManager",function(e,t,n,i,a,o,r){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})}),i.invokeApi("messages.createChat",{title:e.group.name,users:t}).then(function(e){r.processUpdateMessage({_:"updates",seq:e.seq,users:e.users,chats:e.chats,updates:[{_:"updateNewMessage",message:e.message,pts:e.pts}]});var t=o.getChatString(e.message.to_id.chat_id);n.$broadcast("history_focus",{peerString:t})})["finally"](function(){delete e.group.creating})}}}]).controller("ChatEditModalController",["$scope","$modalInstance","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","ApiUpdatesManager",function(e,t,n,i,a,o,r){var s=o.getChat(e.chatID);e.group={name:s.title},e.updateGroup=function(){return e.group.name?e.group.name==s.title?t.close():(e.group.updating=!0,i.invokeApi("messages.editChatTitle",{chat_id:e.chatID,title:e.group.name}).then(function(t){r.processUpdateMessage({_:"updates",seq:t.seq,users:t.users,chats:t.chats,updates:[{_:"updateNewMessage",message:t.message,pts:t.pts}]});var i=o.getChatString(e.chatID);n.$broadcast("history_focus",{peerString:i})})["finally"](function(){delete e.group.updating})):void 0}}]).controller("ImportContactModalController",["$scope","$modalInstance","$rootScope","AppUsersManager","ErrorService","PhonebookContactsService",function(e,t,n,i,a,o){void 0===e.importContact&&(e.importContact={}),e.phonebookAvailable=o.isAvailable(),e.doImport=function(){e.importContact&&e.importContact.phone&&(e.progress={enabled:!0},i.importContact(e.importContact.phone,e.importContact.first_name||"",e.importContact.last_name||"").then(function(e){e||a.show({error:{code:404,type:"USER_NOT_USING_TELEGRAM"}}),t.close(e)})["finally"](function(){delete e.progress.enabled}))},e.importPhonebook=function(){o.openPhonebookImport().result.then(function(e){e?t.close(e[0]):t.dismiss()})}}]).controller("CountrySelectModalController",["$scope","$modalInstance","$rootScope","SearchIndexManager","_",function(e,t,n,i,a){e.search={},e.slice={limit:20,limitDelta:20};for(var o=i.createIndex(),r=0;r<Config.CountryCodes.length;r++){var s=Config.CountryCodes[r][0];s+=" "+a(Config.CountryCodes[r][1]+"_raw"),s+=" "+Config.CountryCodes[r].slice(2).join(" "),i.indexObject(r,s,o)}e.$watch("search.query",function(t){var n=!1,r={};angular.isString(t)&&t.length&&(n=!0,r=i.search(t,o)),e.countries=[],e.slice.limit=20;for(var s,l=0;l<Config.CountryCodes.length;l++)if(!n||r[l])for(s=2;s<Config.CountryCodes[l].length;s++)e.countries.push({name:a(Config.CountryCodes[l][1]+"_raw"),code:Config.CountryCodes[l][s]});String.prototype.localeCompare&&e.countries.sort(function(e,t){return e.name.localeCompare(t.name)})})}]).controller("PhonebookModalController",["$scope","$modalInstance","$rootScope","AppUsersManager","PhonebookContactsService","SearchIndexManager","ErrorService",function(e,t,n,i,a,o,r){function s(){var t=!1,n={};if(angular.isString(e.search.query)&&e.search.query.length){t=!0,n=o.search(e.search.query,l),e.contacts=[],delete e.contactsEmpty;for(var i=0;i<e.phonebook.length;i++)(!t||n[i])&&e.contacts.push(e.phonebook[i])}else e.contacts=e.phonebook,e.contactsEmpty=!e.contacts.length;e.slice.limit=20}e.search={},e.phonebook=[],e.selectedContacts={},e.selectedCount=0,e.slice={limit:20,limitDelta:20},e.progress={enabled:!1},e.multiSelect=!0;var l=o.createIndex(),c=!1;a.getPhonebookContacts().then(function(t){for(var n=0;n<t.length;n++)o.indexObject(n,t[n].first_name+" "+t[n].last_name+" "+t[n].phones.join(" "),l);e.phonebook=t,e.toggleSelection(!0),c=!0,s()},function(e){r.show({error:{code:403,type:"PHONEBOOK_GET_CONTACTS_FAILED",originalError:e}})}),e.$watch("search.query",function(){c&&s()}),e.contactSelect=function(n){return e.multiSelect?void(e.selectedContacts[n]?(delete e.selectedContacts[n],e.selectedCount--):(e.selectedContacts[n]=!0,e.selectedCount++)):t.close(e.phonebook[n])},e.toggleSelection=function(t){if(!e.selectedCount||t){e.selectedCount=e.phonebook.length;for(var n=0;n<e.phonebook.length;n++)e.selectedContacts[n]=!0}else e.selectedCount=0,e.selectedContacts={}},e.submitSelected=function(){e.selectedCount<=0&&t.dismiss();var n=[];angular.forEach(e.selectedContacts,function(t,i){n.push(e.phonebook[i])}),r.confirm({type:"CONTACTS_IMPORT_PERFORM"}).then(function(){e.progress.enabled=!0,i.importContacts(n).then(function(e){e.length||r.show({error:{code:404,type:"USERS_NOT_USING_TELEGRAM"}}),t.close(e)})["finally"](function(){e.progress.enabled=!1})})}}]),angular.module("myApp.filters",["myApp.i18n"]).filter("userName",["_",function(e){return function(t){return t&&(t.first_name||t.last_name)?t.first_name+" "+t.last_name:e("user_name_deleted")}}]).filter("userFirstName",["_",function(e){return function(t){return t&&(t.first_name||t.last_name)?t.first_name||t.last_name:e("user_first_name_deleted")}}]).filter("userStatus",["$filter","_",function(e,t){var n=e("relativeTime");return function(e){var i=e&&e.status&&e.status._||"userStatusEmpty";switch(i){case"userStatusOnline":return t("user_status_online");case"userStatusOffline":return t("user_status_last_seen",n(e.status.was_online));case"userStatusRecently":return t("user_status_recently");case"userStatusLastWeek":return t("user_status_last_week");case"userStatusLastMonth":return t("user_status_last_month");case"userStatusEmpty":default:return t("user_status_long_ago")}}}]).filter("chatTitle",["_",function(e){return function(t){return t&&t.title?t.title:e("chat_title_deleted")}}]).filter("dateOrTime",["$filter",function(e){var t=e("date");return function(e,n){var i=1e3*e,a=Math.abs(tsNow()-i),o="shortTime";return a>5184e5?o=n?"mediumDate":"shortDate":a>432e5&&(o=n?"EEEE":"EEE"),t(i,o)}}]).filter("time",["$filter",function(e){var t={},n=e("date"),i=Config.Mobile?"shortTime":"mediumTime";return function(e){return t[e]?t[e]:t[e]=n(1e3*e,i)}}]).filter("myDate",["$filter",function(e){var t={},n=e("date");return function(e){return t[e]?t[e]:t[e]=n(1e3*e,"fullDate")}}]).filter("duration",[function(){return function(e){e=parseInt(e),isNaN(e)&&(e=0);var t=e%60,n=Math.floor((e-t)/60);return 10>t&&(t="0"+t),n+":"+t}}]).filter("durationRemains",["$filter",function(e){var t=e("duration");return function(e,n){return"-"+t(n-e)}}]).filter("phoneNumber",[function(){return function(e){var t=" ";return e=(e||"").replace(/\D/g,""),"7"==e.charAt(0)&&11==e.length?"+"+e.charAt(0)+t+"("+e.substr(1,3)+")"+t+e.substr(4,3)+"-"+e.substr(7,2)+"-"+e.substr(9,2):"+"+e}}]).filter("formatSize",[function(){return function(e,t){if(!e)return"0";if(1024>e)return e+" b";if(1048576>e)return Math.round(e/1024)+" Kb";var n=e/1048576;return n=t?n.toFixed(1):Math.round(10*n)/10,n+" Mb"}}]).filter("formatSizeProgress",["$filter","_",function(e,t){var n=e("formatSize");return function(e){var i=n(e.done,!0),a=i.split(" "),o=n(e.total),r=o.split(" ");return r[1]===a[1]?t("format_size_progress_mulitple",{done:a[0],total:r[0],parts:a[1]||""}):t("format_size_progress",{done:i,total:o})}}]).filter("nl2br",[function(){return function(e){return e.replace(/\n/g,"<br/>")}}]).filter("richText",["$filter",function(e){var t=e("linky");return function(e){return t(e,"_blank").replace(/\n| /g,"<br/>")}}]).filter("relativeTime",["$filter","_",function(e,t){var n=t.pluralize("relative_time_pluralize_minutes_ago"),i=t.pluralize("relative_time_pluralize_hours_ago"),a=e("dateOrTime");return function(e){var o=1e3*e,r=Math.abs(tsNow()-o);if(6e4>r)return t("relative_time_just_now");if(36e5>r){var s=Math.floor(r/6e4);return n(s)}if(864e5>r){var l=Math.floor(r/36e5);return i(l)}return a(e,!0)}}]),angular.module("myApp.i18n",["izhukov.utils"]).factory("_",["$rootScope","$locale",function(e,t){function n(e,t){return e.replace(l,function(i,a,o){var r=t[a];return void 0===r?(console.warn("[i18n] missing param "+a+' for message "'+e+'"'),""):(void 0!==o&&(r=n(r,o.split("|"))),r.toString().trim())})}function i(e){return e=e.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>").replace(/\n| /g,"<br/>")}function a(e,t){var a=!1,l=e;if("_raw"===e.substr(-4)&&(a=!0,e=e.substr(0,e.length-4)),r.hasOwnProperty(e))l=r[e];else{if(!s.hasOwnProperty(e))return console.warn("[i18n] missing key "+e),e;l=s[e],console.warn("[i18n] missing locale key "+o+" / "+e)}return a||(l=encodeEntities(l)),"_md"==e.substr(-3)&&(l=i(l)),arguments.length>1&&("string"==typeof t?(Array.prototype.shift.apply(arguments),l=n(l,arguments)):l=n(l,t)),l}var o=Config.I18n.locale,r=Config.I18n.messages,s=Config.I18n.fallback_messages,l=/\{\s*([a-zA-Z\d\-_]+)(?:\s*:\s*(.*?))?\s*\}/g;return a.locale=function(){return o},a.pluralize=function(n){var i=e.$eval(a(n+"_raw"));return function(e){return(i[t.pluralCat(e)]||"").replace("{}",e)}},a}]).filter("i18n",["_",function(e){return function(t,n){return e(t+"_raw",n)}}]).directive("ngPluralize",["_",function(e){return{restrict:"EA",priority:1,compile:function(t){var n=t.attr("when"),i=e(n+"_raw");t.attr("when",i)}}}]).directive("myI18n",["_",function(e){return{restrict:"EA",compile:function(t){var n=t.children('my-i18n-param:not([name]), [my-i18n-param=""]:not([name])').map(function(e,t){return t.outerHTML}).toArray();t.children('my-i18n-param[name], [my-i18n-param]:not([my-i18n-param=""]), [my-i18n-param][name]').each(function(e,t){n[angular.element(t).attr("my-i18n-param")||angular.element(t).attr("name")]=t.outerHTML}),t.children("my-i18n-param").remove();var i=t.attr("my-i18n")||t.attr("msgid")?t:t.children("my-i18n-format, [my-i18n-format]");i.each(function(t,i){var a=angular.element(i),o=a.attr("my-i18n")||a.attr("msgid")||a.attr("my-i18n-format")||a.html().replace(/\s+/g," ").trim(),r=e(o,n);a.html(r)})}}}]),angular.module("myApp.templates",[]).run(["$templateCache",function(e){e.put("partials/desktop/audio_player.html",'<div class="audio_player_wrap clearfix">\n <a class="im_message_file_button" ng-click="togglePlay()" ng-class="{im_message_file_button_dl_audio: audio.downloaded}">\n <i class="im_message_file_button_icon" ng-class="{audio_player_btn_icon_pause: mediaPlayer.player.playing}"></i>\n </a>\n <div class="audio_player_title_wrap">\n <div class="audio_player_meta pull-right" ng-if="audio.downloaded && (mediaPlayer.player.duration || audio.duration)" ng-switch="mediaPlayer.player.playing || mediaPlayer.player.currentTime > 0">\n <span ng-switch-when="true" class="audio_player_duration" ng-bind="mediaPlayer.player.currentTime | durationRemains : (mediaPlayer.player.duration || audio.duration)"></span>\n <span ng-switch-default class="audio_player_duration" ng-bind="mediaPlayer.player.duration || audio.duration | duration"></span>\n </div>\n <a ng-click="download()" class="audio_player_title" ng-switch="::audio.file_name.length > 0">\n <span ng-switch-when="true" ng-bind="::audio.file_name"></span>\n <span ng-switch-default my-i18n="message_attach_audio_message"></span>\n </a>\n <div class="audio_player_meta" ng-if="!audio.downloaded || !(mediaPlayer.player.duration || audio.duration)" ng-switch="audio.progress.enabled">\n <span ng-switch-when="true" class="audio_player_size" ng-bind="audio.progress | formatSizeProgress"></span>\n <span ng-switch-default class="audio_player_size" ng-bind="audio.size | formatSize"></span>\n </div>\n </div>\n <div class="audio_player_actions" ng-if="!audio.progress.enabled && !audio.downloaded">\n <a ng-if="audio._ == \'document\'" ng-click="download()" my-i18n="message_attach_document_download"></a>\n <a ng-click="togglePlay()" my-i18n="message_attach_audio_play"></a>\n </div>\n <div class="audio_player_progress_wrap" ng-if="audio.progress.enabled || audio.downloaded" ng-switch="audio.progress.enabled">\n <div ng-switch-when="true" class="clearfix im_message_cancelable_progress_wrap">\n <a class="im_message_media_progress_cancel pull-right" ng-click="audio.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_down_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: audio.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n <div ng-switch-default class="im_message_playback_progress_wrap">\n <div class="audio_player_seek_slider" my-slider slider-model="mediaPlayer.player.currentTime" slider-max="mediaPlayer.player.duration || audio.duration" slider-onchange="seek(value)"></div>\n <div class="audio_player_volume_slider" my-slider slider-model="mediaPlayer.player.volume" slider-min="0" slider-max="1" slider-onchange="setVolume(value)"></div>\n </div>\n </div>\n <audio ng-if="audio.url" media-player="mediaPlayer.player">\n <source ng-src="{{::audio.url}}" type="{{audio.mime_type || \'audio/ogg\'}}" volume="{{::volume}}" />\n </audio>\n</div>'),e.put("partials/desktop/changelog_modal.html",'<div class="changelog_modal_wrap" my-modal-position>\n\n <a class="modal-close-button" ng-click="$close()"><i></i></a>\n\n <div class="modal-body">\n\n <div class="changelog_card_wrap" ng-switch="lastVersion === false">\n <div ng-switch-when="true">\n <div class="changelog_card"></div>\n <h2 class="changelog_header" my-i18n="changelog_modal_header_recent_updates_md"></h2>\n </div>\n <div ng-switch-default>\n <div class="changelog_card"></div>\n <h2 class="changelog_header" my-i18n="changelog_modal_header_new_updates_md"></h2>\n </div>\n </div>\n\n <div class="changelog_versions_wrap">\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.6\n <span class="pull-right" my-i18n="changelog_modal_title_current_version"></span>\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New viewer for photos, videos, documents.</li>\n <li>[FirefoxOS] Improved media downloads.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.5\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added embedded Soundcloud tracks and playlists.</li>\n <li>Added global user search to contacts list.</li>\n <li>Added switch to mobile version on window resize.</li>\n <li>Migrate to HTTPS notification</li>\n <li>Bugfixes.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.4\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added embedded Facebook posts and Vimeo videos.</li>\n <li>Improved IE10+ support: downloading files and style fixes.</li>\n <li>Added unsupported media playback warning.</li>\n <li>Bugfixes.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.3\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added Native Client module: dramatically improved encryption speed; Download and upload speed is now as high as in native applications.</li>\n <li>HTTPS. We recommend you to use <a href="https://web.telegram.org" target="_blank">https://web.telegram.org</a>.</li>\n <li>Added multiple open tabs warning. Please note, that only one tab with Telegram Web will work.</li>\n <li>Added embedded Instagram, Twitter, Vine, YouTube links.</li>\n <li>Jump to selected spot when playing back audio.</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.2\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Usernames support: <a href="" ng-click="changeUsername()">Choose a username right now!</a></li>\n <li>Search can now find public users by username.</li>\n <li>Most popular emoticons shown in \'recent\' when empty</li>\n <li>[ChromeApp] Added saving window position and size</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.1\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New languages: Spanish, German and Italian are now available </li>\n <li>New custom-made audio player</li>\n <li>Bad browser page for IE 6-9</li>\n <li>Perfomance improvements and bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.0\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Log in codes may be received in other Telegram apps</li>\n <li>Partner\'s online status updates automatically</li>\n <li>Added support for non-english hashtags in messages</li>\n <li>Fixed invalid scrollbar width bug</li>\n <li>[Desktop] Added automatic country code detection</li>\n <li>[FirefoxOS] Improved PUSH-notifications for <= 1.1</li>\n <li>[FirefoxOS] Fixed emoji in notifications</li>\n <li>[FirefoxOS] Fixed attachment bug for <= 1.1</li>\n <li>[FirefoxOS] Added phonebook permissions handling</li>\n <li>[FirefoxOS] Added ability to share Gallery photos in Telegram</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.2.9\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Updated mobile layout</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.2.5\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Updated mobile layout</li>\n <li>Improved performance</li>\n <li>Improved messages grouping</li>\n <li>[FirefoxOS] Fixed notifications for <= 1.1</li>\n <li>[FirefoxOS] Fixed phonebook import</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.2.1\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Improved key generation performance on slow devices</li>\n <li>Added network sleep for mobile devices</li>\n <li>[FirefoxOS] Added support of PUSH notifications</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.2\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Updated contacts list, added edit mode</li>\n <li>First Firefox OS release. See <a href="https://marketplace.firefox.com/app/telegram" target="_blank">Firefox Marketplace</a></li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.9\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.9\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Improvements of performance</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.8\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.8\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Improved mobile layout</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.7\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.7\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Improved mobile layout</li>\n <li>Added file cache for Firefox and Android</li>\n <li>New design for forwarded messages</li>\n <li>Hash-tags support</li>\n <li>Messaging bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.6\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.6\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added search of messages</li>\n <li>Improved performance of chats with lots of unread messages</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.5\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.5\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added registration</li>\n <li>Improved experience for newly registered users</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.4\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.4\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Browse userpic history (click on the photo in user info)</li>\n <li>New <a href="https://github.com/zhukov/webogram" target="_blank" title="Source code on GitHub">GitHub</a>, <a href="https://twitter.com/telegram_web" target="_blank" title="Follow us on Twitter!">Twitter</a> buttons in Settings</li>\n <li>Updated keyboard shortcuts:</li>\n <ul>\n <li><strong>Alt+Home</strong> - switch to first (most recent) conversation</li>\n <li>Removed <strong>Alt+1, 2, 3..</strong> shortcuts due to conflicts in different browsers</li>\n </ul>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.3\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.3\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added version history to welcome screen</li>\n <li>Added keyboard shortcuts:</li>\n <ul>\n <li><strong>Tab</strong> - set focus to message field</li>\n <li><strong>Esc</strong> or <strong>Shift+Tab</strong> - set focus to search field</li>\n <li><strong>Up/Down</strong> (while in search field) - move between conversations</li>\n <li><strong>Enter</strong> (while in search field) - open selected or first conversation</li>\n <li><strong>Alt+Up/Down</strong> - move to previous/next conversation</li>\n </ul>\n <li>Improved grouping for messages</li>\n <li>Fixed video modal positioning bug</li>\n <li>Fixed focusing issues on mobile</li>\n </ul>\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/desktop/chat_create_modal.html",'<div class="contacts_modal_wrap" my-modal-position>\n\n <a class="modal-close-button" ng-click="$dismiss()"><i></i></a>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="createGroup()">\n\n <h4 my-i18n="group_create_modal_title"></h4>\n\n <div class="form-group">\n <input class="form-control input-sm" my-focused type="text" placeholder="{{\'group_create_name\' | i18n}}" ng-model="group.name"/>\n </div>\n\n </form>\n\n </div>\n\n <div class="modal-footer">\n <a class="btn btn-link" ng-click="$dismiss()" my-i18n="modal_cancel"></a>\n <button class="btn btn-primary" ng-class="{disabled: group.creating}" ng-click="createGroup()" ng-bind="group.creating ? \'group_create_submit_active\' : \'group_create_submit\' | i18n" ng-disabled="group.creating"></button>\n </div>\n\n</div>\n'),e.put("partials/desktop/chat_edit_modal.html",'<div class="contacts_modal_wrap" my-modal-position>\n\n <a class="modal-close-button" ng-click="$dismiss()"><i></i></a>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="updateGroup()">\n\n <h4 my-i18n="group_edit_modal_title"></h4>\n\n <div class="form-group">\n <input class="form-control input-sm" my-focused type="text" placeholder="{{\'group_edit_name\' | i18n}}" ng-model="group.name"/>\n </div>\n\n </form>\n\n </div>\n\n <div class="modal-footer">\n <a class="btn btn-link" ng-click="$dismiss()" my-i18n="modal_cancel"></a>\n <button class="btn btn-primary" ng-class="{disabled: group.updating}" ng-click="updateGroup()" ng-bind="group.updating ? \'group_edit_submit_active\' : \'group_edit_submit\' | i18n" ng-disabled="group.updating"></button>\n </div>\n\n</div>\n'),e.put("partials/desktop/chat_modal.html",'<div class="chat_modal_wrap" my-modal-position>\n\n <a class="modal-close-button" ng-click="$close()"><i></i></a>\n\n <div class="modal-body">\n\n <div class="user_modal_photo_profile_wrap">\n\n <div class="user_modal_image_wrap pull-left">\n <img\n class="user_modal_image"\n my-load-thumb\n watch="true"\n thumb="chatFull.thumb"\n />\n </div>\n\n <div class="chat_modal_info_wrap clearfix">\n <h4 class="chat_modal_header" ng-bind-html="chatFull.chat.rTitle"></h4>\n <p class="chat_modal_members_count" ng-if="chatFull.chat.participants_count > 0">\n <ng-pluralize count="chatFull.chat.participants_count"\n when="group_modal_pluralize_participants">\n </ng-pluralize>\n </p>\n\n <div class="chat_modal_actions_wrap clearfix">\n\n <button ng-if="!chatFull.chat.left && chatFull.participants.participants.length" class="btn btn-primary chat_modal_invite_btn" ng-click="inviteToGroup()" my-i18n="group_modal_add_member"></button>\n <button ng-if="chatFull.chat._ != \'chatForbidden\' && chatFull.chat.left" class="btn btn-primary chat_modal_main_btn" ng-click="returnToGroup()" my-i18n="group_modal_return"></button>\n <button ng-if="chatFull.chat._ == \'chatForbidden\'" class="btn btn-danger chat_modal_delete_btn" ng-click="flushHistory()" my-i18n="group_modal_menu_delete_chat"></button>\n\n <span ng-if="chatFull.chat._ != \'chatForbidden\' && !chatFull.chat.left && !photo.updating" class="btn btn-primary chat_modal_main_btn" >\n <input my-file-upload type="file" multiple="false" class="im_attach_input" size="120" multiple="false" accept="image/x-png, image/png, image/gif, image/jpeg" />\n <my-i18n msgid="group_modal_update_photo"></my-i18n>\n </span>\n <span ng-if="photo.updating" class="btn btn-primary chat_modal_main_btn disabled" disabled>\n <my-i18n msgid="group_modal_update_active"></my-i18n><span my-loading-dots></span>\n </span>\n\n\n <div class="dropdown chat_modal_other_btn" ng-if="chatFull.chat._ != \'chatForbidden\' && !chatFull.chat.left" dropdown>\n <button class="btn btn-link dropdown-toggle" dropdown-toggle>\n <my-i18n msgid="group_modal_menu_more"></my-i18n>\n <i class="icon icon-caret"></i>\n </button>\n <ul class="dropdown-menu">\n <li ng-if="chatFull.thumb.location">\n <a ng-click="deletePhoto()" my-i18n="group_modal_menu_delete_photo"></a>\n </li>\n <li>\n <a ng-click="editTitle()" my-i18n="group_modal_menu_edit_group"></a>\n </li>\n <li>\n <a ng-click="leaveGroup()" my-i18n="group_modal_menu_leave_group"></a>\n </li>\n <li>\n <a ng-click="flushHistory()" my-i18n="group_modal_menu_delete_chat"></a>\n </li>\n </ul>\n </div>\n\n </div>\n\n </div>\n </div>\n\n <div class="modal_section">\n <h3 class="modal_section_header" my-i18n="group_modal_settings"></h3>\n <div class="modal_section_body">\n\n <div class="tg_form_group">\n <a class="tg_checkbox" ng-click="settings.notifications = !settings.notifications" ng-class="settings.notifications ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="group_modal_notifications"></span>\n </a>\n </div>\n </div>\n </div>\n\n <div class="modal_section">\n <h3 class="modal_section_header" my-i18n="group_modal_members"></h3>\n <div class="modal_section_body">\n\n <div class="chat_modal_members_list">\n\n <div class="chat_modal_participant_wrap clearfix" ng-repeat="participant in chatFull.participants.participants | orderBy:\'-user.sortStatus\'">\n <a ng-if="participant.canKick" ng-click="kickFromGroup(participant.user_id)" class="chat_modal_participant_kick pull-right" my-i18n="group_modal_members_kick"></a>\n\n <a class="chat_modal_participant_photo pull-left" my-user-photolink="participant.user_id" img-class="chat_modal_participant_photo" status="true"></a>\n\n <div class="chat_modal_participant_name">\n <a my-user-link="participant.user_id"></a>\n </div>\n <div class="chat_modal_participant_status" my-user-status="::participant.user_id"></div>\n </div>\n\n </div>\n\n <div class="chat_modal_members_forbidden" ng-if="chatFull.chat._ == \'chatForbidden\' || chatFull.chat.left" my-i18n="group_modal_members_unavailable"></div>\n\n </div>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/desktop/confirm_modal.html",'<div class="confirm_modal_wrap" my-modal-position>\n\n <a class="modal-close-button" ng-click="$dismiss()"><i></i></a>\n\n <div class="modal-body">\n\n <div class="confirm_modal_description" ng-switch="type">\n <span ng-switch-when="LOGOUT" my-i18n="confirm_modal_logout"></span>\n <span ng-switch-when="WEBOGRAM_UPDATED_RELOAD" my-i18n="confirm_modal_update_reload"></span>\n <span ng-switch-when="HISTORY_FLUSH" my-i18n="confirm_modal_history_flush"></span>\n <span ng-switch-when="TERMINATE_SESSIONS" my-i18n="confirm_modal_terminate_sessions"></span>\n\n <span ng-switch-when="FILES_CLIPBOARD_PASTE">\n <ng-pluralize count="files.length"\n when="confirm_modal_clipboard_X_files_send">\n </ng-pluralize>\n </span>\n <span ng-switch-when="FILE_CLIPBOARD_PASTE" my-i18n="confirm_modal_clipboard_file_send"></span>\n <span ng-switch-when="MESSAGE_DELETE" my-i18n="confirm_modal_message_delete"></span>\n <span ng-switch-when="CONTACTS_IMPORT_PERFORM" my-i18n="confirm_modal_contacts_import"></span>\n <div ng-switch-when="LOGIN_PHONE_CORRECT">\n <my-i18n msgid="confirm_modal_login_phone_correct"></my-i18n>\n <div class="confirm_phone_number">\n <span ng-bind="country_code"></span> <span ng-bind="phone_number"></span>\n </div>\n </div>\n <my-i18n>\n <span ng-switch-when="FORWARD_PEER" my-i18n-format="confirm_modal_forward_to_peer"></span>\n <span ng-switch-when="SHARE_CONTACT_PEER" my-i18n-format="confirm_modal_send_to_peer"></span>\n <span ng-switch-when="EXT_SHARE_PEER" my-i18n-format="confirm_modal_share_file_peer"></span>\n <my-i18n-param name="peer">\n <strong ng-switch="peer_id > 0">\n <span ng-switch-when="true" ng-bind-html="peer_data.rFullName"></span>\n <span ng-switch-default ng-bind-html="peer_data.rTitle"></span>\n </strong>\n </my-i18n-param>\n </my-i18n>\n <div ng-switch-when="APPLY_LANG_WITH_RELOAD" my-i18n="confirm_modal_apply_lang_with_reload_md"></div>\n <div ng-switch-when="MIGRATE_TO_HTTPS" my-i18n="confirm_modal_migrate_to_https_md"></div>\n <div ng-switch-when="SWITCH_DESKTOP_VERSION" my-i18n="confirm_modal_resize_desktop_md"></div>\n <div ng-switch-when="SWITCH_MOBILE_VERSION" my-i18n="confirm_modal_resize_mobile_md"></div>\n <span ng-switch-default ng-switch="message.length > 0">\n <span ng-switch-when="true" ng-bind="message"></span>\n <span ng-switch-default my-i18n="confirm_modal_are_u_sure"></span>\n </span>\n </div>\n\n </div>\n\n <div class="modal-footer">\n <a class="btn btn-link" ng-click="$dismiss()" ng-switch="type">\n <span ng-switch-default my-i18n="modal_cancel"></span>\n </a>\n <button type="button" class="btn btn-primary" ng-switch="type" ng-click="$close()" my-focused>\n <span ng-switch-when="LOGOUT" my-i18n="confirm_modal_logout_submit"></span>\n <span ng-switch-when="HISTORY_FLUSH" my-i18n="confirm_modal_history_flush_submit"></span>\n <span ng-switch-when="FILES_CLIPBOARD_PASTE" my-i18n="confirm_modal_clipboard_files_send_submit"></span>\n <span ng-switch-when="FILE_CLIPBOARD_PASTE" my-i18n="confirm_modal_clipboard_file_send_submit"></span>\n <span ng-switch-when="MESSAGE_DELETE" my-i18n="confirm_modal_message_delete_submit"></span>\n <span ng-switch-when="FORWARD_PEER" my-i18n="confirm_modal_forward_message_submit"></span>\n <span ng-switch-when="PHOTO_SHARE_PEER" my-i18n="confirm_modal_share_photo_submit"></span>\n <span ng-switch-when="VIDEO_SHARE_PEER" my-i18n="confirm_modal_share_video_submit"></span>\n <span ng-switch-when="SHARE_CONTACT_PEER" my-i18n="confirm_modal_share_contact_submit"></span>\n <span ng-switch-when="EXT_SHARE_PEER" my-i18n="confirm_modal_share_file_submit"></span>\n <span ng-switch-default my-i18n="modal_ok"></span>\n </button>\n </div>\n\n</div>\n'),e.put("partials/desktop/contacts_modal.html",'<div class="contacts_modal_wrap" my-modal-position>\n\n <a class="modal-close-button" ng-click="$dismiss()"><i></i></a>\n\n <div class="modal-body">\n\n <div class="contacts_modal_header">\n <div class="contacts_modal_edit_wrap" ng-if="!action || action == \'edit\'" ng-switch="action">\n <a ng-switch-when="edit" class="contacts_modal_edit_link" ng-click="toggleEdit(false)" my-i18n="contacts_modal_edit_cancel"></a>\n <a ng-switch-default class="contacts_modal_edit_link" ng-click="toggleEdit(true)" my-i18n="contacts_modal_edit_list"></a>\n </div>\n <h4 class="contacts_modal_title" ng-switch="action">\n <div ng-switch-when="new_group" ng-switch="selectedCount > 0">\n <span ng-switch-when="true">\n <ng-pluralize count="selectedCount" when="contacts_modal_pluralize_new_group_members">\n </ng-pluralize>\n </span>\n <span ng-switch-default my-i18n="group_create_contacts_modal_title"></span>\n </div>\n <span ng-switch-default my-i18n="contacts_modal_title"></span>\n </h4>\n </div>\n\n\n <div class="contacts_modal_search">\n <input class="form-control contacts_modal_search_field no_outline" my-focused type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query"/>\n <a class="contacts_modal_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length"></a>\n </div>\n\n\n <div my-contacts-list class="contacts_modal_col">\n\n <div class="contacts_wrap nano" my-infinite-scroller>\n <div class="contacts_scrollable_wrap nano-content" ng-switch="contactsEmpty">\n\n <div ng-switch-when="true" class="contacts_modal_contacts_empty" my-vertical-position="0.2" padding="true" my-i18n="contacts_modal_empty_list">\n <my-i18n-param name="import-link"><a href="" ng-click="importContact()">{0}</a></my-i18n-param>\n </div>\n\n <ul ng-switch-default class="contacts_modal_members_list nav nav-pills nav-stacked">\n\n <li class="contacts_modal_contact_wrap clearfix" ng-repeat="contact in contacts | orderBy:\'user.sortName\' | limitTo: slice.limit track by contact.userID" ng-class="{active: selectedContacts[contact.userID], disabled: disabledContacts[contact.userID]}">\n <a class="contacts_modal_contact" ng-click="contactSelect(contact.userID)">\n\n <i ng-if="multiSelect" class="icon icon-contact-tick"></i>\n\n <div class="contacts_modal_contact_photo pull-left" my-user-photolink="contact.userID" status="true" img-class="contacts_modal_contact_photo"></div>\n <div class="contacts_modal_contact_name" ng-bind-html="contact.user.rFullName"></div>\n <div class="contacts_modal_contact_status" ng-switch="contact.found">\n <span ng-switch-when="true" ng-bind="\'@\' + contact.user.username"></span>\n <span ng-switch-default my-user-status="::contact.userID"></span>\n </div>\n\n </a>\n </li>\n\n </ul>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n <div class="modal-footer contacts_modal_panel" ng-switch="action">\n <div ng-switch-when="new_group" class="pull-right">\n <button class="btn btn-link" ng-click="$dismiss()" my-i18n="modal_cancel"></button>\n <button class="btn btn-primary" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" ng-click="submitSelected()" type="submit" my-i18n="modal_next"></button>\n </div>\n\n <button ng-switch-when="select" class="btn btn-primary" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" ng-click="submitSelected()" type="submit" my-i18n="modal_next"></button>\n <button ng-switch-when="edit" class="btn btn-danger" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" ng-click="deleteSelected()">\n <my-i18n msgid="contacts_modal_edit_delete"></my-i18n>\n <strong ng-bind="selectedCount"></strong>\n </button>\n <button ng-switch-default class="btn btn-link" ng-click="importContact()" my-i18n="contacts_modal_new_contact"></button>\n </div>\n\n</div>\n'),e.put("partials/desktop/country_select_modal.html",'<div class="countries_modal_wrap" my-modal-position>\n\n <div class="modal-body">\n\n <h4 class="modal_simple_header" my-i18n="country_select_modal_title"></h4>\n\n <div class="countries_modal_search">\n <input class="form-control countries_modal_search_field no_outline" my-focused type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query"/>\n <a class="countries_modal_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length"></a>\n </div>\n\n <div class="countries_modal_col" my-countries-list>\n\n <div class="countries_wrap nano" my-infinite-scroller>\n <div class="countries_scrollable_wrap nano-content">\n\n <ul class="countries_modal_members_list nav nav-pills nav-stacked">\n\n <li class="countries_modal_country_wrap clearfix" ng-repeat="country in countries | limitTo : slice.limit track by $index">\n <a class="countries_modal_country" ng-click="$close(country)">\n <span class="countries_modal_country_code pull-right" ng-bind="country.code"></span>\n <span class="countries_modal_country_name" ng-bind="country.name"></span>\n </a>\n </li>\n\n </ul>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n <div class="modal-footer">\n <button type="button" class="btn btn-primary" ng-click="$dismiss()" my-i18n="modal_done"></button>\n </div>\n\n</div>\n'),e.put("partials/desktop/dialog.html",'<a class="im_dialog" ng-mousedown="dialogSelect(dialogMessage.peerString, search.messages && dialogMessage.id)">\n\n <div class="im_dialog_meta pull-right text-right">\n <div class="im_dialog_date" ng-bind="dialogMessage.dateText"></div>\n <span\n class="im_dialog_badge badge"\n ng-show="dialogMessage.unreadCount > 0 && !dialogMessage.out"\n ng-bind="dialogMessage.unreadCount"\n ></span>\n <i\n class="im_dialog_unread"\n ng-show="dialogMessage.out && dialogMessage.unread"\n ></i>\n </div>\n\n <div class="im_dialog_photo pull-left">\n <img\n class="im_dialog_photo"\n my-load-thumb\n watch="true"\n thumb="dialogMessage.peerPhoto"\n />\n </div>\n\n <div class="im_dialog_message_wrap">\n\n <div class="im_dialog_peer" ng-switch="dialogMessage.peerID > 0">\n <span class="im_dialog_user" ng-switch-when="true" ng-bind-html="dialogMessage.peerData.rFullName"></span>\n <span class="im_dialog_chat" ng-switch-default>\n <span ng-bind-html="dialogMessage.peerData.rTitle"></span>\n </span>\n </div>\n\n <div ng-switch="dialogMessage.deleted">\n <div ng-switch-when="true" class="im_dialog_message">\n <span class="im_dialog_message_text" my-i18n="conversation_message_deleted"></span>\n </div>\n <div ng-switch-default class="im_dialog_message">\n <span class="im_dialog_chat_from_wrap">\n <span\n class="im_dialog_chat_from"\n ng-if="!dialogMessage.out && dialogMessage.chatID"\n ng-bind-html="dialogMessage.fromUser.rFirstName"\n ></span><span\n class="im_dialog_chat_from"\n ng-if="dialogMessage.out"\n my-i18n="conversation_you"\n ></span>{{((dialogMessage.out || dialogMessage.peerID < 0) && (dialogMessage.message.length || dialogMessage.media && dialogMessage.media._ != \'messageMediaEmpty\')) ? \':\' : \'\'}}\n </span>\n\n <span class="im_dialog_message_media" ng-if="dialogMessage.media" ng-switch="dialogMessage.media._">\n <span ng-switch-when="messageMediaPhoto" my-i18n="conversation_media_photo"></span>\n <span ng-switch-when="messageMediaVideo" my-i18n="conversation_media_video"></span>\n <span ng-switch-when="messageMediaDocument" ng-bind="dialogMessage.media.document.file_name"></span>\n <span ng-switch-when="messageMediaAudio" my-i18n="conversation_media_audio"></span>\n <span ng-switch-when="messageMediaGeo" my-i18n="conversation_media_location"></span>\n <span ng-switch-when="messageMediaContact" my-i18n="conversation_media_contact"></span>\n </span>\n\n <span class="im_dialog_message_service" ng-if="dialogMessage._ == \'messageService\'" ng-switch="dialogMessage.action._">\n <span ng-switch-when="messageActionChatCreate" my-i18n="conversation_group_created"></span>\n <span ng-switch-when="messageActionChatEditTitle" my-i18n="conversation_group_renamed"></span>\n <span ng-switch-when="messageActionChatEditPhoto" my-i18n="conversation_group_photo_updated"></span>\n <span ng-switch-when="messageActionChatDeletePhoto" my-i18n="conversation_group_photo_removed"></span>\n\n <span ng-switch-when="messageActionChatAddUser" ng-switch="dialogMessage.from_id == dialogMessage.action.user_id">\n <span ng-switch-when="true" my-i18n="conversation_returned_to_group"></span>\n <span ng-switch-default my-i18n="conversation_invited_user">\n <my-i18n-param name="user" ng-bind-html="dialogMessage.action.user.rFullName"></my-i18n-param>\n </span>\n </span>\n\n <span ng-switch-when="messageActionChatDeleteUser" ng-switch="dialogMessage.from_id == dialogMessage.action.user_id">\n <span ng-switch-when="true" my-i18n="conversation_left_group"></span>\n <span ng-switch-default my-i18n="conversation_kicked_user">\n <my-i18n-param name="user" ng-bind-html="dialogMessage.action.user.rFullName"></my-i18n-param>\n </span>\n </span>\n </span>\n\n <span class="im_dialog_message_text" ng-if="dialogMessage.message.length" ng-bind-html="dialogMessage.richMessage"></span>\n </div>\n </div>\n\n </div>\n</a>\n'),e.put("partials/desktop/document_modal.html",'<div class="modal_close_wrap" ng-click="$close()">\n <div class="modal_close"></div>\n</div>\n\n<div class="media_modal_bottom_panel_wrap">\n <div class="media_modal_bottom_panel">\n <div class="media_modal_bottom_actions pull-right">\n <a class="media_modal_action_btn" ng-click="download()" title="{{\'media_modal_download\' | i18n}}">\n <i class="media_modal_action_btn_download"></i>\n </a>\n <a class="media_modal_action_btn" ng-if="messageID" ng-click="forward()" title="{{\'media_modal_forward\' | i18n}}">\n <i class="media_modal_action_btn_forward"></i>\n </a>\n <a class="media_modal_action_btn" ng-if="messageID" ng-click="delete()" title="{{\'media_modal_delete\' | i18n}}">\n <i class="media_modal_action_btn_delete"></i>\n </a>\n </div>\n\n <div class="media_modal_info_wrap pull-left">\n <a class="media_modal_author" my-user-link="document.user_id" user-watch="true"></a>\n <span class="media_modal_date" ng-bind="document.date | dateOrTime :true"></span>\n </div>\n\n <div class="media_modal_title_wrap" ng-bind="document.file_name"></div>\n\n </div>\n</div>\n\n<div class="modal-dialog">\n <div class="modal-content">\n <div my-modal-width="{{photo.full.modalWidth}}" class="media_modal_wrap photo_modal_wrap" my-modal-position animation="no">\n\n <div class="modal-body">\n\n <div my-load-document="document"></div>\n\n </div>\n\n </div>\n </div>\n</div>'),e.put("partials/desktop/edit_contact_modal.html",'<div class="import_modal_wrap" my-modal-position>\n\n <a class="modal-close-button" ng-click="$dismiss()"><i></i></a>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="doImport()">\n\n <h4 my-i18n="contact_edit_modal_title"></h4>\n\n <div class="form-group">\n <span class="form-control uneditable-input input-sm disabled" disabled ng-bind="importContact.phone | phoneNumber"></span>\n </div>\n <div class="form-group">\n <input class="form-control input-sm" my-focused type="text" placeholder="{{\'contact_edit_modal_first_name\' | i18n}}" ng-model="importContact.first_name"/>\n </div>\n <div class="form-group">\n <input class="form-control input-sm" type="text" placeholder="{{\'contact_edit_modal_last_name\' | i18n}}" ng-model="importContact.last_name"/>\n </div>\n\n </form>\n\n </div>\n\n <div class="modal-footer">\n <a class="btn btn-link" ng-click="$dismiss()" my-i18n="modal_cancel"></a>\n <button class="btn btn-primary" ng-class="{disabled: progress.enabled}" ng-click="doImport()" ng-bind="progress.enabled ? \'contact_edit_modal_submit_active\' : \'contact_edit_modal_submit\'| i18n" ng-disabled="progress.enabled"></button>\n </div>\n\n</div>\n'),e.put("partials/desktop/error_modal.html",'<div class="error_modal_wrap" my-modal-position>\n\n <a class="modal-close-button" ng-click="$close()"><i></i></a>\n\n <div class="modal-body">\n\n <h4 ng-if="error" class="modal_simple_header" ng-switch="error.type">\n <span ng-switch-when="MEDIA_TYPE_NOT_SUPPORTED" my-i18n="error_modal_media_not_supported_title"></span>\n <span ng-switch-default ng-switch="error.code">\n <span ng-switch-when="400" my-i18n="error_modal_bad_request_title"></span>\n <span ng-switch-when="401" my-i18n="error_modal_unauthorized_title"></span>\n <span ng-switch-when="403" my-i18n="error_modal_forbidden_title"></span>\n <span ng-switch-when="404" my-i18n="error_modal_not_found_title"></span>\n <span ng-switch-when="406" my-i18n="error_modal_network_title"></span>\n <span ng-switch-when="420" my-i18n="error_modal_flood_title"></span>\n <span ng-switch-default my-i18n="error_modal_internal_title"></span>\n </span>\n </h4>\n <h4 ng-if="!error" class="modal_simple_header" ng-switch="title.length > 0">\n <span ng-switch-when="true" ng-bind="title"></span>\n <span ng-switch-default my-i18n="error_modal_alert"></span>\n </h4>\n\n <div ng-if="error" class="error_modal_description" ng-switch="error.type">\n <span ng-switch-when="NETWORK_BAD_REQUEST" my-i18n="error_modal_network_description"></span>\n <span ng-switch-when="NETWORK_BAD_RESPONSE" my-i18n="error_modal_network_description"></span>\n <span ng-switch-when="FIRSTNAME_INVALID" my-i18n="error_modal_firstname_invali_description"></span>\n <span ng-switch-when="LASTNAME_INVALID" my-i18n="error_modal_lastname_invalid_description"></span>\n <span ng-switch-when="PHONE_NUMBER_INVALID" my-i18n="error_modal_phone_invalid_description"></span>\n <span ng-switch-when="USERS_TOO_MUCH" my-i18n="error_modal_users_too_much_description"></span>\n <span ng-switch-when="PHOTO_INVALID_DIMENSIONS" my-i18n="error_modal_photo_dimensions_invalid_description"></span>\n <span ng-switch-when="VIDEO_EXT_INVALID" my-i18n="error_modal_video_file_invalid_description"></span>\n <span ng-switch-when="PHOTO_CROP_SIZE_SMALL" my-i18n="error_modal_photo_too_small_description"></span>\n <span ng-switch-when="USER_NOT_USING_TELEGRAM" my-i18n="error_modal_no_phone_user_description_md"></span>\n <span ng-switch-when="USERS_NOT_USING_TELEGRAM" my-i18n="error_modal_no_phone_users_description_md"></span>\n <span ng-switch-when="PHONEBOOK_GET_CONTACTS_FAILED" my-i18n="error_modal_phonebook_required_description"></span>\n <span ng-switch-when="USERNAME_INVALID" my-i18n="error_modal_username_invalid_description"></span>\n <span ng-switch-when="USERNAME_OCCUPIED" my-i18n="error_modal_username_occupied_description"></span>\n <span ng-switch-when="MEDIA_TYPE_NOT_SUPPORTED" my-i18n="error_modal_media_not_supported_description"></span>\n\n\n <div ng-switch-default ng-switch="error.code">\n <span ng-switch-when="400" my-i18n="error_modal_bad_request_description"></span>\n <span ng-switch-when="401" my-i18n="error_modal_unauthorized_description">\n <my-i18n-param name="login-link"><a href="#/login">{0}</a></my-i18n-param>\n </span>\n <span ng-switch-when="403" my-i18n="error_modal_forbidden_description"></span>\n <span ng-switch-when="404" my-i18n="error_modal_not_found_description"></span>\n <span ng-switch-when="420" my-i18n="error_modal_flood_description"></span>\n <span ng-switch-default my-i18n="error_modal_internal_description"></span>\n </div>\n\n </div>\n\n <div ng-if="error" class="error_modal_details" ng-switch="error.detailsShown">\n <textarea ng-switch-when="true" rows="3" onclick="this.select()">Method: {{error.input || \'N/A\'}}\nResult: {{error.originalError ? error.originalError : (error.stack ? (error.name || \'\') + \' \' + (error.description || error.message) : error)}}\nStack: {{error.originalError.stack || error.stack}}</textarea>\n <div ng-switch-default>\n <a href="" ng-click="error.detailsShown = true" my-i18n="error_modal_tech_details"></a>\n </div>\n </div>\n\n <div ng-if="!error" class="error_modal_description" ng-bind="description"></div>\n\n </div>\n\n</div>\n'),e.put("partials/desktop/footer.html",'<div class="footer_wrap" ng-controller="AppFooterController">\n <a class="footer_link" href="https://telegram.org" target="_blank" my-i18n="head_about"></a>\n <a class="footer_link" ng-click="openSettings()" my-i18n="im_settings"></a>\n <a class="footer_link" href="https://twitter.com/telegram_web" target="_blank" my-i18n="footer_twitter"></a>\n</div>'),e.put("partials/desktop/full_document.html",'<div class="document_modal_image_wrap">\n <div class="img_fullsize_with_progress_wrap document_fullsize_with_progress_wrap" ng-style="{width: frameWidth + \'px\', height: frameHeight + \'px\'}">\n <div class="img_fullsize_progress_overlay">\n <div class="img_fullsize_progress_wrap" ng-style="{width: frameWidth + \'px\', height: frameHeight + \'px\'}">\n <div class="img_fullsize_progress progress tg_progress">\n <div class="progress-bar progress-bar-success" style="width: {{document.progress.percent}}%"></div>\n </div>\n </div>\n </div>\n <div class="img_fullsize_wrap" ng-if="thumbSrc.length > 0">\n <img\n class="img_fullsize"\n ng-src="{{thumbSrc}}"\n ng-style="{width: imageWidth + \'px\', height: imageHeight + \'px\'}"\n />\n </div>\n </div>\n <div class="document_fullsize_wrap" ng-click="toggleZoom(!zoomed)">\n <img class="document_fullsize_img" />\n </div>\n</div>'),e.put("partials/desktop/full_gif.html",'<a class="img_gif_with_progress_wrap" ng-click="toggle($event)">\n\n <div class="img_gif_image_wrap" ng-switch="document.downloaded && isActive">\n\n <img ng-switch-when="true" class="img_gif_image" ng-src="{{document.url}}" />\n <img ng-switch-default class="img_gif_thumb" my-load-thumb thumb="document.thumb" />\n\n </div>\n\n <div ng-show="!isActive" ng-switch="document.progress.enabled">\n\n <div ng-switch-when="true" class="img_gif_progress_wrap">\n <div class="img_gif_progress progress tg_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: document.progress.percent + \'%\'}"></div>\n </div>\n </div>\n\n <div ng-switch-default class="img_gif_info_wrap">\n <div class="img_gif_label pull-left">GIF</div>\n <div ng-if="!document.downloaded" class="img_gif_size pull-right" ng-bind="::document.size | formatSize"></div>\n </div>\n\n </div>\n\n</a>'),e.put("partials/desktop/full_photo.html",'<div class="img_fullsize_with_progress_wrap">\n <div class="img_fullsize_progress_overlay" ng-show="progress.enabled">\n <div class="img_fullsize_progress_wrap">\n <div class="img_fullsize_progress progress tg_progress" ng-show="progress.percent > 0">\n <div class="progress-bar progress-bar-success" ng-style="{width: progress.percent + \'%\'}">\n </div>\n </div>\n </div>\n </div>\n <div class="photo_full_wrap">\n <a class="photo_modal_image">\n <img class="photo_modal_image"/>\n </a>\n </div>\n <div class="photo_modal_error_wrap" ng-if="error">\n <div class="photo_modal_error" ng-if="error.html" ng-bind-html="error.html"></div>\n <div class="photo_modal_error" ng-if="error.text" ng-bind="error.text"></div>\n </div>\n</div>'),e.put("partials/desktop/full_video.html",'<div class="img_fullsize_with_progress_wrap" ng-style="{width: video.full.width + \'px\', height: video.full.height + \'px\'}">\n <div class="img_fullsize_progress_overlay" ng-show="video.progress.enabled">\n <div class="img_fullsize_progress_wrap" ng-style="{width: video.full.width + \'px\', height: video.full.height + \'px\'}">\n <div class="img_fullsize_progress progress tg_progress">\n <div class="progress-bar progress-bar-success" style="width: {{video.progress.percent}}%"></div>\n </div>\n </div>\n </div>\n <div class="img_fullsize_wrap" ng-if="!video.url">\n <img\n class="img_fullsize"\n my-load-thumb\n thumb="video.fullThumb"\n />\n </div>\n <div class="video_full_player" ng-if="video.url" ng-switch="player.quicktime">\n <embed ng-switch-when="true" ng-src="{{video.url}}" width="{{video.full.width}}" height="{{video.full.height}}" autoplay="true" CONTROLLER="TRUE" SHOWCONTROLS="TRUE" controller="true" loop="false" pluginspace="http://www.apple.com/quicktime/" />\n <video ng-switch-default width="{{video.full.width}}" height="{{video.full.height}}" controls autoplay >\n <source ng-src="{{video.url}}" type="video/mp4">\n </video>\n </div>\n <div class="video_full_error_wrap" ng-if="error">\n <div class="video_full_error" ng-if="error.html" ng-bind-html="error.html"></div>\n <div class="video_full_error" ng-if="error.text" ng-bind="error.text"></div>\n </div>\n</div>'),e.put("partials/desktop/head.html",'<div class="tg_page_head">\n <div class="navbar navbar-static-top navbar-inverse" role="navigation" ng-class="{navbar_peer_not_selected: !curDialog.peer, navbar_offline: offline, navbar_history_select: historyState.selectActions}">\n <div class="container">\n\n <div class="navbar-header">\n <a class="navbar-brand" href="{{isLoggedIn ? \'#/im\' : \'#/\'}}"><span class="tg_head_logo"></span></a>\n </div>\n\n <div class="navbar-menu" ng-switch="offline">\n\n <ul ng-switch-when="true" class="nav navbar-nav navbar-offline">\n <li ng-show="!offlineConnecting"><span class="navbar-offline-text"><my-i18n msgid="head_waiting_for_network"></my-i18n><span my-loading-dots></span></span></li>\n <li ng-show="!offlineConnecting"><a href="" ng-click="retryOnline()" my-i18n="head_retry"></a></li>\n <li ng-show="offlineConnecting"><span class="navbar-offline-text"><my-i18n msgid="head_connecting"></my-i18n><span my-loading-dots></span></span></li>\n </ul>\n\n <ul ng-switch-default class="nav navbar-nav navbar-right">\n <li ng-if="isLoggedIn && !isEmpty.contacts"><a href="" ng-click="openContacts()" my-i18n="head_contacts"></a></li>\n <li ng-if="isLoggedIn"><a href="" ng-click="openSettings()" my-i18n="head_settings"></a></li>\n <li ng-if="isLoggedIn"><a href="" ng-click="logOut()" my-i18n="head_log_out"></a></li>\n <li ng-if="!isLoggedIn"><a href="https://github.com/zhukov/webogram" target="_blank" my-i18n="head_about"></a></li>\n </ul>\n\n </div>\n\n </div>\n </div>\n</div>\n'),e.put("partials/desktop/im.html",'<div my-head></div>\n\n<div class="im_page_wrap" ng-class="{im_page_peer_not_selected: !curDialog.peer}">\n\n <div class="im_page_split clearfix">\n\n <div class="im_dialogs_col_wrap" ng-controller="AppImDialogsController" my-dialogs has-tabs="{{search.query.length > 0}}">\n <div class="im_dialogs_panel">\n <div class="dropdown im_dialogs_panel_dropdown pull-right" dropdown>\n <a class="dropdown-toggle" dropdown-toggle>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </a>\n <ul class="dropdown-menu">\n <li><a ng-click="openGroup()" my-i18n="im_new_group"></a></li>\n <li><a ng-click="importContact()" my-i18n="im_new_contact"></a></li>\n <li ng-if="!isEmpty.contacts"><a ng-click="openContacts()" my-i18n="im_contacts"></a></li>\n <li><a ng-click="openSettings()" my-i18n="im_settings"></a></li>\n </ul>\n </div>\n <div class="im_dialogs_search">\n <input class="form-control im_dialogs_search_field no_outline" type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query"/>\n <a class="im_dialogs_search_clear" ng-click="searchClear()" ng-show="search.query.length"></a>\n </div>\n\n <div class="im_dialogs_tabs_wrap">\n <div class="im_dialogs_tabs clearfix">\n <a href="" class="im_dialogs_tab" ng-class="{active: !search.messages}" ng-click="search.messages = false" my-i18n="im_conversations"></a>\n <a href="" class="im_dialogs_tab" ng-class="{active: search.messages}" ng-click="search.messages = true" my-i18n="im_messages"></a>\n </div>\n </div>\n </div>\n\n <div my-dialogs-list class="im_dialogs_col">\n <div class="im_dialogs_wrap nano">\n <div class="im_dialogs_scrollable_wrap nano-content">\n\n <div class="im_dialogs_empty_wrap" ng-if="isEmpty.contacts">\n <h3 class="im_dialogs_empty_header" my-i18n="im_no_contacts"></h3>\n <p class="im_dialogs_empty_lead" my-i18n="im_get_started_long"></p>\n <button type="button" class="btn btn-primary btn-sm" ng-click="importContact()" my-i18n="im_add_contact"></button>\n <button ng-if="phonebookAvailable" type="button" class="btn btn-primary btn-sm im_dialogs_import_phonebook" ng-click="importPhonebook()" my-i18n="im_import_phonebook"></button>\n </div>\n\n <div ng-switch="search.messages">\n <ul ng-switch-when="true" class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs track by dialogMessage.id" ng-class="{active: curDialog.peerID == dialogMessage.peerID && curDialog.messageID == dialogMessage.id}"></li>\n </ul>\n <ul ng-switch-default class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs track by dialogMessage.peerID" ng-class="{active: curDialog.peerID == dialogMessage.peerID}"></li>\n </ul>\n </div>\n\n <div class="im_dialogs_contacts_wrap" ng-show="!search.messages && contacts.length > 0">\n <h5 my-i18n="im_contacts_title"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="contact in contacts | orderBy:\'user.sortName\' track by contact.userID" ng-class="{active: curDialog.peerID == contact.userID}">\n <a class="im_dialog" ng-mousedown="dialogSelect(contact.peerString)">\n <div class="im_dialog_photo pull-left" my-user-photolink="contact.userID" img-class="im_dialog_photo"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-user-link="contact.userID"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" my-user-status="::contact.userID"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n\n <div class="im_dialogs_contacts_wrap" ng-show="!search.messages && foundUsers.length > 0">\n <h5 my-i18n="im_found_title"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="foundUser in foundUsers track by foundUser.userID" ng-class="{active: curDialog.peerID == foundUser.userID}">\n <a class="im_dialog" ng-mousedown="dialogSelect(foundUser.peerString)">\n <div class="im_dialog_photo pull-left" my-user-photolink="foundUser.userID" img-class="im_dialog_photo"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-user-link="foundUser.userID"></span>\n </div>\n <div class="im_dialog_message" ng-switch="foundUser.user.username.length > 0">\n <span ng-switch-when="true" class="im_dialog_message_text" ng-bind="::\'@\' + foundUser.user.username"></span>\n <span ng-switch-default class="im_dialog_message_text" my-user-status="::foundUser.userID"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n\n </div>\n </div>\n </div>\n </div>\n\n <div class="im_history_col_wrap" ng-controller="AppImHistoryController">\n\n <div ng-show="state.notSelected" ng-switch="isEmpty.contacts && isEmpty.dialogs">\n <div ng-switch-when="true" class="im_history_no_dialogs_wrap">\n <h3 class="im_dialogs_empty_header" my-i18n="im_get_started"></h3>\n <p class="im_dialogs_empty_lead" my-i18n="im_welcome_text"></p>\n <button type="button" class="btn btn-primary btn-sm" ng-click="openSettings()" my-i18n="im_open_settings"></button>\n </div>\n <div ng-switch-default class="im_history_not_selected" my-vertical-position="0.35" padding="true" my-i18n="im_select_a_chat"></div>\n </div>\n\n <div ng-show="!state.notSelected && !state.loaded" class="im_history_not_selected" my-vertical-position="0.35" padding="true">\n <my-i18n msgid="im_loading_history"></my-i18n><span my-loading-dots></span>\n </div>\n\n <div ng-show="state.loaded">\n <div my-history class="im_history_col">\n\n <div class="im_history_panel_wrap">\n\n <div class="im_history_panel clearfix" ng-controller="AppImPanelController">\n <div class="im_history_panel_title">\n\n <a class="im_history_panel_info_link pull-right" ng-click="showPeerInfo()" my-i18n="im_info"></a>\n <a class="im_history_panel_edit_link pull-right" ng-click="toggleEdit()" my-i18n="im_edit"></a>\n\n <div class="dropdown im_history_panel_media_dropdown pull-right" dropdown>\n <a class="dropdown-toggle" dropdown-toggle><my-i18n msgid="im_media"></my-i18n><i class="icon icon-caret"></i></a>\n <ul class="dropdown-menu">\n <li><a ng-click="toggleMedia(\'photos\')" my-i18n="im_media_photos"></a></li>\n <li><a ng-click="toggleMedia(\'video\')" my-i18n="im_media_video"></a></li>\n <li><a ng-click="toggleMedia(\'documents\')" my-i18n="im_media_documents"></a></li>\n <li><a ng-click="toggleMedia(\'audio\')" my-i18n="im_media_audio"></a></li>\n </ul>\n </div>\n <a ng-show="historyFilter.mediaType.length || skippedHistory" class="im_history_panel_return_link pull-right" ng-click="returnToRecent()" ng-switch="skippedHistory">\n <span ng-switch-when="true" my-i18n="im_show_recent_messages"></span>\n <span ng-switch-default my-i18n="im_show_all_messages"></span>\n <strong class="im_history_panel_return_count" ng-show="missedCount > 0" ng-bind="\'+\' + missedCount"></strong>\n </a>\n\n <div ng-switch="historyFilter.mediaType">\n <h4 ng-switch-when="photos" my-i18n="im_media_photos"></h4>\n <h4 ng-switch-when="video" my-i18n="im_media_video"></h4>\n <h4 ng-switch-when="documents" my-i18n="im_media_documents"></h4>\n <h4 ng-switch-when="audio" my-i18n="im_media_audio"></h4>\n\n <h4 ng-switch-default ng-switch="historyPeer.id > 0" ng-click="showPeerInfo()">\n <div ng-switch-when="true">\n <span ng-bind-html="historyPeer.data.rFullName"></span>\n <small class="im_peer_online" my-user-status="historyPeer.id"></small>\n </div>\n <div ng-switch-default>\n <span ng-bind-html="historyPeer.data.rTitle"></span>\n <small class="im_chat_users">\n <ng-pluralize count="historyPeer.data.participants_count"\n when="im_pluralize_participants">\n </ng-pluralize>\n </small>\n </div>\n </h4>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n <div class="im_history_wrap nano">\n\n <div class="im_history_scrollable_wrap nano-content">\n\n <div class="im_history_scrollable">\n <div class="im_history" ng-class="{im_history_selectable: historyState.selectActions}">\n <div ng-if="state.empty" class="im_history_empty" ng-switch="state.mayBeHasMore" my-vertical-position="0.25" padding="true">\n <span ng-switch-when="true">\n <my-i18n msgid="im_loading_history"></my-i18n><span my-loading-dots></span>\n </span>\n <span ng-switch-default my-i18n="im_no_messages"></span>\n </div>\n\n <div class="im_history_messages" ng-class="{im_history_messages_group: historyPeer.id < 0}">\n <div class="im_history_messages_peer" ng-show="peerHistory.peerID == historyPeer.id" ng-repeat="peerHistory in peerHistories">\n <div class="im_history_message_wrap" my-message ng-repeat="historyMessage in peerHistory.messages"></div>\n </div>\n </div>\n\n </div>\n\n <div class="im_history_typing_wrap">\n\n <div class="im_history_typing" ng-show="historyState.typing.length > 0 && !historyFilter.mediaType" ng-switch="historyState.typing.length" my-i18n>\n <span ng-switch-when="1" my-i18n-format="im_one_typing"></span>\n <span ng-switch-when="2" my-i18n-format="im_two_typing"></span>\n <span ng-switch-default my-i18n-format="im_many_typing"></span>\n <my-i18n-param name="name1"><a class="im_history_typing_author" my-user-link="historyState.typing[0]"></a></my-i18n-param>\n <my-i18n-param name="name2"><a class="im_history_typing_author" my-user-link="historyState.typing[1]"></a></my-i18n-param>\n <my-i18n-param name="count">{{historyState.typing.length - 2}}</my-i18n-param>\n <my-i18n-param name="dots"><span my-loading-dots></span></my-i18n-param>\n </div>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n <div class="im_bottom_panel_wrap">\n\n <div class="im_edit_panel_wrap clearfix" ng-show="historyState.selectActions">\n <div class="im_edit_panel_border"></div>\n <a class="im_edit_flush_link" ng-click="selectedFlush()" ng-switch="historyPeer.id > 0">\n <span ng-switch-when="true" my-i18n="im_delete_chat"></span>\n <span ng-switch-default my-i18n="im_clear_history"></span>\n </a>\n <a class="im_edit_cancel_link" ng-click="selectedCancel()" my-i18n="modal_cancel"></a>\n <div class="im_edit_selected_actions" my-i18n>\n <a class="btn btn-primary im_edit_forward_btn" ng-click="selectedForward()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_forward"></a>\n <a class="btn btn-danger im_edit_delete_btn" ng-click="selectedDelete()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_delete"></a>\n <my-i18n-param name="count"><strong class="im_selected_count" ng-show="selectedCount > 0" ng-bind="selectedCount"></strong></my-i18n-param>\n </div>\n </div>\n\n <div class="im_send_panel_wrap" ng-hide="historyState.selectActions">\n\n <div class="im_send_form_wrap1">\n\n <div class="im_send_form_wrap clearfix" ng-controller="AppImSendController">\n <div class="pull-right im_panel_peer_photo" ng-click="showPeerInfo()">\n <img\n class="im_panel_peer_photo"\n my-load-thumb\n watch="true"\n thumb="historyPeer.photo"\n />\n <i class="icon im_panel_peer_online" ng-show="historyPeer.id > 0 && historyPeer.data.status._ == \'userStatusOnline\'"></i>\n </div>\n <div class="pull-left im_panel_own_photo">\n <img\n class="im_panel_own_photo"\n my-load-thumb\n watch="true"\n thumb="ownPhoto"\n />\n </div>\n <form my-send-form draft-message="draftMessage" class="im_send_form" ng-class="{im_send_form_empty: !draftMessage.text.length}">\n\n <div class="im_send_field_wrap">\n <div class="im_send_dropbox_wrap" my-i18n="im_photos_drop_text"></div>\n <textarea ng-model="draftMessage.text" placeholder="{{\'im_message_field_placeholder\' | i18n}}" class="form-control im_message_field no_outline"></textarea>\n </div>\n\n <div class="im_media_attach pull-right">\n <input type="file" class="im_media_attach_input" size="28" multiple="true" accept="image/*, video/*, audio/*" title="{{\'im_media_attach_title\' | i18n}}"/>\n <i class="icon icon-camera"></i>\n </div>\n\n <div class="im_attach pull-right">\n <input type="file" class="im_attach_input" size="28" multiple="true" title="{{\'im_attach_file_title\' | i18n}}" />\n <i class="icon icon-paperclip"></i>\n </div>\n\n <div class="im_emoji_btn pull-right" title="{{\'im_emoji_btn_title\' | i18n}}">\n <i class="icon icon-emoji"></i>\n </div>\n\n <button type="submit" class="btn btn-success im_submit">\n <span class="im_submit_text" my-i18n="im_submit_message"></span>\n </button>\n </form>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>\n\n<div my-footer></div>'),e.put("partials/desktop/import_contact_modal.html",'<div class="import_modal_wrap" my-modal-position>\n\n <a class="modal-close-button" ng-click="$dismiss()"><i></i></a>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="doImport()">\n\n <h4 my-i18n="contact_import_modal_title"></h4>\n\n <div class="form-group">\n <input class="form-control input-sm" my-focused type="text" placeholder="{{\'contact_import_modal_phone\' | i18n}}" ng-model="importContact.phone"/>\n </div>\n <div class="form-group">\n <input class="form-control input-sm" type="text" placeholder="{{\'contact_edit_modal_first_name\' | i18n}}" ng-model="importContact.first_name"/>\n </div>\n <div class="form-group">\n <input class="form-control input-sm" type="text" placeholder="{{\'contact_edit_modal_last_name\' | i18n}}" ng-model="importContact.last_name"/>\n </div>\n\n </form>\n\n </div>\n\n <div class="modal-footer">\n <a class="btn btn-link pull-left" ng-if="phonebookAvailable" ng-click="importPhonebook()" my-i18n="contact_import_modal_phonebook"></a>\n <a class="btn btn-link" ng-click="$dismiss()" my-i18n="modal_cancel"></a>\n <button class="btn btn-primary" ng-class="{disabled: progress.enabled}" ng-click="doImport()" ng-bind="progress.enabled ? \'contact_import_modal_submit_active\' : \'contact_import_modal_submit\' | i18n" ng-disabled="progress.enabled"></button>\n </div>\n\n</div>\n'),e.put("partials/desktop/lang_footer.html",'<div class="footer_wrap" ng-controller="AppLangSelectController">\n <span ng-repeat="locale in ::supportedLocales">\n <a class="footer_lang_link" ng-class="{active: curLocale == locale, disabled: curLocale == locale}" ng-disabled="curLocale == locale" ng-click="localeSelect(locale)" ng-bind="langNames[locale]"></a>\n <span ng-if="!$last" class="footer_link_divider"></span>\n </span>\n</div>'),e.put("partials/desktop/login.html",'<div my-head></div>\n\n\n<div class="login_form_wrap" my-vertical-position="0.4">\n <div class="error" ng-if="error.message" ng-bind="error.message"></div>\n\n <form name="mySendCodeForm" ng-if="!credentials.phone_code_hash" ng-submit="sendCode()">\n <h3 class="login_form_head" my-i18n="login_sign_in"></h3>\n <p class="login_form_lead" my-i18n="login_enter_number_description"></p>\n\n <div class="login_country_selector" ng-click="chooseCountry()">\n <span ng-bind="credentials.phone_country_name"></span>\n <i class="icon icon-caret pull-right"></i>\n </div>\n\n <div class="form-group" ng-class="{\'has-error\': error.field == \'phone\'}">\n <label class="control-label" ng-if="error.field == \'phone\'" my-i18n="login_incorrect_number"></label>\n <div class="clearfix">\n <input type="tel" autocomplete="off" class="form-control pull-left login_phone_country" my-focused name="phone_country" ng-model="credentials.phone_country">\n <input type="tel" autocomplete="off" class="form-control pull-left login_phone_number" my-focus-on="country_selected" name="phone_number" ng-model="credentials.phone_number" placeholder="{{\'login_tel_input_placeholder\' | i18n}}" required>\n </div>\n </div>\n <button class="btn btn-primary btn-block" ng-class="{disabled: progress.enabled}" ng-disabled="progress.enabled" type="submit" ng-switch="progress.enabled">\n <span ng-switch-when="true"><my-i18n msgid="login_generating_key"></my-i18n><span my-loading-dots></span></span>\n <span ng-switch-default my-i18n="modal_next"></span>\n </button>\n <div class="login_form_messaging" ng-show="progress.enabled" my-i18n="login_generating_keys_info"></div>\n </form>\n\n <form name="myLoginForm" ng-if="credentials.phone_code_hash && !credentials.phone_code_valid" ng-submit="logIn()">\n <h3 class="login_form_head"><span ng-bind="credentials.phone_country"></span> <span ng-bind="credentials.phone_number"></span></h3>\n <div class="login_edit_phone"><a ng-click="editPhone()" my-i18n="login_edit_number"></a></div>\n <div ng-switch="credentials.viaApp">\n <div ng-switch-when="true">\n <p class="login_form_lead" my-i18n="login_enter_code_label_md"></p>\n <p class="login_form_lead">\n <a ng-click="sendSms()" my-i18n="login_code_not_received"></a>\n </p>\n </div>\n <div ng-switch-default>\n <p class="login_form_lead" my-i18n="login_enter_sms_code_label_md"></p>\n\n <p class="login_form_lead">\n <span ng-show="callPending.remaining > 0" my-i18n="login_call_remaining">\n <my-i18n-param name="remaining">{{callPending.remaining | duration}}</my-i18n-param>\n </span>\n <span ng-show="!callPending.remaining && !callPending.success" my-i18n="login_calling"></span>\n <span ng-show="!callPending.remaining && callPending.success" my-i18n="login_number_dialed"></span>\n </p>\n </div>\n </div>\n\n <div class="form-group" ng-class="{\'has-error\': error.field == \'phone_code\'}">\n <label class="control-label" for="phone_code" ng-if="error.field == \'phone_code\'" my-i18n="login_incorrect_sms_code"></label>\n <input type="number" my-focused class="form-control login_phone_code" name="phone_code" ng-model="credentials.phone_code" placeholder="{{\'login_number_input_placeholder\' | i18n}}" autocomplete="off" required>\n </div>\n\n <button class="btn btn-primary btn-block" type="submit" ng-class="{disabled: progress.enabled}" ng-disabled="progress.enabled" ng-switch="progress.enabled">\n <span ng-switch-when="true"><my-i18n msgid="login_checking_code"></my-i18n><span my-loading-dots></span></span>\n <span ng-switch-default my-i18n="modal_next"></span>\n </button>\n </form>\n\n <form name="myFullNameForm" ng-if="credentials.phone_code_valid && credentials.phone_unoccupied" ng-submit="logIn(true)">\n <h3 class="login_form_head" my-i18n="login_your_info"></h3>\n <p class="login_form_lead" my-i18n="login_fulll_name_label"></p>\n\n <div class="form-group login_first_name_wrap" ng-class="{\'has-error\': error.field == \'first_name\'}">\n <label class="control-label" for="first_name" ng-if="error.field == \'first_name\'" my-i18n="login_incorrect_first_name"></label>\n <input my-focused class="form-control" name="first_name" ng-model="credentials.first_name" placeholder="{{\'login_first_name\' | i18n}}" autocomplete="off" required>\n </div>\n\n <div class="form-group" ng-class="{\'has-error\': error.field == \'last_name\'}">\n <label class="control-label" for="last_name" ng-if="error.field == \'last_name\'" my-i18n="login_incorrect_last_name"></label>\n <input class="form-control" name="last_name" ng-model="credentials.last_name" placeholder="{{\'login_last_name\' | i18n}}" autocomplete="off">\n </div>\n\n <button class="btn btn-primary btn-block" ng-class="{disabled: progress.enabled}" ng-disabled="progress.enabled" type="submit" ng-switch="progress.enabled">\n <span ng-switch-when="true"><my-i18n msgid="login_signing_up"></my-i18n><span my-loading-dots></span></span>\n <span ng-switch-default my-i18n="login_sign_up"></span>\n </button>\n </form>\n\n</div>\n\n<!-- <div my-lang-footer></div> -->'),e.put("partials/desktop/media_modal_layout.html",'<div tabindex="-1" role="dialog" class="modal" ng-style="{\'z-index\': 1050 + index*10}" ng-click="close($event)" modal-transclude></div>'),e.put("partials/desktop/message.html",'<div class="im_message_outer_wrap" ng-click="toggleMessage(historyMessage.id, $event)">\n\n\n <div class="im_message_wrap clearfix">\n\n <div class="im_service_message_wrap" ng-if="::historyMessage._ == \'messageService\'">\n <div class="im_service_message">\n <a class="im_message_author" my-user-link="historyMessage.from_id" short="!historyMessage.to_id.chat_id" color="historyMessage.to_id.chat_id > 0"></a>\n <span class="im_message_service" my-service-message></span>\n </div>\n\n <a ng-if="::historyMessage.action._ == \'messageActionChatEditPhoto\'" class="im_service_message_photo_thumb" href="" ng-click="openPhoto(historyMessage.action.photo.id)">\n <img\n class="im_service_message_photo_thumb"\n my-load-thumb\n thumb="historyMessage.action.photo.thumb"\n />\n </a>\n\n </div>\n\n <div ng-if="::historyMessage._ != \'messageService\'" class="im_content_message_wrap" ng-class="::[historyMessage.out ? \'im_message_out\' : \'im_message_in\', historyMessage._ == \'messageForwarded\' ? \'im_message_fwd\' : \'\']">\n <div class="im_content_message_select_area">\n <i class="icon icon-select-tick"></i>\n </div>\n\n <a class="im_message_error_btn" ng-if="::historyMessage.pending || historyMessage.error || false" ng-click="historyMessage.send()">\n <i class="icon-message-status" tooltip="Try again"></i>\n </a>\n\n <i ng-if="::historyMessage.unread || historyMessage.pending || false" class="icon-message-status" ng-class="{\'icon-message-status-unread\': historyMessage.unread, \'icon-message-status-pending\': historyMessage.pending}" ng-show="!historyMessage.error"></i>\n\n <a class="im_message_from_photo pull-left" my-user-photolink="historyMessage.from_id" img-class="im_message_from_photo"></a>\n\n <div class="im_message_meta pull-right text-right">\n <i class="icon-message-status-tick"></i>\n <span class="im_message_date" ng-bind="::historyMessage.date | time"></span>\n </div>\n\n <div class="im_message_body" ng-class="::{im_message_body_media: historyMessage._ == \'message\' && historyMessage.media ? true : false}">\n\n <a class="im_message_author" my-user-link="historyMessage.from_id" short="!historyMessage.to_id.chat_id" color="historyMessage.to_id.chat_id > 0"></a>\n\n <div ng-if="::historyMessage._ == \'messageForwarded\' || false" class="im_message_fwd_from">\n <a class="im_message_fwd_photo pull-left" my-user-photolink="historyMessage.fwd_from_id" img-class="im_message_fwd_photo"></a>\n <div class="im_message_fwd_author_wrap">\n <a class="im_message_fwd_author" my-user-link="historyMessage.fwd_from_id" short="true"></a><span class="im_message_fwd_date" ng-bind="::historyMessage.fwd_date | dateOrTime"></span>\n </div>\n </div>\n\n <div ng-if="::historyMessage.media ? true : false" class="im_message_media" ng-switch="historyMessage.media._">\n\n <div ng-switch-when="messageMediaPhoto" my-message-photo></div>\n <div ng-switch-when="messageMediaVideo" my-message-video="historyMessage.media.video" message-id="historyMessage.id"></div>\n <div ng-switch-when="messageMediaDocument" my-message-document="historyMessage.media.document" message-id="historyMessage.id"></div>\n <div ng-switch-when="messageMediaAudio" class="im_message_audio" my-audio-player audio="historyMessage.media.audio"></div>\n <div ng-switch-when="messageMediaGeo" my-message-map></div>\n <div ng-switch-when="messageMediaContact" my-message-contact></div>\n <div ng-switch-when="messageMediaPending" my-message-pending></div>\n\n </div>\n\n <div class="im_message_text" ng-if="::historyMessage.message.length || false" ng-bind-html="::historyMessage.richMessage"></div>\n <div class="im_message_external_embed_wrap" ng-if="::historyMessage.richUrlEmbed || false" my-external-embed="historyMessage.richUrlEmbed"></div>\n </div>\n\n </div>\n </div>\n\n</div>\n\n'),e.put("partials/desktop/message_attach_contact.html",'<div>\n <a ng-if="historyMessage.media.user_id > 0" class="im_message_contact_photo pull-left" my-user-photolink="historyMessage.media.user_id" img-class="im_message_contact_photo" user-override="historyMessage.media"></a>\n <div class="im_message_contact_name" ng-switch="historyMessage.media.user_id > 0">\n <a ng-switch-when="true" my-user-link="historyMessage.media.user_id" user-override="historyMessage.media"></a>\n <span ng-switch-default ng-bind-html="::historyMessage.media.rFullName"></span>\n </div>\n <div class="im_message_contact_phone" ng-bind="::historyMessage.media.phone_number | phoneNumber"></div>\n</div>'),e.put("partials/desktop/message_attach_document.html",'<div ng-switch="::document.isSpecial">\n\n <div ng-switch-when="gif" my-load-gif document="document"></div>\n\n <div ng-switch-when="audio" class="im_message_audio">\n <div my-audio-player audio="document"></div>\n </div>\n\n <div ng-switch-default class="im_message_document clearfix" ng-class="{im_message_document_thumbed: !!document.thumb, im_message_document_progress: document.progress.enabled}">\n\n <a ng-if="::!document.thumb" class="im_message_file_button" ng-click="docOpen()" ng-class="{im_message_file_button_dl_doc: document.downloaded}">\n <i class="im_message_file_button_icon"></i>\n </a>\n <a ng-if="::document.thumb" ng-click="docOpen()">\n <div class="im_message_document_thumb_wrap">\n <img\n class="im_message_document_thumb"\n my-load-thumb\n thumb="document.thumb"\n />\n </div>\n </a>\n\n <div class="im_message_document_info">\n <div class="im_message_document_name_wrap">\n <a href="" ng-click="docOpen()" class="im_message_document_name" ng-bind="::document.file_name"></a>\n <span class="im_message_document_size" ng-if="!document.progress.enabled" ng-bind="::document.size | formatSize"></span>\n <span class="im_message_document_size" ng-if="document.progress.enabled" ng-bind="document.progress | formatSizeProgress"></span>\n </div>\n <div class="im_message_document_actions" ng-if="!document.progress.enabled" ng-switch="document.downloaded">\n <a ng-switch-when="true" href="" ng-click="docSave()" my-i18n="message_attach_document_save"></a>\n <a ng-switch-default href="" ng-click="docSave()" my-i18n="message_attach_document_download"></a>\n <a ng-if="::document.withPreview" href="" ng-click="docOpen()" my-i18n="message_attach_document_open"></a>\n </div>\n <div class="clearfix im_message_cancelable_progress_wrap" ng-if="document.progress.enabled">\n <a class="im_message_media_progress_cancel pull-right" ng-click="document.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_down_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: document.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n</div>\n'),e.put("partials/desktop/message_attach_map.html",'<a my-map-point point="historyMessage.media.geo" class="im_message_geopoint">\n <i class="icon icon-geo-point"></i>\n</a>'),e.put("partials/desktop/message_attach_pending.html",'<div class="im_message_document im_message_upload_file" ng-class="::\'im_message_upload_\' + historyMessage.media.type">\n <div class="im_message_file_button im_message_file_button_upload">\n <i class="im_message_file_button_icon"></i>\n </div>\n <div class="im_message_document_info">\n <div class="im_message_document_name_wrap">\n <span class="im_message_document_name" ng-bind="::historyMessage.media.file_name"></span>\n <span class="im_message_document_size" ng-if="historyMessage.media.progress" ng-bind="historyMessage.media.progress | formatSizeProgress"></span>\n </div>\n <div class="clearfix im_message_cancelable_progress_wrap">\n <a class="im_message_media_progress_cancel pull-right" ng-click="historyMessage.media.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_up_progress">\n <div class="progress-bar progress-bar-success" role="progressbar" ng-style="{width: historyMessage.media.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),e.put("partials/desktop/message_attach_photo.html",'<a class="im_message_photo_thumb" href="" ng-click="openPhoto(historyMessage.media.photo.id, historyMessage.id)" ng-style="::{width: historyMessage.media.photo.thumb.width + \'px\'}" ng-mouseover="preloadPhoto(historyMessage.media.photo.id)">\n <img\n class="im_message_photo_thumb"\n my-load-thumb\n thumb="historyMessage.media.photo.thumb"\n />\n</a>'),e.put("partials/desktop/message_attach_video.html",'<div class="im_message_video im_message_document_thumbed">\n <a class="im_message_video_thumb" href="" ng-click="videoOpen()" ng-style="::{width: video.thumb.width + \'px\'}">\n <span class="im_message_video_duration" ng-bind="::video.duration | duration"></span>\n <i class="icon icon-videoplay"></i>\n <img\n class="im_message_video_thumb"\n my-load-thumb\n thumb="video.thumb"\n />\n </a>\n\n <div class="im_message_document_info">\n <div class="im_message_document_name_wrap">\n <span class="im_message_document_name" my-i18n="message_attach_video_video"></span>\n <span class="im_message_document_size" ng-if="!video.progress.enabled" ng-bind="::video.size | formatSize"></span>\n <span class="im_message_document_size" ng-if="video.progress.enabled" ng-bind="video.progress | formatSizeProgress"></span>\n </div>\n <div class="im_message_document_actions" ng-if="!video.progress.enabled">\n <a href="" ng-click="videoSave()" ng-switch="video.downloaded">\n <span ng-switch-when="true" my-i18n="message_attach_video_save"></span>\n <span ng-switch-default my-i18n="message_attach_video_download"></span>\n </a>\n <a href="" ng-click="videoOpen()" my-i18n="message_attach_video_play"></a>\n </div>\n <div class="clearfix im_message_cancelable_progress_wrap" ng-if="video.progress.enabled">\n <a class="im_message_media_progress_cancel pull-right" ng-click="video.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_down_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: video.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),e.put("partials/desktop/message_service.html",'<span ng-switch="::historyMessage.action._">\n <my-i18n>\n <span ng-switch-when="messageActionChatCreate" my-i18n-format="message_service_created_group"></span>\n <span ng-switch-when="messageActionChatEditTitle" my-i18n-format="message_service_changed_group_name"></span>\n <my-i18n-param name="group-name">«<strong ng-bind-html="::historyMessage.action.rTitle"></strong>»</my-i18n-param>\n </my-i18n>\n <span ng-switch-when="messageActionChatEditPhoto" my-i18n="message_service_changed_group_photo"></span>\n <span ng-switch-when="messageActionChatDeletePhoto" my-i18n="message_service_removed_group_photo"></span>\n <span ng-switch-when="messageActionChatAddUser" ng-switch="::historyMessage.from_id != historyMessage.action.user_id">\n <span ng-switch-when="true" my-i18n="message_service_invited_user">\n <my-i18n-param name="user"><a my-user-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n </span>\n <span ng-switch-default my-i18n="message_service_returned_to_group"></span>\n </span>\n <span ng-switch-when="messageActionChatDeleteUser" ng-switch="::historyMessage.from_id != historyMessage.action.user_id">\n <span ng-switch-when="true" my-i18n="message_service_kicked_user">\n <my-i18n-param name="user"><a my-user-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n </span>\n <span ng-switch-default my-i18n="message_service_left_group"></span>\n </span>\n\n <span ng-switch-default ng-bind="\'message_service_unsupported_action\' | i18n:historyMessage.action._"></span>\n</span>\n'),e.put("partials/desktop/peer_select.html",'<div class="peer_select_modal_wrap" my-modal-position>\n\n <a class="modal-close-button visible-xs" ng-click="$dismiss()"><i></i></a>\n\n <div class="modal-body">\n\n <div class="im_dialogs_modal_col_wrap" ng-controller="AppImDialogsController" my-dialogs>\n <div class="im_dialogs_panel">\n <div class="im_dialogs_search">\n <input my-focused class="form-control im_dialogs_search_field no_outline" type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query"/>\n <a class="im_dialogs_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length"></a>\n </div>\n </div>\n <div my-dialogs-list modal="true" class="im_dialogs_modal_col">\n <div class="im_dialogs_wrap nano">\n <div class="im_dialogs_scrollable_wrap nano-content">\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs track by dialogMessage.peerID"></li>\n </ul>\n <div class="im_dialogs_contacts_wrap" ng-show="contacts.length > 0">\n <h5 my-i18n="conversation_select_modal_contacts"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="contact in contacts | orderBy:\'user.sortName\' track by contact.userID" ng-class="{active: curDialog.peerID == contact.userID}">\n <a class="im_dialog" ng-click="dialogSelect(contact.peerString)">\n <div class="im_dialog_photo pull-left">\n <img\n class="im_dialog_photo"\n my-load-thumb\n thumb="contact.userPhoto"\n />\n </div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" ng-bind-html="contact.user.rFullName"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" my-user-status="::contact.userID"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/desktop/photo_modal.html",'<div class="modal_prev_wrap" ng-show="nav.hasPrev" ng-click="nav.prev($event)">\n <div class="modal_prev"></div>\n</div>\n<div class="modal_next_wrap" ng-show="nav.hasNext" ng-click="nav.next($event)">\n <div class="modal_next"></div>\n</div>\n<div class="modal_close_wrap" ng-class="{modal_close_wrap_wnext: nav.hasNext}" ng-click="$close()">\n <div class="modal_close"></div>\n</div>\n\n<div class="media_modal_bottom_panel_wrap">\n <div class="media_modal_bottom_panel">\n <div class="media_modal_bottom_actions pull-right">\n <a class="media_modal_action_btn" ng-click="download()" title="{{\'media_modal_download\' | i18n}}">\n <i class="media_modal_action_btn_download"></i>\n </a>\n <a class="media_modal_action_btn" ng-if="canForward" ng-click="forward()" title="{{\'media_modal_forward\' | i18n}}">\n <i class="media_modal_action_btn_forward"></i>\n </a>\n <a class="media_modal_action_btn" ng-if="canDelete" ng-click="delete()" title="{{\'media_modal_delete\' | i18n}}">\n <i class="media_modal_action_btn_delete"></i>\n </a>\n </div>\n\n <div class="media_modal_info_wrap pull-left" ng-switch="messageID > 0">\n <a class="media_modal_author" my-user-link="photo.user_id" user-watch="true"></a>\n <a ng-switch-when="true" ng-click="goToMessage()" class="media_modal_date" ng-bind="photo.date | dateOrTime :true"></a>\n <span ng-switch-default class="media_modal_date" ng-bind="photo.date | dateOrTime :true"></span>\n </div>\n\n\n <div class="media_modal_title_wrap" ng-switch="count > 1 && pos > 0">\n <my-i18n ng-switch-when="true" msgid="media_modal_photo_index">\n <my-i18n-param name="pos" ng-bind="pos"></my-i18n-param>\n <my-i18n-param name="count" ng-bind="count"></my-i18n-param>\n </my-i18n>\n <my-i18n ng-switch-default msgid="media_modal_photo">\n </div>\n </div>\n</div>\n\n<div class="modal-dialog" my-modal-nav next="nav.next()" prev="nav.prev()">\n <div class="modal-content">\n <div my-modal-width="{{photo.full.modalWidth}}" class="media_modal_wrap photo_modal_wrap" my-modal-position animation="no">\n\n <div class="modal-body">\n\n <div class="photo_modal_image_wrap" my-load-full-photo full-photo="photo.full" thumb-location="photo.thumb.location" ng-click="$close()"></div>\n\n </div>\n\n </div>\n </div>\n</div>\n\n'),e.put("partials/desktop/profile_edit_modal.html",'<div class="profile_edit_modal_wrap" my-modal-position>\n\n <a class="modal-close-button" ng-click="$dismiss()"><i></i></a>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="updateProfile()">\n\n <h4 my-i18n="profile_edit_modal_title"></h4>\n\n <div class="form-group import_modal_field_wrap" ng-class="{\'has-error\': error.field == \'first_name\'}">\n <input class="form-control input-sm" my-focused type="text" placeholder="{{\'profile_edit_first_name\' | i18n}}" ng-model="profile.first_name" name="first_name"/>\n </div>\n <div class="form-group import_modal_field_wrap" ng-class="{\'has-error\': error.field == \'last_name\'}">\n <input class="form-control input-sm" type="text" placeholder="{{\'profile_edit_last_name\' | i18n}}" ng-model="profile.last_name"/>\n </div>\n\n </form>\n\n </div>\n\n <div class="modal-footer">\n <a class="btn btn-link" ng-click="$dismiss()" my-i18n="modal_cancel"></a>\n <button class="btn btn-primary" ng-class="{disabled: profile.updating}" ng-click="updateProfile()" ng-bind="profile.updating ? \'profile_edit_submit_active\' : \'profile_edit_submit\' | i18n" ng-disabled="profile.updating"></button>\n </div>\n\n</div>\n'),e.put("partials/desktop/settings_modal.html",'<div class="settings_modal_wrap modal_content_wrap" my-modal-position>\n\n <a class="modal-close-button" ng-click="$close()"><i></i></a>\n\n <div class="modal-body">\n\n <div class="user_modal_photo_profile_wrap">\n\n <a href="" ng-click="openPhoto(photo.id, -profile.id)" class="user_modal_image_wrap pull-left" ng-class="{disabled: !photo.id}">\n <img\n class="user_modal_image"\n my-load-thumb\n watch="true"\n thumb="photo"\n />\n </a>\n\n <div class="user_modal_info_wrap clearfix">\n <h4 class="user_modal_header" ng-bind-html="profile.rFullName"></h4>\n <p class="user_modal_status" my-user-status="::profile.id"></p>\n\n <div class="user_modal_actions_wrap clearfix">\n <span class="btn btn-primary user_modal_main_btn" ng-if="!photo.updating">\n <input my-file-upload type="file" multiple="false" class="im_attach_input" size="120" multiple="false" accept="image/x-png, image/png, image/gif, image/jpeg" />\n <my-i18n msgid="settings_modal_set_photo"></my-i18n>\n </span>\n <span class="btn btn-primary user_modal_main_btn disabled" disabled ng-if="photo.updating">\n <my-i18n msgid="settings_modal_photo_updating"></my-i18n>\n <span my-loading-dots></span>\n </span>\n\n <div class="dropdown user_modal_other_btn" dropdown>\n <button class="btn btn-link dropdown-toggle" dropdown-toggle>\n <my-i18n msgid="settings_modal_menu_more"></my-i18n>\n <i class="icon icon-caret"></i>\n </button>\n <ul class="dropdown-menu">\n <li ng-if="photo.location">\n <a ng-click="deletePhoto()" my-i18n="settings_modal_delete_photo"></a>\n </li>\n <li>\n <a ng-click="editProfile()" my-i18n="settings_modal_edit_profile"></a>\n </li>\n <li>\n <a ng-click="changeUsername()" my-i18n="settings_modal_edit_username"></a>\n </li>\n <li>\n <a ng-click="terminateSessions()" my-i18n="settings_modal_terminate_sessions"></a>\n </li>\n </ul>\n </div>\n\n </div>\n </div>\n\n </div>\n\n <div class="modal_section">\n <h3 class="modal_section_header" my-i18n="user_modal_info"></h3>\n <div class="modal_section_body">\n\n <dl ng-if="profile.phone">\n <dt><my-i18n msgid="user_modal_phone"></my-i18n>:</dt>\n <dd ng-bind="profile.phone | phoneNumber"></dd>\n </dl>\n <dl>\n <dt><my-i18n msgid="user_modal_username"></my-i18n>:</dt>\n <dd ng-switch="profile.username.length > 0">\n <a class="settings_modal_username_link" ng-switch-when="true" href="" ng-click="changeUsername()" ng-bind="\'@\' + profile.username"></a>\n <a ng-switch-default href="" ng-click="changeUsername()" my-i18n="settings_modal_empty_username_set"></a>\n </dd>\n </dl>\n\n <dl class="settings_modal_language" ng-controller="AppLangSelectController">\n <dt><my-i18n msgid="settings_modal_language"></my-i18n>:</dt>\n <dd>\n <select class="form-control settings_modal_language_select" ng-change="localeSelect()" ng-model="form.locale">\n <option ng-repeat="locale in ::supportedLocales" value="{{locale}}" ng-bind="langNames[locale]" ng-selected="locale == curLocale"></option>\n </select>\n </dd>\n </dl>\n\n </div>\n </div>\n\n <div class="modal_section">\n <h3 class="modal_section_header" my-i18n="settings_modal_settings"></h3>\n <div class="modal_section_body">\n\n <div class="tg_form_group">\n\n <a class="tg_checkbox" ng-click="toggleDesktop()" ng-class="notify.desktop ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_notifications"></span>\n </a>\n\n <a class="tg_checkbox" ng-click="toggleSound()" ng-class="notify.volume ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_sound"></span>\n </a>\n\n <div class="tg_range_wrap" ng-show="notify.volume > 0">\n <span class="icon icon-volume-outer" ng-class="\'icon-volume-outer\' + notify.volumeOf4()">\n <i class="icon-volume-inner icon-volume-inner1"></i>\n <i class="icon-volume-inner icon-volume-inner2"></i>\n <i class="icon-volume-inner icon-volume-inner3"></i>\n <i class="icon-volume-inner icon-volume-inner4"></i>\n </span>\n <div class="settings_volume_slider" my-slider slider-model="notify.volume"></div>\n </div>\n </div>\n\n <div class="tg_form_group">\n <a class="tg_radio" ng-click="toggleCtrlEnter(1)" ng-class="send.enter == 1 ? \'tg_radio_on\' : \'\'">\n <i class="icon icon-radio"></i>\n <span my-i18n="settings_modal_enter_send_description_md"></span>\n </a>\n\n <a class="tg_radio" ng-click="toggleCtrlEnter(0)" ng-class="send.enter == 0 ? \'tg_radio_on\' : \'\'">\n <i class="icon icon-radio"></i>\n <span my-i18n="settings_modal_ctrl_enter_send_description_md"></span>\n </a>\n </div>\n\n </div>\n </div>\n\n <div class="modal_section">\n <h3 class="modal_section_header" my-i18n="settings_modal_about"></h3>\n <div class="modal_section_body settings_about_section_body">\n <div class="settings_external_services pull-right">\n <a href="https://github.com/zhukov/webogram" target="_blank" title="{{\'settings_modal_source_code_github\' | i18n}}" class="settings_external_service"><i class="icon icon-github"></i></a>\n <a href="https://twitter.com/telegram_web" target="_blank" title="{{\'settings_modal_follow_us_twitter\' | i18n}}" class="settings_external_service"><i class="icon icon-twitter"></i></a>\n </div>\n <p>\n <a ng-click="openChangelog()" my-i18n="settings_modal_recent_updates">\n <my-i18n-param name="version" ng-bind="version"></my-i18n-param>\n </a>\n </p>\n </div>\n </div>\n\n </div>\n</div>\n'),e.put("partials/desktop/slider.html",'<div class="tg_slider_wrap">\n <div class="tg_slider_thumb"></div>\n <div class="tg_slider_track">\n <div class="tg_slider_track_fill"></div>\n </div>\n</div>'),e.put("partials/desktop/user_modal.html",'<div class="user_modal_wrap" my-modal-position>\n\n <a class="modal-close-button" ng-click="$close()"><i></i></a>\n\n <div class="modal-body">\n\n <div class="user_modal_photo_profile_wrap">\n\n <a href="" ng-click="openPhoto(userPhoto.id, -user.id)" class="user_modal_image_wrap pull-left" ng-class="{disabled: !userPhoto.id}">\n <img\n class="user_modal_image"\n my-load-thumb\n thumb="userPhoto"\n />\n </a>\n\n <div class="user_modal_info_wrap clearfix">\n <h4 class="user_modal_header" ng-bind="user | userName"></h4>\n <p class="user_modal_status" ng-if="user.status" my-user-status="::user.id"></p>\n\n <div class="user_modal_actions_wrap clearfix">\n <button class="btn btn-primary user_modal_main_btn" ng-click="goToHistory()" my-i18n="user_modal_send_message"></button>\n\n <div class="dropdown user_modal_other_btn" dropdown>\n <button class="btn btn-link dropdown-toggle" dropdown-toggle>\n <my-i18n msgid="user_modal_menu_more"></my-i18n>\n <i class="icon icon-caret"></i>\n </button>\n <ul class="dropdown-menu">\n <li ng-if="user._ == \'userContact\'">\n <a ng-click="importContact(true)" my-i18n="user_modal_edit_contact"></a>\n </li>\n <li ng-if="user._ == \'userContact\'">\n <a ng-click="deleteContact()" my-i18n="user_modal_delete_contact"></a>\n </li>\n <li ng-if="user.phone.length > 0 && user._ != \'userContact\'">\n <a ng-click="importContact()" my-i18n="user_modal_add_contact"></a>\n </li>\n <li ng-if="user._ != \'userSelf\'">\n <a ng-click="toggleBlock(!blocked)" ng-switch="blocked">\n <my-i18n ng-switch-when="true" msgid="user_modal_unblock_user"></my-i18n>\n <my-i18n ng-switch-default msgid="user_modal_block_user"></my-i18n>\n </a>\n </li>\n <li ng-if="user.phone.length > 0">\n <a ng-click="shareContact()" my-i18n="user_modal_share_contact"></a>\n </li>\n <li>\n <a ng-click="flushHistory()" my-i18n="user_modal_delete_chat"></a>\n </li>\n </ul>\n </div>\n\n </div>\n </div>\n\n </div>\n\n <div class="modal_section" ng-if="user.phone || user.username">\n <h3 class="modal_section_header" my-i18n="user_modal_info"></h3>\n <div class="modal_section_body">\n\n <dl ng-if="user.phone">\n <dt><my-i18n msgid="user_modal_phone"></my-i18n>:</dt>\n <dd ng-bind="user.phone | phoneNumber"></dd>\n </dl>\n <dl ng-if="user.username">\n <dt><my-i18n msgid="user_modal_username"></my-i18n>:</dt>\n <dd ng-bind="\'@\' + user.username"></dd>\n </dl>\n\n </div>\n </div>\n\n <div class="modal_section">\n <h3 class="modal_section_header" my-i18n="user_modal_settings"></h3>\n <div class="modal_section_body">\n\n <div class="tg_form_group">\n <a class="tg_checkbox" ng-click="settings.notifications = !settings.notifications" ng-class="settings.notifications ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="user_modal_notifications"></span>\n </a>\n </div>\n </div>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/desktop/username_edit_modal.html",'<div class="username_edit_modal_wrap" my-modal-position>\n\n <a class="modal-close-button" ng-click="$dismiss()"><i></i></a>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="updateUsername()">\n\n <h4 my-i18n="username_edit_modal_title"></h4>\n\n <div class="form-group import_modal_field_wrap" ng-class="{\'has-error\': checked.error, \'has-feedback\': checked.feedback.length > 0}">\n <input class="form-control input-md" my-focused type="text" placeholder="{{\'username_edit_placeholder\' | i18n}}" ng-model="profile.username" name="username" ng-model-options="{updateOn: \'default blur\', debounce: {default: 600, blur: 0}}"/>\n <span ng-if="checked.error" class="glyphicon form-control-feedback" ng-class="{\'glyphicon-remove\': checked.error}"></span>\n </div>\n\n <div class="modal_simple_form_description" my-i18n="username_edit_description_md"></div>\n\n </form>\n\n </div>\n\n <div class="modal-footer">\n <a class="btn btn-link" ng-click="$dismiss()" my-i18n="modal_cancel"></a>\n <button class="btn btn-primary" ng-class="{disabled: profile.updating}" ng-click="updateUsername()" ng-bind="profile.updating ? \'username_edit_submit_active\' : \'username_edit_submit\' | i18n" ng-disabled="profile.updating"></button>\n </div>\n\n</div>\n'),e.put("partials/desktop/video_modal.html",'<div class="modal_close_wrap" ng-class="{modal_close_wrap_wnext: nav.hasNext}" ng-click="$close()">\n <div class="modal_close"></div>\n</div>\n\n<div class="media_modal_bottom_panel_wrap">\n <div class="media_modal_bottom_panel">\n <div class="media_modal_bottom_actions pull-right">\n <a class="media_modal_action_btn" ng-click="download()" title="{{\'media_modal_download\' | i18n}}">\n <i class="media_modal_action_btn_download"></i>\n </a>\n <a class="media_modal_action_btn" ng-if="messageID" ng-click="forward()" title="{{\'media_modal_forward\' | i18n}}">\n <i class="media_modal_action_btn_forward"></i>\n </a>\n <a class="media_modal_action_btn" ng-if="messageID" ng-click="delete()" title="{{\'media_modal_delete\' | i18n}}">\n <i class="media_modal_action_btn_delete"></i>\n </a>\n </div>\n\n <div class="media_modal_info_wrap pull-left">\n <a class="media_modal_author" my-user-link="video.user_id" user-watch="true"></a>\n <span class="media_modal_date" ng-bind="video.date | dateOrTime :true"></span>\n </div>\n\n <div class="media_modal_title_wrap" my-i18n="media_modal_video"></div>\n </div>\n</div>\n\n<div class="modal-dialog">\n <div class="modal-content">\n <div my-modal-width="{{video.full.width - 32}}" class="media_modal_wrap video_modal_wrap" my-modal-position animation="no">\n\n <div class="modal-body">\n <div class="video_modal_image_wrap" my-load-video video="video"></div>\n\n </div>\n\n </div>\n </div>\n</div>'),e.put("partials/desktop/welcome.html",'<div my-head></div>\n\n<div ng-if="showWelcome">\n\n <div class="welcome_form">\n <div class="welcome_logo"></div>\n\n <h3 class="welcome_header" my-i18n="welcome_header_md"></h3>\n\n <div class="welcome_text">\n <p my-i18n="welcome_text_1_md"></p>\n </div>\n <div class="welcome_btn_wrap">\n <a href="#/login" class="btn btn-primary btn-block" my-i18n="welcome_start_messaging"></a>\n </div>\n </div>\n\n <div class="welcome_footer" my-custom-background="#f8f8f8">\n <div class="welcome_cards_wrap clearfix">\n\n <div class="container-fluid">\n <div class="row">\n <div class="col-md-4 col-sm-4">\n <div class="welcome_footer_card_wrap row">\n <div class="welcome_footer_card welcome_footer_card_messaging"></div>\n <h4 my-i18n="welcome_fast_messaging_header"></h4>\n <div class="welcome_footer_card_lead" my-i18n="welcome_fast_messaging_text"></div>\n </div>\n </div>\n\n <div class="col-md-4 col-sm-4">\n <div class="welcome_footer_card_wrap">\n <div class="welcome_footer_card welcome_footer_card_filesharing"></div>\n <h4 my-i18n="welcome_easy_sharing_header"></h4>\n <div class="welcome_footer_card_lead" my-i18n="welcome_easy_sharing_text"></div>\n </div>\n </div>\n\n <div class="col-md-4 col-sm-4">\n <div class="welcome_footer_card_wrap">\n <div class="welcome_footer_card welcome_footer_card_powerful"></div>\n <h4 my-i18n="welcome_powerful_tools_header"></h4>\n <div class="welcome_footer_card_lead" my-i18n="welcome_powerful_tools_text_md"></div>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n\n </div>\n\n\n\n</div>\n'),e.put("partials/mobile/audio_player.html",'<div class="audio_player_wrap clearfix">\n <a class="im_message_file_button" ng-click="togglePlay()" ng-class="{im_message_file_button_dl_audio: audio.downloaded}">\n <i class="im_message_file_button_icon" ng-class="{audio_player_btn_icon_pause: mediaPlayer.player.playing}"></i>\n </a>\n <div class="audio_player_title_wrap">\n <div class="audio_player_meta pull-right" ng-if="audio.downloaded && (mediaPlayer.player.duration || audio.duration)" ng-switch="mediaPlayer.player.playing || mediaPlayer.player.currentTime > 0">\n <span ng-switch-when="true" class="audio_player_duration" ng-bind="mediaPlayer.player.currentTime | durationRemains : (mediaPlayer.player.duration || audio.duration)"></span>\n <span ng-switch-default class="audio_player_duration" ng-bind="mediaPlayer.player.duration || audio.duration | duration"></span>\n </div>\n <a ng-click="download()" class="audio_player_title" ng-switch="::audio.file_name.length > 0">\n <span ng-switch-when="true" ng-bind="::audio.file_name"></span>\n <span ng-switch-default my-i18n="message_attach_audio_message"></span>\n </a>\n <div class="audio_player_meta" ng-if="!audio.downloaded || !(mediaPlayer.player.duration || audio.duration)" ng-switch="audio.progress.enabled">\n <span ng-switch-when="true" class="audio_player_size" ng-bind="audio.progress | formatSizeProgress"></span>\n <span ng-switch-default class="audio_player_size" ng-bind="audio.size | formatSize"></span>\n </div>\n </div>\n <div class="audio_player_actions" ng-if="!audio.progress.enabled && !audio.downloaded">\n <a ng-if="audio._ == \'document\'" ng-click="download()" my-i18n="message_attach_document_download"></a>\n <a ng-click="togglePlay()" my-i18n="message_attach_audio_play"></a>\n </div>\n <div class="audio_player_progress_wrap" ng-if="audio.progress.enabled || audio.downloaded" ng-switch="audio.progress.enabled">\n <div ng-switch-when="true" class="clearfix im_message_cancelable_progress_wrap">\n <a class="im_message_media_progress_cancel pull-right" ng-click="audio.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_down_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: audio.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n <div ng-switch-default class="im_message_playback_progress_wrap">\n <div class="audio_player_seek_slider" my-slider slider-model="mediaPlayer.player.currentTime" slider-max="mediaPlayer.player.duration || audio.duration" slider-onchange="seek(value)"></div>\n </div>\n </div>\n <audio ng-if="audio.url" media-player="mediaPlayer.player">\n <source ng-src="{{::audio.url}}" type="{{audio.mime_type || \'audio/ogg\'}}" volume="{{::volume}}" />\n </audio>\n</div>'),e.put("partials/mobile/changelog_modal.html",'<div class="changelog_modal_wrap">\n\n <a class="modal-close-button" ng-click="$close()"><i></i></a>\n\n <div class="modal-body">\n\n <div class="changelog_card_wrap" ng-switch="lastVersion === false">\n <div ng-switch-when="true">\n <div class="changelog_card"></div>\n <h2 class="changelog_header" my-i18n="changelog_modal_header_recent_updates_md"></h2>\n </div>\n <div ng-switch-default>\n <div class="changelog_card"></div>\n <h2 class="changelog_header" my-i18n="changelog_modal_header_new_updates_md"></h2>\n </div>\n </div>\n\n <div class="changelog_versions_wrap">\n\n <div class="changelog_versions_wrap">\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.6\n <span class="pull-right" my-i18n="changelog_modal_title_current_version"></span>\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New viewer for photos, videos, documents.</li>\n <li>[FirefoxOS] Improved media downloads.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.5\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added embedded Soundcloud tracks and playlists.</li>\n <li>Added global user search to contacts list.</li>\n <li>Added switch to mobile version on window resize.</li>\n <li>Migrate to HTTPS notification</li>\n <li>Bugfixes.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.4\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added embedded Facebook posts and Vimeo videos.</li>\n <li>Improved IE10+ support: downloading files and style fixes.</li>\n <li>Added unsupported media playback warning.</li>\n <li>Bugfixes.</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.3\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added Native Client module: dramatically improved encryption speed; Download and upload speed is now as high as in native applications.</li>\n <li>HTTPS. We recommend you to use <a href="https://web.telegram.org" target="_blank">https://web.telegram.org</a>.</li>\n <li>Added multiple open tabs warning. Please note, that only one tab with Telegram Web will work.</li>\n <li>Added embedded Instagram, Twitter, Vine, YouTube links.</li>\n <li>Jump to selected spot when playing back audio.</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.2\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Usernames support: <a href="" ng-click="changeUsername()">Choose a username right now!</a></li>\n <li>Search can now find public users by username.</li>\n <li>Most popular emoticons shown in \'recent\' when empty</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.1\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>New languages: Spanish, German and Italian are now available </li>\n <li>New custom-made audio player</li>\n <li>Bad browser page for IE 6-9</li>\n <li>Perfomance improvements and bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.3.0\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Log in codes may be received in other Telegram apps</li>\n <li>Partner\'s online status updates automatically</li>\n <li>Added support for non-english hashtags in messages</li>\n <li>Fixed invalid scrollbar width bug</li>\n <li>[Desktop] Added automatic country code detection</li>\n <li>[FirefoxOS] Improved PUSH-notifications for <= 1.1</li>\n <li>[FirefoxOS] Fixed emoji in notifications</li>\n <li>[FirefoxOS] Fixed attachment bug for <= 1.1</li>\n <li>[FirefoxOS] Added phonebook permissions handling</li>\n <li>[FirefoxOS] Added ability to share Gallery photos in Telegram</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.2.9\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Updated mobile layout</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.2.5\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Updated mobile layout</li>\n <li>Improved performance</li>\n <li>Improved messages grouping</li>\n <li>[FirefoxOS] Fixed notifications for <= 1.1</li>\n <li>[FirefoxOS] Fixed phonebook import</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.2.1\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Improved key generation performance on slow devices</li>\n <li>Added network sleep for mobile devices</li>\n <li>[FirefoxOS] Added support of PUSH notifications</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.2\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Updated contacts list, added edit mode</li>\n <li>First Firefox OS release. See <a href="https://marketplace.firefox.com/app/telegram" target="_blank">Firefox Marketplace</a></li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.9\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.9\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Improvements of performance</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.8\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.8\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Improved mobile layout</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.7\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.7\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Improved mobile layout</li>\n <li>Added file cache for Firefox and Android</li>\n <li>New design for forwarded messages</li>\n <li>Hash-tags support</li>\n <li>Messaging bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.6\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.6\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added search of messages</li>\n <li>Improved performance of chats with lots of unread messages</li>\n <li>Bugfixes</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.5\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.5\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added registration</li>\n <li>Improved experience for newly registered users</li>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.4\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.4\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Browse userpic history (click on the photo in user info)</li>\n <li>New <a href="https://github.com/zhukov/webogram" target="_blank" title="Source code on GitHub">GitHub</a>, <a href="https://twitter.com/telegram_web" target="_blank" title="Follow us on Twitter!">Twitter</a> buttons in Settings</li>\n <li>Updated keyboard shortcuts:</li>\n <ul>\n <li><strong>Alt+Home</strong> - switch to first (most recent) conversation</li>\n <li>Removed <strong>Alt+1, 2, 3..</strong> shortcuts due to conflicts in different browsers</li>\n </ul>\n </ul>\n </div>\n </div>\n\n <div class="modal_section changelog_version_wrap" ng-show="canShowVersion(\'0.1.3\')">\n <h3 class="modal_section_header changelog_version_title">\n Version 0.1.3\n </h3>\n <div class="modal_section_body changelog_version_changes">\n <ul class="list-unstyled changelog_version_changes_list">\n <li>Added version history to welcome screen</li>\n <li>Added keyboard shortcuts:</li>\n <ul>\n <li><strong>Tab</strong> - set focus to message field</li>\n <li><strong>Esc</strong> or <strong>Shift+Tab</strong> - set focus to search field</li>\n <li><strong>Up/Down</strong> (while in search field) - move between conversations</li>\n <li><strong>Enter</strong> (while in search field) - open selected or first conversation</li>\n <li><strong>Alt+Up/Down</strong> - move to previous/next conversation</li>\n </ul>\n <li>Improved grouping for messages</li>\n <li>Fixed video modal positioning bug</li>\n <li>Fixed focusing issues on mobile</li>\n </ul>\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/chat_create_modal.html",'<div class="contacts_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: group.creating}" ng-click="createGroup()" ng-bind="group.creating ? \'group_create_submit_active\' : \'group_create_submit\' | i18n" ng-disabled="group.creating"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="group_create_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="createGroup()" my-vertical-position="0.25">\n\n <div class="form-group">\n <input class="form-control input-lg" my-focused type="text" placeholder="{{\'group_create_name\' | i18n}}" ng-model="group.name"/>\n </div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/chat_edit_modal.html",'<div class="contacts_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: group.updating}" ng-click="updateGroup()" ng-bind="group.updating ? \'group_edit_submit_active\' : \'group_edit_submit\' | i18n" ng-disabled="group.updating"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="group_edit_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="updateGroup()" my-vertical-position="0.25">\n\n <div class="form-group">\n <input class="form-control input-lg" my-focused type="text" placeholder="{{\'group_edit_name\' | i18n}}" ng-model="group.name"/>\n </div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/chat_modal.html",'<div class="chat_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-toggle-wrap dropdown" ng-if="chatFull.chat._ != \'chatForbidden\' && !chatFull.chat.left" dropdown>\n <a class="dropdown-toggle navbar-toggle" dropdown-toggle>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </a>\n <ul class="dropdown-menu">\n <li ng-if="chatFull.thumb.location">\n <a ng-click="deletePhoto()" my-i18n="group_modal_menu_delete_photo"></a>\n </li>\n <li>\n <a ng-click="editTitle()" my-i18n="group_modal_menu_edit_group"></a>\n </li>\n <li>\n <a ng-click="leaveGroup()" my-i18n="group_modal_menu_leave_group"></a>\n </li>\n <li>\n <a ng-click="flushHistory()" my-i18n="group_modal_menu_delete_chat"></a>\n </li>\n </ul>\n </div>\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$close()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="group_modal_info"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="mobile_user_modal_photo_profile_wrap">\n\n <img\n class="mobile_user_modal_image mobile_chat_modal_image"\n my-load-thumb\n watch="true"\n thumb="chatFull.thumb"\n />\n\n <div class="mobile_user_modal_info_wrap clearfix">\n <h4 class="mobile_user_modal_header" ng-bind-html="chatFull.chat.rTitle"></h4>\n <p class="mobile_user_modal_status" ng-if="chatFull.chat.participants_count > 0">\n <ng-pluralize count="chatFull.chat.participants_count"\n when="group_modal_pluralize_participants">\n </ng-pluralize>\n </p>\n </div>\n\n </div>\n\n <div class="mobile_modal_action_wrap" ng-if="!chatFull.chat.left && chatFull.participants.participants.length">\n <a class="mobile_modal_action" ng-click="inviteToGroup()" my-i18n="group_modal_add_member"></a>\n </div>\n <div class="mobile_modal_action_wrap" ng-if="chatFull.chat._ != \'chatForbidden\' && chatFull.chat.left">\n <a class="mobile_modal_action" ng-click="returnToGroup()" my-i18n="group_modal_return"></a>\n </div>\n <div class="mobile_modal_action_wrap" ng-if="chatFull.chat._ == \'chatForbidden\'">\n <a class="mobile_modal_action" ng-click="flushHistory()" my-i18n="group_modal_return"></a>\n </div>\n <div class="mobile_modal_action_wrap" ng-if="chatFull.chat._ != \'chatForbidden\' && !chatFull.chat.left && !photo.updating">\n <span class="mobile_modal_action mobile_modal_upload_action">\n <input my-file-upload type="file" multiple="false" class="im_attach_input" size="120" multiple="false" accept="image/x-png, image/png, image/gif, image/jpeg" />\n <my-i18n="group_modal_update_photo"></my-i18n>\n </span>\n </div>\n <div class="mobile_modal_action_wrap" ng-if="photo.updating">\n <span class="mobile_modal_action" my-i18n>\n <my-i18n="group_modal_update_active"></my-i18n>\n <span my-loading-dots></span>\n </span>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="settings.notifications = !settings.notifications" ng-class="settings.notifications ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="group_modal_notifications"></span>\n </a>\n </div>\n\n <div class="mobile_modal_section">\n <h4 class="mobile_modal_section_header" my-i18n="group_modal_members"></h4>\n <div class="mobile_modal_section_body">\n\n <div class="chat_modal_members_list">\n\n <div class="chat_modal_participant_wrap clearfix" ng-repeat="participant in chatFull.participants.participants | orderBy:\'-user.sortStatus\'">\n <a ng-if="participant.canKick" ng-click="kickFromGroup(participant.user_id)" class="chat_modal_participant_kick pull-right" my-i18n="group_modal_members_kick"></a>\n\n <a class="chat_modal_participant_photo pull-left" my-user-photolink="participant.user_id" img-class="chat_modal_participant_photo" status="true"></a>\n\n <div class="chat_modal_participant_name">\n <a my-user-link="participant.user_id"></a>\n </div>\n <div class="chat_modal_participant_status" my-user-status="::participant.user_id"></div>\n </div>\n\n </div>\n\n <div class="chat_modal_members_forbidden" ng-if="chatFull.chat._ == \'chatForbidden\' || chatFull.chat.left" my-i18n="group_modal_members_unavailable"></div>\n\n </div>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/confirm_modal.html",'<div class="confirm_modal_wrap" my-modal-position>\n\n <a class="modal-close-button" ng-click="$dismiss()"><i></i></a>\n\n <div class="modal-body">\n\n <div class="confirm_modal_description" ng-switch="type">\n <span ng-switch-when="LOGOUT" my-i18n="confirm_modal_logout"></span>\n <span ng-switch-when="WEBOGRAM_UPDATED_RELOAD" my-i18n="confirm_modal_update_reload"></span>\n <span ng-switch-when="HISTORY_FLUSH" my-i18n="confirm_modal_history_flush"></span>\n <span ng-switch-when="TERMINATE_SESSIONS" my-i18n="confirm_modal_terminate_sessions"></span>\n\n <span ng-switch-when="FILES_CLIPBOARD_PASTE">\n <ng-pluralize count="files.length"\n when="confirm_modal_clipboard_X_files_send">\n </ng-pluralize>\n </span>\n <span ng-switch-when="FILE_CLIPBOARD_PASTE" my-i18n="confirm_modal_clipboard_file_send"></span>\n <span ng-switch-when="MESSAGE_DELETE" my-i18n="confirm_modal_message_delete"></span>\n <span ng-switch-when="CONTACTS_IMPORT_PERFORM" my-i18n="confirm_modal_contacts_import"></span>\n <div ng-switch-when="LOGIN_PHONE_CORRECT">\n <my-i18n msgid="confirm_modal_login_phone_correct"></my-i18n>\n <div class="confirm_phone_number">\n <span ng-bind="country_code"></span> <span ng-bind="phone_number"></span>\n </div>\n </div>\n <my-i18n>\n <span ng-switch-when="FORWARD_PEER" my-i18n-format="confirm_modal_forward_to_peer"></span>\n <span ng-switch-when="SHARE_CONTACT_PEER" my-i18n-format="confirm_modal_send_to_peer"></span>\n <span ng-switch-when="EXT_SHARE_PEER" my-i18n-format="confirm_modal_share_file_peer"></span>\n <my-i18n-param name="peer">\n <strong ng-switch="peer_id > 0">\n <span ng-switch-when="true" ng-bind-html="peer_data.rFullName"></span>\n <span ng-switch-default ng-bind-html="peer_data.rTitle"></span>\n </strong>\n </my-i18n-param>\n </my-i18n>\n <div ng-switch-when="APPLY_LANG_WITH_RELOAD" my-i18n="confirm_modal_apply_lang_with_reload_md"></div>\n <div ng-switch-when="MIGRATE_TO_HTTPS" my-i18n="confirm_modal_migrate_to_https_md"></div>\n <div ng-switch-when="SWITCH_DESKTOP_VERSION" my-i18n="confirm_modal_resize_desktop_md"></div>\n <div ng-switch-when="SWITCH_MOBILE_VERSION" my-i18n="confirm_modal_resize_mobile_md"></div>\n <span ng-switch-default ng-switch="message.length > 0">\n <span ng-switch-when="true" ng-bind="message"></span>\n <span ng-switch-default my-i18n="confirm_modal_are_u_sure"></span>\n </span>\n </div>\n\n </div>\n\n <div class="modal-footer">\n <a class="btn btn-link" ng-click="$dismiss()" ng-switch="type">\n <span ng-switch-default my-i18n="modal_cancel"></span>\n </a>\n <button type="button" class="btn btn-primary" ng-switch="type" ng-click="$close()" my-focused>\n <span ng-switch-when="LOGOUT" my-i18n="confirm_modal_logout_submit"></span>\n <span ng-switch-when="HISTORY_FLUSH" my-i18n="confirm_modal_history_flush_submit"></span>\n <span ng-switch-when="FILES_CLIPBOARD_PASTE" my-i18n="confirm_modal_clipboard_files_send_submit"></span>\n <span ng-switch-when="FILE_CLIPBOARD_PASTE" my-i18n="confirm_modal_clipboard_file_send_submit"></span>\n <span ng-switch-when="MESSAGE_DELETE" my-i18n="confirm_modal_message_delete_submit"></span>\n <span ng-switch-when="FORWARD_PEER" my-i18n="confirm_modal_forward_message_submit"></span>\n <span ng-switch-when="PHOTO_SHARE_PEER" my-i18n="confirm_modal_share_photo_submit"></span>\n <span ng-switch-when="VIDEO_SHARE_PEER" my-i18n="confirm_modal_share_video_submit"></span>\n <span ng-switch-when="SHARE_CONTACT_PEER" my-i18n="confirm_modal_share_contact_submit"></span>\n <span ng-switch-when="EXT_SHARE_PEER" my-i18n="confirm_modal_share_file_submit"></span>\n <span ng-switch-default my-i18n="modal_ok"></span>\n </button>\n </div>\n\n</div>\n'),e.put("partials/mobile/contacts_modal.html",'<div class="contacts_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header" ng-switch="action">\n\n <ul ng-switch-when="edit" class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-left">\n <a ng-click="toggleEdit(false)" my-i18n="contacts_modal_edit_cancel"></a>\n </li>\n <li class="navbar-quick-right">\n <a ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" ng-click="deleteSelected()">\n <my-i18n msgid="contacts_modal_edit_delete"></my-i18n>\n <strong ng-bind="selectedCount"></strong>\n </a>\n </li>\n </ul>\n\n <div ng-switch-default class="navbar-toggle-wrap dropdown" ng-show="!action" dropdown>\n <a class="dropdown-toggle navbar-toggle" dropdown-toggle>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </a>\n <ul class="dropdown-menu">\n <li>\n <a ng-click="toggleEdit(true)" my-i18n="contacts_modal_edit_list"></a>\n </li>\n <li>\n <a ng-click="importContact()" my-i18n="contacts_modal_new_contact"></a>\n </li>\n </ul>\n </div>\n\n <ul ng-switch-default class="nav navbar-nav navbar-quick-nav">\n <li ng-if="action == \'select\' || action == \'new_group\'" class="navbar-quick-right">\n <a ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" ng-click="submitSelected()" my-i18n="modal_next"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 ng-switch="action">\n <div ng-switch-when="new_group" ng-switch="selectedCount > 0">\n <span ng-switch-when="true">\n <ng-pluralize count="selectedCount" when="contacts_modal_pluralize_new_group_members">\n </ng-pluralize>\n </span>\n <span ng-switch-default my-i18n="group_create_contacts_modal_title"></span>\n </div>\n <span ng-switch-default my-i18n="contacts_modal_title"></span>\n </h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="contacts_modal_search">\n <input class="form-control contacts_modal_search_field no_outline" my-focused type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query"/>\n <a class="contacts_modal_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length"></a>\n </div>\n\n\n <div class="contacts_modal_col contacts_wrap contacts_scrollable_wrap mobile_scrollable_wrap" my-contacts-list-mobile my-infinite-scroller-mobile>\n <ul class="contacts_modal_members_list nav nav-pills nav-stacked">\n\n <li class="contacts_modal_contact_wrap clearfix" ng-repeat="contact in contacts | orderBy:\'user.sortName\' | limitTo: slice.limit track by contact.userID" ng-class="{active: selectedContacts[contact.userID], disabled: disabledContacts[contact.userID]}">\n <a class="contacts_modal_contact" ng-click="contactSelect(contact.userID)">\n\n <i ng-if="multiSelect" class="icon icon-contact-tick"></i>\n\n <div class="contacts_modal_contact_photo pull-left" my-user-photolink="contact.userID" status="true" img-class="contacts_modal_contact_photo"></div>\n <div class="contacts_modal_contact_name" ng-bind-html="contact.user.rFullName"></div>\n <div class="contacts_modal_contact_status" ng-switch="contact.found">\n <span ng-switch-when="true" ng-bind="\'@\' + contact.user.username"></span>\n <span ng-switch-default my-user-status="::contact.userID"></span>\n </div>\n </a>\n </li>\n\n </ul>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/country_select_modal.html",'<div class="countries_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 class="modal_simple_header" my-i18n="country_select_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="countries_modal_search">\n <input class="form-control countries_modal_search_field no_outline" my-focused type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query"/>\n <a class="countries_modal_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length"></a>\n </div>\n\n <div class="countries_modal_col countries_wrap countries_scrollable_wrap mobile_scrollable_wrap" my-countries-list-mobile my-infinite-scroller-mobile>\n <ul class="countries_modal_members_list nav nav-pills nav-stacked">\n\n <li class="countries_modal_country_wrap clearfix" ng-repeat="country in countries | limitTo : slice.limit track by $index">\n <a class="countries_modal_country" ng-click="$close(country)">\n <span class="countries_modal_country_code pull-right" ng-bind="country.code"></span>\n <span class="countries_modal_country_name" ng-bind="country.name"></span>\n </a>\n </li>\n\n </ul>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/dialog.html",'<a class="im_dialog" ng-mousedown="dialogSelect(dialogMessage.peerString, search.messages && dialogMessage.id)">\n\n <div class="im_dialog_meta pull-right text-right">\n <div class="im_dialog_date" ng-bind="dialogMessage.dateText"></div>\n <span\n class="im_dialog_badge badge"\n ng-show="dialogMessage.unreadCount > 0 && !dialogMessage.out"\n ng-bind="dialogMessage.unreadCount"\n ></span>\n <i\n class="im_dialog_unread"\n ng-show="dialogMessage.out && dialogMessage.unread"\n ></i>\n </div>\n\n <div class="im_dialog_photo pull-left">\n <img\n class="im_dialog_photo"\n my-load-thumb\n watch="true"\n thumb="dialogMessage.peerPhoto"\n />\n </div>\n\n <div class="im_dialog_message_wrap">\n\n <div class="im_dialog_peer" ng-switch="dialogMessage.peerID > 0">\n <span class="im_dialog_user" ng-switch-when="true" ng-bind-html="dialogMessage.peerData.rFullName"></span>\n <span class="im_dialog_chat" ng-switch-default>\n <span ng-bind-html="dialogMessage.peerData.rTitle"></span>\n </span>\n </div>\n\n <div ng-switch="dialogMessage.deleted">\n <div ng-switch-when="true" class="im_dialog_message">\n <span class="im_dialog_message_text" my-i18n="conversation_message_deleted"></span>\n </div>\n <div ng-switch-default class="im_dialog_message">\n <span class="im_dialog_chat_from_wrap">\n <span\n class="im_dialog_chat_from"\n ng-if="!dialogMessage.out && dialogMessage.chatID"\n ng-bind-html="dialogMessage.fromUser.rFirstName"\n ></span><span\n class="im_dialog_chat_from"\n ng-if="dialogMessage.out"\n my-i18n="conversation_you"\n ></span>{{((dialogMessage.out || dialogMessage.peerID < 0) && (dialogMessage.message.length || dialogMessage.media && dialogMessage.media._ != \'messageMediaEmpty\')) ? \':\' : \'\'}}\n </span>\n\n <span class="im_dialog_message_media" ng-if="dialogMessage.media" ng-switch="dialogMessage.media._">\n <span ng-switch-when="messageMediaPhoto" my-i18n="conversation_media_photo"></span>\n <span ng-switch-when="messageMediaVideo" my-i18n="conversation_media_video"></span>\n <span ng-switch-when="messageMediaDocument" ng-bind="dialogMessage.media.document.file_name"></span>\n <span ng-switch-when="messageMediaAudio" my-i18n="conversation_media_audio"></span>\n <span ng-switch-when="messageMediaGeo" my-i18n="conversation_media_location"></span>\n <span ng-switch-when="messageMediaContact" my-i18n="conversation_media_contact"></span>\n </span>\n\n <span class="im_dialog_message_service" ng-if="dialogMessage._ == \'messageService\'" ng-switch="dialogMessage.action._">\n <span ng-switch-when="messageActionChatCreate" my-i18n="conversation_group_created"></span>\n <span ng-switch-when="messageActionChatEditTitle" my-i18n="conversation_group_renamed"></span>\n <span ng-switch-when="messageActionChatEditPhoto" my-i18n="conversation_group_photo_updated"></span>\n <span ng-switch-when="messageActionChatDeletePhoto" my-i18n="conversation_group_photo_removed"></span>\n\n <span ng-switch-when="messageActionChatAddUser" ng-switch="dialogMessage.from_id == dialogMessage.action.user_id">\n <span ng-switch-when="true" my-i18n="conversation_returned_to_group"></span>\n <span ng-switch-default my-i18n="conversation_invited_user">\n <my-i18n-param name="user" ng-bind-html="dialogMessage.action.user.rFullName"></my-i18n-param>\n </span>\n </span>\n\n <span ng-switch-when="messageActionChatDeleteUser" ng-switch="dialogMessage.from_id == dialogMessage.action.user_id">\n <span ng-switch-when="true" my-i18n="conversation_left_group"></span>\n <span ng-switch-default my-i18n="conversation_kicked_user">\n <my-i18n-param name="user" ng-bind-html="dialogMessage.action.user.rFullName"></my-i18n-param>\n </span>\n </span>\n </span>\n\n <span class="im_dialog_message_text" ng-if="dialogMessage.message.length" ng-bind-html="dialogMessage.richMessage"></span>\n </div>\n </div>\n\n </div>\n</a>\n'),e.put("partials/mobile/edit_contact_modal.html",'<div class="import_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: progress.enabled}" ng-click="doImport()" ng-bind="progress.enabled ? \'contact_edit_modal_submit_active\' : \'contact_edit_modal_submit\'| i18n" ng-disabled="progress.enabled"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="contact_edit_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="doImport()" my-vertical-position="0.3">\n\n <div class="form-group">\n <span class="form-control uneditable_input input-lg disabled" disabled my-focused type="text" ng-bind="importContact.phone | phoneNumber"></span>\n </div>\n <div class="form-group">\n <input class="form-control input-lg" type="text" placeholder="{{\'contact_edit_modal_first_name\' | i18n}}" ng-model="importContact.first_name"/>\n </div>\n <div class="form-group">\n <input class="form-control input-lg" type="text" placeholder="{{\'contact_edit_modal_last_name\' | i18n}}" ng-model="importContact.last_name"/>\n </div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/error_modal.html",'<div class="error_modal_wrap" my-modal-position>\n\n <a class="modal-close-button" ng-click="$close()"><i></i></a>\n\n <div class="modal-body">\n\n <h4 ng-if="error" class="modal_simple_header" ng-switch="error.type">\n <span ng-switch-when="MEDIA_TYPE_NOT_SUPPORTED" my-i18n="error_modal_media_not_supported_title"></span>\n <span ng-switch-default ng-switch="error.code">\n <span ng-switch-when="400" my-i18n="error_modal_bad_request_title"></span>\n <span ng-switch-when="401" my-i18n="error_modal_unauthorized_title"></span>\n <span ng-switch-when="403" my-i18n="error_modal_forbidden_title"></span>\n <span ng-switch-when="404" my-i18n="error_modal_not_found_title"></span>\n <span ng-switch-when="406" my-i18n="error_modal_network_title"></span>\n <span ng-switch-when="420" my-i18n="error_modal_flood_title"></span>\n <span ng-switch-default my-i18n="error_modal_internal_title"></span>\n </span>\n </h4>\n <h4 ng-if="!error" class="modal_simple_header" ng-switch="title.length > 0">\n <span ng-switch-when="true" ng-bind="title"></span>\n <span ng-switch-default my-i18n="error_modal_alert"></span>\n </h4>\n\n <div ng-if="error" class="error_modal_description" ng-switch="error.type">\n <span ng-switch-when="NETWORK_BAD_REQUEST" my-i18n="error_modal_network_description"></span>\n <span ng-switch-when="NETWORK_BAD_RESPONSE" my-i18n="error_modal_network_description"></span>\n <span ng-switch-when="FIRSTNAME_INVALID" my-i18n="error_modal_firstname_invali_description"></span>\n <span ng-switch-when="LASTNAME_INVALID" my-i18n="error_modal_lastname_invalid_description"></span>\n <span ng-switch-when="PHONE_NUMBER_INVALID" my-i18n="error_modal_phone_invalid_description"></span>\n <span ng-switch-when="USERS_TOO_MUCH" my-i18n="error_modal_users_too_much_description"></span>\n <span ng-switch-when="PHOTO_INVALID_DIMENSIONS" my-i18n="error_modal_photo_dimensions_invalid_description"></span>\n <span ng-switch-when="VIDEO_EXT_INVALID" my-i18n="error_modal_video_file_invalid_description"></span>\n <span ng-switch-when="PHOTO_CROP_SIZE_SMALL" my-i18n="error_modal_photo_too_small_description"></span>\n <span ng-switch-when="USER_NOT_USING_TELEGRAM" my-i18n="error_modal_no_phone_user_description_md"></span>\n <span ng-switch-when="USERS_NOT_USING_TELEGRAM" my-i18n="error_modal_no_phone_users_description_md"></span>\n <span ng-switch-when="PHONEBOOK_GET_CONTACTS_FAILED" my-i18n="error_modal_phonebook_required_description"></span>\n <span ng-switch-when="USERNAME_INVALID" my-i18n="error_modal_username_invalid_description"></span>\n <span ng-switch-when="USERNAME_OCCUPIED" my-i18n="error_modal_username_occupied_description"></span>\n <span ng-switch-when="MEDIA_TYPE_NOT_SUPPORTED" my-i18n="error_modal_media_not_supported_description"></span>\n\n\n <div ng-switch-default ng-switch="error.code">\n <span ng-switch-when="400" my-i18n="error_modal_bad_request_description"></span>\n <span ng-switch-when="401" my-i18n="error_modal_unauthorized_description">\n <my-i18n-param name="login-link"><a href="#/login">{0}</a></my-i18n-param>\n </span>\n <span ng-switch-when="403" my-i18n="error_modal_forbidden_description"></span>\n <span ng-switch-when="404" my-i18n="error_modal_not_found_description"></span>\n <span ng-switch-when="420" my-i18n="error_modal_flood_description"></span>\n <span ng-switch-default my-i18n="error_modal_internal_description"></span>\n </div>\n\n </div>\n\n <div ng-if="error" class="error_modal_details" ng-switch="error.detailsShown">\n <textarea ng-switch-when="true" rows="3" onclick="this.select()">Method: {{error.input || \'N/A\'}}\nResult: {{error.originalError ? error.originalError : (error.stack ? (error.name || \'\') + \' \' + (error.description || error.message) : error)}}\nStack: {{error.originalError.stack || error.stack}}</textarea>\n <div ng-switch-default>\n <a href="" ng-click="error.detailsShown = true" my-i18n="error_modal_tech_details"></a>\n </div>\n </div>\n\n <div ng-if="!error" class="error_modal_description" ng-bind="description"></div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/full_gif.html",'<a class="img_gif_with_progress_wrap" ng-click="toggle($event)">\n\n <div class="img_gif_image_wrap" ng-switch="document.downloaded && isActive">\n\n <img ng-switch-when="true" class="img_gif_image" ng-src="{{document.url}}" />\n <img ng-switch-default class="img_gif_thumb" my-load-thumb thumb="document.thumb" />\n\n </div>\n\n <div ng-show="!isActive" ng-switch="document.progress.enabled">\n\n <div ng-switch-when="true" class="img_gif_progress_wrap">\n <div class="img_gif_progress progress tg_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: document.progress.percent + \'%\'}"></div>\n </div>\n </div>\n\n <div ng-switch-default class="img_gif_info_wrap">\n <div class="img_gif_label pull-left">GIF</div>\n <div ng-if="!document.downloaded" class="img_gif_size pull-right" ng-bind="::document.size | formatSize"></div>\n </div>\n\n </div>\n\n</a>'),e.put("partials/mobile/full_photo.html",'<div class="img_fullsize_with_progress_wrap">\n <div class="img_fullsize_progress_overlay" ng-show="progress.enabled">\n <div class="img_fullsize_progress_wrap">\n <div class="img_fullsize_progress progress tg_progress" ng-show="progress.percent > 0">\n <div class="progress-bar progress-bar-success" ng-style="{width: progress.percent + \'%\'}">\n </div>\n </div>\n </div>\n </div>\n <div class="photo_full_wrap">\n <a class="photo_modal_image">\n <img class="photo_modal_image"/>\n </a>\n </div>\n <div class="photo_modal_error_wrap" ng-if="error">\n <div class="photo_modal_error" ng-if="error.html" ng-bind-html="error.html"></div>\n <div class="photo_modal_error" ng-if="error.text" ng-bind="error.text"></div>\n </div>\n</div>'),e.put("partials/mobile/full_video.html",'<div class="img_fullsize_with_progress_wrap" ng-style="{width: video.full.width + \'px\', height: video.full.height + \'px\'}">\n <div class="img_fullsize_progress_overlay" ng-show="video.progress.enabled">\n <div class="img_fullsize_progress_wrap" ng-style="{width: video.full.width + \'px\', height: video.full.height + \'px\'}">\n <div class="img_fullsize_progress progress tg_progress">\n <div class="progress-bar progress-bar-success" style="width: {{video.progress.percent}}%"></div>\n </div>\n </div>\n </div>\n <div class="img_fullsize_wrap" ng-if="!video.url">\n <img\n class="img_fullsize"\n my-load-thumb\n thumb="video.fullThumb"\n />\n </div>\n <div class="video_full_player" ng-if="video.url" ng-switch="player.quicktime">\n <embed ng-switch-when="true" ng-src="{{video.url}}" width="{{video.full.width}}" height="{{video.full.height}}" autoplay="true" CONTROLLER="TRUE" SHOWCONTROLS="TRUE" controller="true" loop="false" pluginspace="http://www.apple.com/quicktime/" />\n <video ng-switch-default width="{{video.full.width}}" height="{{video.full.height}}" controls autoplay >\n <source ng-src="{{video.url}}" type="video/mp4">\n </video>\n </div>\n <div class="video_full_error_wrap" ng-if="error">\n <div class="video_full_error" ng-if="error.html" ng-bind-html="error.html"></div>\n <div class="video_full_error" ng-if="error.text" ng-bind="error.text"></div>\n </div>\n</div>'),e.put("partials/mobile/head.html",'<div class="tg_page_head">\n <div class="navbar navbar-static-top navbar-inverse" role="navigation" ng-class="{navbar_peer_not_selected: !curDialog.peer, navbar_offline: offline, navbar_history_select: historyState.selectActions}">\n <div class="container">\n\n <a class="navbar-peer-wrap" ng-click="showPeerInfo()">\n <img\n my-load-thumb\n watch="true"\n thumb="historyPeer.photo"\n />\n </a>\n\n <div class="navbar-toggle-wrap dropdown" dropdown>\n <a class="dropdown-toggle navbar-toggle" dropdown-toggle>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </a>\n <ul ng-if="!curDialog.peer && isLoggedIn" class="dropdown-menu">\n <li><a ng-click="openGroup()" my-i18n="head_new_group"></a></li>\n <li><a ng-click="importContact()" my-i18n="head_new_contact"></a></li>\n <li ng-if="!isEmpty.contacts"><a ng-click="openContacts()" my-i18n="head_contacts"></a></li>\n <li><a ng-click="openSettings()" my-i18n="head_settings"></a></li>\n <li><a ng-click="logOut()" my-i18n="head_log_out"></a></li>\n </ul>\n <ul ng-if="curDialog.peer && isLoggedIn" class="dropdown-menu">\n <li><a ng-click="toggleEdit()" my-i18n="head_edit_messages"></a></li>\n <li ng-if="!historyFilter.mediaType" class="divider"></li>\n <li ng-if="!historyFilter.mediaType"><a ng-click="toggleMedia(\'photos\')" my-i18n="head_media_photos"></a></li>\n <li ng-if="!historyFilter.mediaType"><a ng-click="toggleMedia(\'video\')" my-i18n="head_media_video"></a></li>\n <li ng-if="!historyFilter.mediaType"><a ng-click="toggleMedia(\'documents\')" my-i18n="head_media_documents"></a></li>\n <li ng-if="!historyFilter.mediaType"><a ng-click="toggleMedia(\'audio\')" my-i18n="head_media_audio"></a></li>\n </ul>\n <ul ng-if="!isLoggedIn" class="dropdown-menu">\n <li><a href="https://github.com/zhukov/webogram" target="_blank" my-i18n="head_about"></a></li>\n </ul>\n </div>\n\n <a ng-if="isLoggedIn" class="navbar-search-wrap" ng-click="toggleSearch()">\n <i class="icon-search"></i>\n </a>\n\n <div class="navbar-header">\n\n <a class="navbar-brand" href="{{isLoggedIn ? \'#/im\' : \'#/\'}}"><span class="tg_head_logo"></span></a>\n\n <div ng-show="curDialog.peer" ng-switch="curDialog.peer && historyFilter.mediaType.length > 0">\n <ul ng-switch-when="true" class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="toggleMedia()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title" ng-switch="historyFilter.mediaType">\n <h4 ng-switch-when="photos" my-i18n="head_media_photos"></h4>\n <h4 ng-switch-when="video" my-i18n="head_media_video"></h4>\n <h4 ng-switch-when="documents" my-i18n="head_media_documents"></h4>\n <h4 ng-switch-when="audio" my-i18n="head_media_audio"></h4>\n </div>\n </a>\n </li>\n </ul>\n <div ng-switch-default ng-switch="historyState.selectActions">\n <ul ng-switch-when="true" class="nav navbar-navbar navbar-quick-nav navbar-history-edit">\n <li class="navbar-quick-right">\n <a ng-click="toggleEdit()" my-i18n="modal_cancel"></a>\n </li>\n <li class="navbar-quick-left">\n <a ng-click="selectedFlush()" my-i18n="head_clear_all"></a>\n </li>\n <li class="navbar-quick-title" my-i18n="head_edit"></li>\n </ul>\n <ul ng-switch-default class="nav navbar-nav navbar-quick-nav" ng-switch="historyPeer.id > 0">\n <li ng-switch-when="true">\n <a href="#/im" class="navbar-quick-profile-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 ng-bind-html="historyPeer.data.rFullName"></h4>\n <small ng-switch="historyState.typing.length">\n <span ng-switch-when="1" class="status_online">\n <my-i18n msgid="head_typing"></my-i18n><span my-loading-dots></span>\n </span>\n <span ng-switch-default my-user-status="historyPeer.id"></span>\n </small>\n </div>\n </a>\n </li>\n <li ng-switch-default>\n <a href="#/im" class="navbar-quick-group-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 ng-bind-html="historyPeer.data.rTitle"></h4>\n <small ng-switch="historyState.typing.length">\n <ng-pluralize ng-switch-when="0" count="historyPeer.data.participants_count"\n when="head_pluralize_participants">\n </ng-pluralize>\n <my-i18n>\n <span ng-switch-when="1" class="status_online" my-i18n-format="head_one_typing"></span>\n <span ng-switch-when="2" class="status_online" my-i18n-format="head_two_typing"></span>\n <span ng-switch-default class="status_online" my-i18n-format="head_many_typing"></span>\n <my-i18n-param name="name1"><span my-user-link="historyState.typing[0]" short="true"></span></my-i18n-param>\n <my-i18n-param name="name2"><span my-user-link="historyState.typing[1]" short="true"></span></my-i18n-param>\n <my-i18n-param name="names" ng-bind="historyState.typing.length - 1"></my-i18n-param>\n <my-i18n-param name="dots"><span my-loading-dots></span></my-i18n-param>\n </my-i18n>\n </small>\n </div>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n\n <div class="navbar-menu" ng-if="offline">\n\n <ul class="nav navbar-nav navbar-offline">\n <li ng-show="!offlineConnecting"><span class="navbar-offline-text"><my-i18n msgid="head_waiting_for_network"></my-i18n><span my-loading-dots></span></span></li>\n <li ng-show="!offlineConnecting" class="hidden-xs"><a href="" ng-click="retryOnline()" my-i18n="head_retry"></a></li>\n <li ng-show="offlineConnecting"><span class="navbar-offline-text"><my-i18n msgid="head_connecting"></my-i18n><span my-loading-dots></span></span></li>\n </ul>\n </div>\n\n </div>\n </div>\n</div>\n'),e.put("partials/mobile/im.html",'<div my-head></div>\n\n<div class="im_page_wrap" ng-class="{im_page_peer_not_selected: !curDialog.peer}">\n\n <div class="im_page_split clearfix">\n\n <div ng-controller="AppImDialogsController" my-dialogs has-tabs="{{search.query.length > 0}}" class="im_dialogs_col_wrap">\n <div class="im_dialogs_panel">\n <div class="im_dialogs_search">\n <input class="form-control im_dialogs_search_field no_outline" type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query"/>\n <a class="im_dialogs_search_clear" ng-click="searchClear()" ng-show="search.query.length"></a>\n </div>\n\n <div class="im_dialogs_tabs_wrap">\n <div class="im_dialogs_tabs clearfix">\n <a href="" class="im_dialogs_tab" ng-class="{active: !search.messages}" ng-click="search.messages = false" my-i18n="im_conversations"></a>\n <a href="" class="im_dialogs_tab" ng-class="{active: search.messages}" ng-click="search.messages = true" my-i18n="im_messages"></a>\n </div>\n </div>\n </div>\n\n <div my-dialogs-list-mobile class="im_dialogs_col im_dialogs_scrollable_wrap mobile_scrollable_wrap">\n\n <div class="im_dialogs_empty_wrap" ng-if="isEmpty.contacts" my-vertical-position="0.4">\n <h3 class="im_dialogs_empty_header" my-i18n="im_no_contacts"></h3>\n <p class="im_dialogs_empty_lead" my-i18n="im_get_started_long"></p>\n <button type="button" class="btn btn-primary btn-block im_dialogs_add_contact" ng-click="importContact()" my-i18n="im_add_contact"></button>\n <button ng-if="phonebookAvailable" type="button" class="btn btn-primary btn-block im_dialogs_import_phonebook" ng-click="importPhonebook()" my-i18n="im_import_phonebook"></button>\n </div>\n\n <div ng-switch="search.messages">\n <ul ng-switch-when="true" class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs track by dialogMessage.id" ng-class="{active: curDialog.peerID == dialogMessage.peerID && curDialog.messageID == dialogMessage.id}"></li>\n </ul>\n <ul ng-switch-default class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs track by dialogMessage.peerID" ng-class="{active: curDialog.peerID == dialogMessage.peerID}"></li>\n </ul>\n </div>\n\n <div class="im_dialogs_contacts_wrap" ng-show="!search.messages && contacts.length > 0">\n <h5 my-i18n="im_contacts_title"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="contact in contacts | orderBy:\'user.sortName\' track by contact.userID" ng-class="{active: curDialog.peerID == contact.userID}">\n <a class="im_dialog" ng-mousedown="dialogSelect(contact.peerString)">\n <div class="im_dialog_photo pull-left" my-user-photolink="contact.userID" img-class="im_dialog_photo"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-user-link="contact.userID"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" my-user-status="::contact.userID"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n\n <div class="im_dialogs_contacts_wrap" ng-show="!search.messages && foundUsers.length > 0">\n <h5 my-i18n="im_found_title"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="foundUser in foundUsers track by foundUser.userID" ng-class="{active: curDialog.peerID == foundUser.userID}">\n <a class="im_dialog" ng-mousedown="dialogSelect(foundUser.peerString)">\n <div class="im_dialog_photo pull-left" my-user-photolink="foundUser.userID" img-class="im_dialog_photo"></div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" my-user-link="foundUser.userID"></span>\n </div>\n <div class="im_dialog_message" ng-switch="foundUser.user.username.length > 0">\n <span ng-switch-when="true" class="im_dialog_message_text" ng-bind="::\'@\' + foundUser.user.username"></span>\n <span ng-switch-default class="im_dialog_message_text" my-user-status="::foundUser.userID"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n\n </div>\n </div>\n\n <div class="im_history_col_wrap" ng-controller="AppImHistoryController">\n <div ng-show="!state.notSelected && !state.loaded" class="im_history_not_selected" my-vertical-position="0.35" padding="true">\n <my-i18n msgid="im_loading_history"></my-i18n><span my-loading-dots></span>\n </div>\n\n <div ng-show="state.loaded">\n <div my-history-mobile class="im_history_col">\n\n <div class="im_history_wrap im_history_scrollable_wrap mobile_scrollable_wrap">\n\n <div class="im_history_scrollable">\n <div class="im_history" ng-class="{im_history_selectable: historyState.selectActions}">\n <div ng-if="state.empty" class="im_history_empty" ng-switch="state.mayBeHasMore" my-vertical-position="0.25" padding="true">\n <span ng-switch-when="true">\n <my-i18n msgid="im_loading_history"></my-i18n><span my-loading-dots></span>\n </span>\n <span ng-switch-default my-i18n="im_no_messages"></span>\n </div>\n\n <div class="im_history_messages" ng-class="{im_history_messages_group: historyPeer.id < 0}">\n <div class="im_history_messages_peer" ng-show="peerHistory.peerID == historyPeer.id" ng-repeat="peerHistory in peerHistories">\n <div class="im_history_message_wrap" my-message ng-repeat="historyMessage in peerHistory.messages"></div>\n </div>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n <div class="im_bottom_panel_wrap">\n\n <div class="im_edit_panel_wrap clearfix" ng-show="historyState.selectActions">\n <div class="im_edit_selected_actions" my-i18n>\n <a class="btn btn-primary im_edit_forward_btn" ng-click="selectedForward()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_forward"></a><a class="btn btn-danger im_edit_delete_btn" ng-click="selectedDelete()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_delete"></a>\n <my-i18n-param name="count"><strong class="im_selected_count" ng-show="selectedCount > 0" ng-bind="selectedCount"></strong></my-i18n-param>\n </div>\n </div>\n\n <div class="im_send_panel_wrap" ng-hide="historyState.selectActions">\n\n <div class="im_send_form_wrap1">\n\n <div class="im_send_form_wrap clearfix" ng-controller="AppImSendController">\n <form my-send-form draft-message="draftMessage" class="im_send_form" ng-class="{im_send_form_empty: !draftMessage.text.length}">\n\n <div class="im_send_field_wrap">\n <div class="im_send_dropbox_wrap" my-i18n="im_photos_drop_text"></div>\n <textarea ng-model="draftMessage.text" placeholder="{{\'im_message_field_placeholder\' | i18n}}" class="form-control im_message_field no_outline"></textarea>\n </div>\n\n <div class="im_attach pull-right">\n <input type="file" class="im_attach_input" size="28" multiple="true" title="{{\'im_media_attach_title\' | i18n}}" />\n <i class="icon icon-paperclip"></i>\n </div>\n\n <div class="im_emoji_btn pull-right" title="{{\'im_emoji_btn_title\' | i18n}}">\n <i class="icon icon-emoji"></i>\n </div>\n\n <button type="submit" class="btn btn-success im_submit"></button>\n </form>\n </div>\n\n </div>\n\n </div>\n\n </div>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>'),e.put("partials/mobile/import_contact_modal.html",'<div class="import_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: progress.enabled}" ng-click="doImport()" ng-bind="progress.enabled ? \'contact_import_modal_submit_active\' : \'contact_import_modal_submit\' | i18n" ng-disabled="progress.enabled"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="contact_import_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="doImport()" my-vertical-position="0.2">\n\n <div class="form-group">\n <input class="form-control input-lg" my-focused type="text" placeholder="{{\'contact_import_modal_phone\' | i18n}}" ng-model="importContact.phone"/>\n </div>\n <div class="form-group">\n <input class="form-control input-lg" type="text" placeholder="{{\'contact_edit_modal_first_name\' | i18n}}" ng-model="importContact.first_name"/>\n </div>\n <div class="form-group">\n <input class="form-control input-lg" type="text" placeholder="{{\'contact_edit_modal_last_name\' | i18n}}" ng-model="importContact.last_name"/>\n </div>\n \n <div class="import_modal_phonebook_wrap" ng-if="phonebookAvailable">\n <a class="btn btn-link" ng-click="importPhonebook()" my-i18n="contact_import_modal_phonebook"></a>\n </div>\n\n </form>\n\n </div>\n</div>'),e.put("partials/mobile/login.html",'<div my-head></div>\n\n\n<div class="login_form_wrap" my-vertical-position="0.3">\n <div class="error" ng-if="error.message" ng-bind="error.message"></div>\n\n <form name="mySendCodeForm" ng-if="!credentials.phone_code_hash" ng-submit="sendCode()">\n <h3 class="login_form_head" my-i18n="login_sign_in"></h3>\n <p class="login_form_lead" my-i18n="login_enter_number_description"></p>\n\n <div class="login_country_selector" ng-click="chooseCountry()">\n <span ng-bind="credentials.phone_country_name"></span>\n <i class="icon icon-caret pull-right"></i>\n </div>\n\n <div class="form-group" ng-class="{\'has-error\': error.field == \'phone\'}">\n <label class="control-label" ng-if="error.field == \'phone\'" my-i18n="login_incorrect_number"></label>\n <div class="clearfix">\n <input type="tel" autocomplete="off" class="form-control pull-left login_phone_country" my-focused name="phone_country" ng-model="credentials.phone_country">\n <input type="tel" autocomplete="off" class="form-control pull-left login_phone_number" my-focus-on="country_selected" name="phone_number" ng-model="credentials.phone_number" placeholder="{{\'login_tel_input_placeholder\' | i18n}}" required>\n </div>\n </div>\n <button class="btn btn-primary btn-block" ng-class="{disabled: progress.enabled}" ng-disabled="progress.enabled" type="submit" ng-switch="progress.enabled">\n <span ng-switch-when="true"><my-i18n msgid="login_generating_key"></my-i18n><span my-loading-dots></span></span>\n <span ng-switch-default my-i18n="modal_next"></span>\n </button>\n <div class="login_form_messaging" ng-show="progress.enabled" my-i18n="login_generating_keys_info"></div>\n </form>\n\n <form name="myLoginForm" ng-if="credentials.phone_code_hash && !credentials.phone_code_valid" ng-submit="logIn()">\n <h3 class="login_form_head"><span ng-bind="credentials.phone_country"></span> <span ng-bind="credentials.phone_number"></span></h3>\n <div class="login_edit_phone"><a ng-click="editPhone()" my-i18n="login_edit_number"></a></div>\n <div ng-switch="credentials.viaApp">\n <div ng-switch-when="true">\n <p class="login_form_lead" my-i18n="login_enter_code_label_md"></p>\n <p class="login_form_lead">\n <a ng-click="sendSms()" my-i18n="login_code_not_received"></a>\n </p>\n </div>\n <div ng-switch-default>\n <p class="login_form_lead" my-i18n="login_enter_sms_code_label_md"></p>\n\n <p class="login_form_lead">\n <span ng-show="callPending.remaining > 0" my-i18n="login_call_remaining">\n <my-i18n-param name="remaining">{{callPending.remaining | duration}}</my-i18n-param>\n </span>\n <span ng-show="!callPending.remaining && !callPending.success" my-i18n="login_calling"></span>\n <span ng-show="!callPending.remaining && callPending.success" my-i18n="login_number_dialed"></span>\n </p>\n </div>\n </div>\n\n <div class="form-group" ng-class="{\'has-error\': error.field == \'phone_code\'}">\n <label class="control-label" for="phone_code" ng-if="error.field == \'phone_code\'" my-i18n="login_incorrect_sms_code"></label>\n <input type="number" my-focused class="form-control login_phone_code" name="phone_code" ng-model="credentials.phone_code" placeholder="{{\'login_number_input_placeholder\' | i18n}}" autocomplete="off" required>\n </div>\n\n <button class="btn btn-primary btn-block" type="submit" ng-class="{disabled: progress.enabled}" ng-disabled="progress.enabled" ng-switch="progress.enabled">\n <span ng-switch-when="true"><my-i18n msgid="login_checking_code"></my-i18n><span my-loading-dots></span></span>\n <span ng-switch-default my-i18n="modal_next"></span>\n </button>\n </form>\n\n <form name="myFullNameForm" ng-if="credentials.phone_code_valid && credentials.phone_unoccupied" ng-submit="logIn(true)">\n <h3 class="login_form_head" my-i18n="login_your_info"></h3>\n <p class="login_form_lead" my-i18n="login_fulll_name_label"></p>\n\n <div class="form-group login_first_name_wrap" ng-class="{\'has-error\': error.field == \'first_name\'}">\n <label class="control-label" for="first_name" ng-if="error.field == \'first_name\'" my-i18n="login_incorrect_first_name"></label>\n <input my-focused class="form-control" name="first_name" ng-model="credentials.first_name" placeholder="{{\'login_first_name\' | i18n}}" autocomplete="off" required>\n </div>\n\n <div class="form-group" ng-class="{\'has-error\': error.field == \'last_name\'}">\n <label class="control-label" for="last_name" ng-if="error.field == \'last_name\'" my-i18n="login_incorrect_last_name"></label>\n <input class="form-control" name="last_name" ng-model="credentials.last_name" placeholder="{{\'login_last_name\' | i18n}}" autocomplete="off">\n </div>\n\n <button class="btn btn-primary btn-block" ng-class="{disabled: progress.enabled}" ng-disabled="progress.enabled" type="submit" ng-switch="progress.enabled">\n <span ng-switch-when="true"><my-i18n msgid="login_signing_up"></my-i18n><span my-loading-dots></span></span>\n <span ng-switch-default my-i18n="login_sign_up"></span>\n </button>\n </form>\n\n</div>\n\n<!-- <div my-lang-footer></div> -->'),e.put("partials/mobile/media_modal_layout.html",'<div tabindex="-1" role="dialog" class="modal" ng-style="{\'z-index\': 1050 + index*10}" ng-click="close($event)" modal-transclude></div>'),e.put("partials/mobile/message.html",'<div class="im_message_outer_wrap" ng-click="toggleMessage(historyMessage.id, $event)">\n\n\n <div class="im_message_wrap clearfix">\n\n <div class="im_service_message_wrap" ng-if="::historyMessage._ == \'messageService\'">\n <div class="im_service_message">\n <a class="im_message_author" my-user-link="historyMessage.from_id" short="!historyMessage.to_id.chat_id" color="historyMessage.to_id.chat_id > 0"></a>\n <span class="im_message_service" my-service-message></span>\n </div>\n\n <a ng-if="::historyMessage.action._ == \'messageActionChatEditPhoto\'" class="im_service_message_photo_thumb" href="" ng-click="openPhoto(historyMessage.action.photo.id)">\n <img\n class="im_service_message_photo_thumb"\n my-load-thumb\n thumb="historyMessage.action.photo.thumb"\n />\n </a>\n\n </div>\n\n <div ng-if="::historyMessage._ != \'messageService\'" class="im_content_message_wrap" ng-class="::[historyMessage.out ? \'im_message_out\' : \'im_message_in\']">\n <i ng-if="::historyMessage.unread || historyMessage.pending || false" class="icon-message-status" ng-class="{\'icon-message-status-unread\': historyMessage.unread, \'icon-message-status-pending\': historyMessage.pending}" ng-show="!historyMessage.error"></i>\n\n <a class="im_message_from_photo pull-left" my-user-photolink="historyMessage.from_id" img-class="im_message_from_photo"></a>\n\n <div class="im_message_meta pull-right text-right">\n <i class="icon-message-status-tick"></i>\n <span class="im_message_date" ng-bind="::historyMessage.date | time"></span>\n </div>\n\n <div class="im_message_body" ng-class="::{im_message_body_media: !!historyMessage.media}">\n\n <a class="im_message_author" my-user-link="historyMessage.from_id" short="!historyMessage.to_id.chat_id" color="historyMessage.to_id.chat_id > 0"></a>\n\n <div ng-if="::historyMessage._ == \'messageForwarded\' && !historyMessage.media" class="im_message_fwd_header" my-i18n="message_forwarded_message_mobile">\n <a my-i18n-param="from" class="im_message_fwd_author" my-user-link="historyMessage.fwd_from_id"></a>\n <span my-i18n-param="date" class="im_message_fwd_date" ng-bind="::historyMessage.fwd_date | dateOrTime"></span>\n </div>\n\n <div ng-if="::historyMessage.media || false" class="im_message_media" ng-switch="historyMessage.media._">\n\n <div ng-switch-when="messageMediaPhoto" my-message-photo></div>\n <div ng-switch-when="messageMediaVideo" my-message-video="historyMessage.media.video" message-id="historyMessage.id"></div>\n <div ng-switch-when="messageMediaDocument" my-message-document="historyMessage.media.document" message-id="historyMessage.id"></div>\n <div ng-switch-when="messageMediaAudio" class="im_message_audio" my-audio-player audio="historyMessage.media.audio"></div>\n <div ng-switch-when="messageMediaGeo" my-message-map></div>\n <div ng-switch-when="messageMediaContact" my-message-contact></div>\n <div ng-switch-when="messageMediaPending" my-message-pending></div>\n\n </div>\n\n <div class="im_message_text" ng-if="::historyMessage.message.length || false" ng-bind-html="::historyMessage.richMessage"></div>\n </div>\n\n </div>\n </div>\n\n</div>\n\n'),e.put("partials/mobile/message_attach_contact.html",'<div>\n <a ng-if="historyMessage.media.user_id > 0" class="im_message_contact_photo pull-left" my-user-photolink="historyMessage.media.user_id" img-class="im_message_contact_photo" user-override="historyMessage.media"></a>\n <div class="im_message_contact_name" ng-switch="historyMessage.media.user_id > 0">\n <a ng-switch-when="true" my-user-link="historyMessage.media.user_id" user-override="historyMessage.media"></a>\n <span ng-switch-default ng-bind-html="::historyMessage.media.rFullName"></span>\n </div>\n <div class="im_message_contact_phone" ng-bind="::historyMessage.media.phone_number | phoneNumber"></div>\n</div>'),e.put("partials/mobile/message_attach_document.html",'<div ng-switch="::document.isSpecial">\n\n <div ng-switch-when="gif" my-load-gif document="document"></div>\n\n <div ng-switch-when="audio" class="im_message_audio">\n <div my-audio-player audio="document"></div>\n </div>\n\n <div ng-switch-default class="im_message_document clearfix" ng-class="{im_message_document_thumbed: !!document.thumb, im_message_document_progress: document.progress.enabled}">\n\n <a ng-if="::!document.thumb" class="im_message_file_button" ng-click="docOpen()" ng-class="{im_message_file_button_dl_doc: document.downloaded}">\n <i class="im_message_file_button_icon"></i>\n </a>\n <a ng-if="::document.thumb" ng-click="docOpen()">\n <div class="im_message_document_thumb_wrap">\n <img\n class="im_message_document_thumb"\n my-load-thumb\n thumb="document.thumb"\n />\n </div>\n </a>\n\n <div class="im_message_document_info">\n <div class="im_message_document_name_wrap">\n <a href="" ng-click="docOpen()" class="im_message_document_name" ng-bind="::document.file_name"></a>\n <span class="im_message_document_size" ng-if="!document.progress.enabled" ng-bind="::document.size | formatSize"></span>\n <span class="im_message_document_size" ng-if="document.progress.enabled" ng-bind="document.progress | formatSizeProgress"></span>\n </div>\n <div class="im_message_document_actions" ng-if="!document.progress.enabled" ng-switch="document.downloaded">\n <a ng-switch-when="true" href="" ng-click="docSave()" my-i18n="message_attach_document_save"></a>\n <a ng-switch-default href="" ng-click="docSave()" my-i18n="message_attach_document_download"></a>\n <a ng-if="::document.withPreview" href="" ng-click="docOpen()" my-i18n="message_attach_document_open"></a>\n </div>\n <div class="clearfix im_message_cancelable_progress_wrap" ng-if="document.progress.enabled">\n <a class="im_message_media_progress_cancel pull-right" ng-click="document.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_down_progress">\n <div class="progress-bar progress-bar-success" ng-style="{width: document.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n</div>\n'),e.put("partials/mobile/message_attach_map.html",'<a my-map-point point="historyMessage.media.geo" class="im_message_geopoint">\n <i class="icon icon-geo-point"></i>\n</a>'),e.put("partials/mobile/message_attach_pending.html",'<div class="im_message_document im_message_upload_file" ng-class="::\'im_message_upload_\' + historyMessage.media.type">\n <i class="icon" ng-class="::\'icon-\' + historyMessage.media.type"></i>\n <div class="im_message_document_info">\n <div class="im_message_document_name_wrap">\n <span class="im_message_document_name" ng-bind="::historyMessage.media.file_name"></span>\n <span class="im_message_document_size" ng-if="historyMessage.media.progress" ng-bind="historyMessage.media.progress | formatSizeProgress"></span>\n </div>\n <div class="clearfix im_message_cancelable_progress_wrap">\n <a class="im_message_media_progress_cancel pull-right" ng-click="historyMessage.media.progress.cancel()" my-i18n="modal_cancel"></a>\n <div class="im_message_download_progress_wrap">\n <div class="progress tg_down_progress">\n <div class="progress-bar progress-bar-success" role="progressbar" ng-style="{width: historyMessage.media.progress.percent + \'%\'}"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n'),e.put("partials/mobile/message_attach_photo.html",'<a class="im_message_photo_thumb" href="" ng-click="openPhoto(historyMessage.media.photo.id, historyMessage.id)" ng-style="::{width: historyMessage.media.photo.thumb.width + \'px\'}" ng-mouseover="preloadPhoto(historyMessage.media.photo.id)">\n <img\n class="im_message_photo_thumb"\n my-load-thumb\n thumb="historyMessage.media.photo.thumb"\n />\n</a>'),e.put("partials/mobile/message_attach_video.html",'<div class="im_message_video im_message_document_thumbed">\n <a class="im_message_video_thumb" href="" ng-click="videoOpen()" ng-style="::{width: video.thumb.width + \'px\'}">\n <span class="im_message_video_duration" ng-bind="::video.duration | duration"></span>\n <i class="icon icon-videoplay"></i>\n <img\n class="im_message_video_thumb"\n my-load-thumb\n thumb="video.thumb"\n />\n </a>\n</div>'),e.put("partials/mobile/message_service.html",'<span ng-switch="::historyMessage.action._">\n <my-i18n>\n <span ng-switch-when="messageActionChatCreate" my-i18n-format="message_service_created_group"></span>\n <span ng-switch-when="messageActionChatEditTitle" my-i18n-format="message_service_changed_group_name"></span>\n <my-i18n-param name="group-name">«<strong ng-bind-html="::historyMessage.action.rTitle"></strong>»</my-i18n-param>\n </my-i18n>\n <span ng-switch-when="messageActionChatEditPhoto" my-i18n="message_service_changed_group_photo"></span>\n <span ng-switch-when="messageActionChatDeletePhoto" my-i18n="message_service_removed_group_photo"></span>\n <span ng-switch-when="messageActionChatAddUser" ng-switch="::historyMessage.from_id != historyMessage.action.user_id">\n <span ng-switch-when="true" my-i18n="message_service_invited_user">\n <my-i18n-param name="user"><a my-user-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n </span>\n <span ng-switch-default my-i18n="message_service_returned_to_group"></span>\n </span>\n <span ng-switch-when="messageActionChatDeleteUser" ng-switch="::historyMessage.from_id != historyMessage.action.user_id">\n <span ng-switch-when="true" my-i18n="message_service_kicked_user">\n <my-i18n-param name="user"><a my-user-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>\n </span>\n <span ng-switch-default my-i18n="message_service_left_group"></span>\n </span>\n\n <span ng-switch-default ng-bind="\'message_service_unsupported_action\' | i18n:historyMessage.action._"></span>\n</span>\n'),e.put("partials/mobile/peer_select.html",'<div class="peer_select_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <a class="navbar-search-wrap" ng-click="toggleSearch()">\n <i class="icon-search"></i>\n </a>\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="conversation_select_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="im_dialogs_modal_col_wrap" ng-controller="AppImDialogsController" my-dialogs>\n <div class="im_dialogs_panel">\n <div class="im_dialogs_search">\n <input my-focused class="form-control im_dialogs_search_field" type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query"/>\n <a class="im_dialogs_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length"></a>\n </div>\n </div>\n <div my-dialogs-list-mobile modal="true" class="im_dialogs_modal_col im_dialogs_scrollable_wrap mobile_scrollable_wrap">\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs track by dialogMessage.peerID"></li>\n </ul>\n <div class="im_dialogs_contacts_wrap" ng-show="contacts.length > 0">\n <h5 my-i18n="conversation_select_modal_contacts"></h5>\n <ul class="nav nav-pills nav-stacked">\n <li class="im_dialog_wrap" ng-repeat="contact in contacts | orderBy:\'user.sortName\' track by contact.userID" ng-class="{active: curDialog.peerID == contact.userID}">\n <a class="im_dialog" ng-click="dialogSelect(contact.peerString)">\n <div class="im_dialog_photo pull-left">\n <img\n class="im_dialog_photo"\n my-load-thumb\n thumb="contact.userPhoto"\n />\n </div>\n <div class="im_dialog_message_wrap">\n <div class="im_dialog_peer">\n <span class="im_dialog_user" ng-bind-html="contact.user.rFullName"></span>\n </div>\n <div class="im_dialog_message">\n <span class="im_dialog_message_text" my-user-status="::contact.userID"></span>\n </div>\n </div>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/phonebook_modal.html",'<div class="contacts_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: !selectedCount || progress.enabled}" ng-click="submitSelected()" ng-switch="progress.enabled">\n <span ng-switch-when="true">\n <my-i18n msgid="phonebook_modal_submit_active"></my-i18n>\n <span my-loading-dots></span>\n </span>\n <span ng-switch-default my-i18n="phonebook_modal_submit"></span>\n </a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="phonebook_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="contacts_modal_search">\n <input class="form-control contacts_modal_search_field no_outline" my-focused type="search" placeholder="{{\'modal_search\' | i18n}}" ng-model="search.query"/>\n <a class="contacts_modal_search_clear" ng-click="search.query = \'\'" ng-show="search.query.length"></a>\n </div>\n\n\n <div class="contacts_modal_col contacts_wrap contacts_scrollable_wrap mobile_scrollable_wrap" my-contacts-list-mobile my-infinite-scroller-mobile>\n <div ng-switch="contactsEmpty">\n\n <div ng-switch-when="true" class="contacts_modal_contacts_empty" my-vertical-position="0.2" padding="true" my-i18n="phonebook_modal_empty"></div>\n\n <ul ng-switch-default class="contacts_modal_members_list nav nav-pills nav-stacked">\n\n <li class="contacts_modal_contact_wrap clearfix" ng-repeat="contact in contacts | limitTo: slice.limit track by contact.id" ng-class="{active: selectedContacts[contact.id]}">\n <a class="contacts_modal_contact" ng-click="contactSelect(contact.id)">\n\n <i ng-if="multiSelect" class="icon icon-contact-tick"></i>\n\n <div class="contacts_modal_contact_photo pull-left">\n <img\n class="contacts_modal_contact_photo"\n ng-src="{{contact.photo}}"\n />\n </div>\n\n <div class="contacts_modal_contact_name">\n <span ng-bind="contact.first_name"></span>\n <span ng-bind="contact.last_name"></span>\n </div>\n <div class="contacts_modal_contact_status" ng-repeat="phone in contact.phones">\n <span ng-bind="phone | phoneNumber"></span>\n </div>\n\n </a>\n </li>\n\n </ul>\n\n </div>\n </div>\n\n </div>\n\n <div class="modal-footer contacts_modal_panel" ng-show="multiSelect">\n <button class="btn btn-primary" ng-click="toggleSelection()" ng-switch="selectedCount > 0">\n <span ng-switch-when="true" my-i18n="phonebook_modal_deselect_all"></span>\n <span ng-switch-default my-i18n="phonebook_modal_select_all"></span>\n </button>\n </div>\n\n</div>\n'),e.put("partials/mobile/photo_modal.html",'<div class="media_modal_bottom_panel_wrap" ng-show="!hideToolbars">\n <div class="media_modal_bottom_panel">\n <div class="media_modal_bottom_actions pull-right">\n <a class="media_modal_action_btn" ng-if="canDelete" ng-click="delete()" title="{{\'media_modal_delete\' | i18n}}">\n <i class="media_modal_action_btn_delete"></i>\n </a>\n </div>\n\n <div class="media_modal_bottom_actions pull-left">\n <a class="media_modal_action_btn" ng-if="canForward" ng-click="forward()" title="{{\'media_modal_forward\' | i18n}}">\n <i class="media_modal_action_btn_forward"></i>\n </a>\n </div>\n\n <div class="media_modal_info_wrap">\n <a class="media_modal_author" my-user-link="photo.user_id" user-watch="true"></a>\n <br/>\n <span class="media_modal_date" ng-bind="photo.date | dateOrTime :true"></span>\n </div>\n\n </div>\n</div>\n\n<div class="media_modal_top_panel_wrap" ng-show="!hideToolbars">\n <div class="media_modal_top_panel">\n <div class="media_modal_top_actions pull-right">\n <a class="media_modal_action_btn" ng-click="download()" title="{{\'media_modal_download\' | i18n}}">\n <i class="media_modal_action_btn_download"></i>\n </a>\n </div>\n <div class="media_modal_top_actions pull-left">\n <a ng-click="$close()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n\n <div class="navbar-quick-back-title">\n <h4 class="media_modal_title_wrap" ng-switch="count > 1 && pos > 0">\n <my-i18n ng-switch-when="true" msgid="media_modal_photo_index">\n <my-i18n-param name="pos" ng-bind="pos"></my-i18n-param>\n <my-i18n-param name="count" ng-bind="count"></my-i18n-param>\n </my-i18n>\n <my-i18n ng-switch-default msgid="media_modal_photo">\n </h4>\n </div>\n </a>\n </div>\n </div>\n</div>\n\n<div class="modal-dialog" ng-swipe-right="nav.prev()" ng-swipe-left="nav.next()" ng-click="hideToolbars = !hideToolbars">\n <div class="modal-content">\n <div my-modal-width="{{photo.full.modalWidth}}" class="media_modal_wrap photo_modal_wrap" my-vertical-position="0.5">\n\n <div class="modal-body">\n\n <div class="photo_modal_image_wrap" my-load-full-photo full-photo="photo.full" thumb-location="photo.thumb.location"></div>\n\n </div>\n\n </div>\n </div>\n</div>\n\n'),e.put("partials/mobile/profile_edit_modal.html",'<div class="profile_edit_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: profile.updating}" ng-click="updateProfile()" ng-bind="profile.updating ? \'profile_edit_submit_active\' : \'profile_edit_submit\' | i18n" ng-disabled="profile.updating"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="profile_edit_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="updateProfile()" my-vertical-position="0.3">\n\n <div class="form-group" ng-class="{\'has-error\': error.field == \'first_name\'}">\n <input class="form-control input-lg" my-focused type="text" placeholder="{{\'profile_edit_first_name\' | i18n}}" ng-model="profile.first_name" name="first_name"/>\n </div>\n <div class="form-group" ng-class="{\'has-error\': error.field == \'last_name\'}">\n <input class="form-control input-lg" type="text" placeholder="{{\'profile_edit_last_name\' | i18n}}" ng-model="profile.last_name"/>\n </div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/settings_modal.html",'<div class="settings_modal_wrap modal_content_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-toggle-wrap dropdown" dropdown>\n <a class="dropdown-toggle navbar-toggle" dropdown-toggle>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </a>\n <ul class="dropdown-menu">\n <li ng-if="photo.location">\n <a ng-click="deletePhoto()" my-i18n="settings_modal_delete_photo"></a>\n </li>\n <li>\n <a ng-click="editProfile()" my-i18n="settings_modal_edit_profile"></a>\n </li>\n <li>\n <a ng-click="changeUsername()" my-i18n="settings_modal_edit_username"></a>\n </li>\n <li>\n <a ng-click="terminateSessions()" my-i18n="settings_modal_terminate_sessions"></a>\n </li>\n </ul>\n </div>\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$close()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="settings_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="mobile_user_modal_photo_profile_wrap">\n\n <a href="" ng-click="openPhoto(photo.id, -profile.id)" class="mobile_user_modal_image_wrap pull-left" ng-class="{disabled: !photo.id}">\n <img\n class="mobile_user_modal_image"\n my-load-thumb\n watch="true"\n thumb="photo"\n />\n </a>\n\n <div class="mobile_user_modal_info_wrap clearfix">\n <h4 class="mobile_user_modal_header" ng-bind-html="profile.rFullName"></h4>\n <p class="mobile_user_modal_status" my-user-status="::profile.id"></p>\n </div>\n\n </div>\n\n <div class="mobile_modal_action_wrap" ng-switch="photo.updating">\n <span ng-switch-when="true" class="mobile_modal_action" my-i18n>\n <my-i18n msgid="settings_modal_photo_updating"></my-i18n>\n <span my-loading-dots></span>\n </span>\n <span ng-switch-default class="mobile_modal_action mobile_modal_upload_action">\n <input my-file-upload type="file" multiple="false" class="im_attach_input" size="120" multiple="false" accept="image/x-png, image/png, image/gif, image/jpeg" />\n <my-i18n msgid="settings_modal_set_photo"></my-i18n>\n </span>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="toggleDesktop()" ng-class="notify.desktop ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_notification_alert"></span>\n </a>\n </div>\n\n <div class="mobile_modal_action_wrap" ng-if="!notify.desktop && notify.canVibrate">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="toggleVibrate()" ng-class="notify.vibrate ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_vibrate"></span>\n </a>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="toggleSound()" ng-class="notify.volume ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_sounds"></span>\n </a>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="toggleCtrlEnter(send.enter == 1 ? 0 : 1)" ng-class="send.enter == 1 ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="settings_modal_send_on_enter"></span>\n </a>\n </div>\n\n\n <div class="mobile_modal_action_wrap" ng-controller="AppLangSelectController">\n <div class="mobile_modal_select_wrap pull-right">\n <select class="form-control" ng-change="localeSelect()" ng-model="form.locale">\n <option ng-repeat="locale in ::supportedLocales" value="{{locale}}" ng-bind="langNames[locale]" ng-selected="locale == curLocale"></option>\n </select>\n </div>\n <span class="mobile_modal_action" my-i18n="settings_modal_language"></span>\n </div>\n\n <div class="mobile_modal_section" ng-if="profile.phone">\n <h4 class="mobile_modal_section_header" my-i18n="user_modal_phone"></h4>\n <div class="mobile_modal_section_value" ng-bind="profile.phone | phoneNumber"></div>\n </div>\n\n <div class="mobile_modal_section">\n <h4 class="mobile_modal_section_header" my-i18n="user_modal_username"></h4>\n <div class="mobile_modal_section_value" ng-click="changeUsername()" ng-switch="profile.username.length > 0">\n <a class="settings_modal_username_link" ng-switch-when="true" href="" ng-click="changeUsername()" ng-bind="\'@\' + profile.username"></a>\n <a ng-switch-default href="" ng-click="changeUsername()" my-i18n="settings_modal_empty_username_set"></a>\n </div>\n </div>\n\n <div class="mobile_modal_section">\n <h4 class="mobile_modal_section_header" my-i18n="settings_modal_about"></h4>\n <div class="mobile_modal_section_body settings_about_section_body clearfix">\n <div class="settings_external_services pull-right">\n <a href="https://github.com/zhukov/webogram" target="_blank" title="{{\'settings_modal_source_code_github\' | i18n}}" class="settings_external_service"><i class="icon icon-github"></i></a>\n <a href="https://twitter.com/telegram_web" target="_blank" title="{{\'settings_modal_follow_us_twitter\' | i18n}}" class="settings_external_service"><i class="icon icon-twitter"></i></a>\n </div>\n <p>\n <a ng-click="openChangelog()" my-i18n="settings_modal_recent_updates">\n <my-i18n-param name="version" ng-bind="version"></my-i18n-param>\n </a>\n </p>\n </div>\n </div>\n\n </div>\n</div>\n'),e.put("partials/mobile/slider.html",'<div class="tg_slider_wrap">\n <div class="tg_slider_thumb"></div>\n <div class="tg_slider_track">\n <div class="tg_slider_track_fill"></div>\n </div>\n</div>'),e.put("partials/mobile/user_modal.html",'<div class="mobile_user_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-toggle-wrap dropdown" dropdown>\n <a class="dropdown-toggle navbar-toggle" dropdown-toggle>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </a>\n <ul class="dropdown-menu">\n <li ng-if="user._ == \'userContact\'">\n <a ng-click="importContact(true)" my-i18n="user_modal_edit_contact"></a>\n </li>\n <li ng-if="user._ == \'userContact\'">\n <a ng-click="deleteContact()" my-i18n="user_modal_delete_contact"></a>\n </li>\n <li ng-if="user.phone.length > 0 && user._ != \'userContact\'">\n <a ng-click="importContact()" my-i18n="user_modal_add_contact"></a>\n </li>\n <li>\n <a ng-click="flushHistory()" my-i18n="user_modal_delete_chat"></a>\n </li>\n </ul>\n </div>\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li>\n <a ng-click="$close()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="user_modal_contact_info"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body mobile_modal_body">\n\n <div class="mobile_user_modal_photo_profile_wrap">\n\n <a href="" ng-click="openPhoto(userPhoto.id, -user.id)" class="mobile_user_modal_image_wrap pull-left" ng-class="{disabled: !userPhoto.id}">\n <img\n class="mobile_user_modal_image"\n my-load-thumb\n thumb="userPhoto"\n />\n </a>\n\n <div class="mobile_user_modal_info_wrap clearfix">\n <h4 class="mobile_user_modal_header" ng-bind="user | userName"></h4>\n <p class="mobile_user_modal_status" ng-if="user.status" my-user-status="::user.id"></p>\n </div>\n\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action" ng-click="goToHistory()" my-i18n="user_modal_send_message"></a>\n </div>\n\n <div ng-if="user.phone.length > 0" class="mobile_modal_action_wrap">\n <a class="mobile_modal_action" ng-click="shareContact()" my-i18n="user_modal_share_contact"></a>\n </div>\n\n <div class="mobile_modal_action_wrap">\n <a class="mobile_modal_action tg_checkbox clearfix" ng-click="settings.notifications = !settings.notifications" ng-class="settings.notifications ? \'tg_checkbox_on\' : \'\'">\n <span class="icon icon-checkbox-outer"><i class="icon-checkbox-inner"></i></span>\n <span class="tg_checkbox_label" my-i18n="user_modal_notifications"></span>\n </a>\n </div>\n\n <div class="mobile_modal_section">\n <h4 class="mobile_modal_section_header" my-i18n="user_modal_phone"></h4>\n <div class="mobile_modal_section_value" ng-bind="user.phone | phoneNumber"></div>\n </div>\n\n <div class="mobile_modal_section" ng-if="user.username">\n <h4 class="mobile_modal_section_header" my-i18n="user_modal_username"></h4>\n <div class="mobile_modal_section_value" ng-bind="\'@\' + user.username"></div>\n </div>\n\n </div>\n\n</div>\n'),e.put("partials/mobile/username_edit_modal.html",'<div class="username_edit_modal_wrap">\n\n <div class="tg_page_head tg_modal_head">\n <div class="navbar navbar-static-top navbar-inverse">\n <div class="container">\n\n <div class="navbar-header">\n\n <ul class="nav navbar-nav navbar-quick-nav">\n <li class="navbar-quick-right">\n <a ng-class="{disabled: profile.updating}" ng-click="updateUsername()" ng-bind="profile.updating ? \'username_edit_submit_active\' : \'username_edit_submit\' | i18n" ng-disabled="profile.updating"></a>\n </li>\n <li>\n <a ng-click="$dismiss()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 my-i18n="username_edit_modal_title"></h4>\n </div>\n </a>\n </li>\n </ul>\n\n </div>\n\n </div>\n </div>\n </div>\n\n <div class="modal-body">\n\n <form class="modal_simple_form" ng-submit="updateUsername()" my-vertical-position="0.3">\n\n <div class="form-group import_modal_field_wrap" ng-class="{\'has-error\': checked.error, \'has-feedback\': checked.feedback.length > 0}">\n <input class="form-control input-md" my-focused type="text" placeholder="{{\'username_edit_placeholder\' | i18n}}" ng-model="profile.username" name="username" ng-model-options="{updateOn: \'default blur\', debounce: {default: 600, blur: 0}}"/>\n <span ng-if="checked.error" class="glyphicon form-control-feedback" ng-class="{\'glyphicon-remove\': checked.error}"></span>\n </div>\n\n <div class="modal_simple_form_description" my-i18n="username_edit_description_md"></div>\n\n </form>\n\n </div>\n\n</div>'),e.put("partials/mobile/video_modal.html",'<div class="media_modal_bottom_panel_wrap">\n <div class="media_modal_bottom_panel">\n <div class="media_modal_bottom_actions pull-right">\n <a class="media_modal_action_btn" ng-if="messageID" ng-click="delete()" title="{{\'media_modal_delete\' | i18n}}">\n <i class="media_modal_action_btn_delete"></i>\n </a>\n </div>\n\n <div class="media_modal_bottom_actions pull-left">\n <a class="media_modal_action_btn" ng-if="messageID" ng-click="forward()" title="{{\'media_modal_forward\' | i18n}}">\n <i class="media_modal_action_btn_forward"></i>\n </a>\n </div>\n\n <div class="media_modal_info_wrap">\n <a class="media_modal_author" my-user-link="video.user_id" user-watch="true"></a>\n <br/>\n <span class="media_modal_date" ng-bind="video.date | dateOrTime :true"></span>\n </div>\n\n </div>\n</div>\n\n<div class="media_modal_top_panel_wrap">\n <div class="media_modal_top_panel">\n <div class="media_modal_top_actions pull-right">\n <a class="media_modal_action_btn" ng-click="download()" title="{{\'media_modal_download\' | i18n}}">\n <i class="media_modal_action_btn_download"></i>\n </a>\n </div>\n <div class="media_modal_top_actions pull-left">\n <a ng-click="$close()" class="navbar-quick-media-back">\n <i class="icon icon-back"></i>\n <div class="navbar-quick-back-title">\n <h4 class="media_modal_title_wrap" my-i18n="media_modal_video"></h4>\n </div>\n </a>\n </div>\n </div>\n</div>\n\n<div class="modal-dialog">\n <div class="modal-content">\n <div my-modal-width="{{video.full.width}}" class="media_modal_wrap video_modal_wrap" my-vertical-position="0.5">\n\n <div class="modal-body">\n\n <div class="video_modal_image_wrap" my-load-video video="video"></div>\n\n </div>\n\n </div>\n </div>\n</div>\n\n'),e.put("partials/mobile/welcome.html",'<div my-head></div>\n\n<div ng-if="showWelcome">\n\n <div class="welcome_form">\n <div class="welcome_logo"></div>\n\n <h3 class="welcome_header" my-i18n="welcome_header_md"></h3>\n\n <div class="welcome_text">\n <p my-i18n="welcome_text_1_md"></p>\n </div>\n <div class="welcome_btn_wrap">\n <a href="#/login" class="btn btn-primary btn-block" my-i18n="welcome_start_messaging"></a>\n </div>\n </div>\n\n <div class="welcome_footer" my-custom-background="#f8f8f8">\n <div class="welcome_cards_wrap clearfix">\n\n <div class="container-fluid">\n <div class="row">\n <div class="col-md-4 col-sm-4">\n <div class="welcome_footer_card_wrap row">\n <div class="welcome_footer_card welcome_footer_card_messaging"></div>\n <h4 my-i18n="welcome_fast_messaging_header"></h4>\n <div class="welcome_footer_card_lead" my-i18n="welcome_fast_messaging_text"></div>\n </div>\n </div>\n\n <div class="col-md-4 col-sm-4">\n <div class="welcome_footer_card_wrap">\n <div class="welcome_footer_card welcome_footer_card_filesharing"></div>\n <h4 my-i18n="welcome_easy_sharing_header"></h4>\n <div class="welcome_footer_card_lead" my-i18n="welcome_easy_sharing_text"></div>\n </div>\n </div>\n\n <div class="col-md-4 col-sm-4">\n <div class="welcome_footer_card_wrap">\n <div class="welcome_footer_card welcome_footer_card_powerful"></div>\n <h4 my-i18n="welcome_powerful_tools_header"></h4>\n <div class="welcome_footer_card_lead" my-i18n="welcome_powerful_tools_text_md"></div>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n\n </div>\n\n\n\n</div>\n') |
|
|
}]),angular.module("myApp.directives",["myApp.filters"]).directive("myHead",function(){return{restrict:"AE",templateUrl:templateUrl("head")}}).directive("myLangFooter",function(){return{restrict:"AE",templateUrl:templateUrl("lang_footer")}}).directive("myFooter",function(){return{restrict:"AE",templateUrl:templateUrl("footer")}}).directive("myDialog",function(){return{restrict:"AE",templateUrl:templateUrl("dialog")}}).directive("myMessage",["$filter","_",function(e,t){function n(e,t){var n,u,p=!1,m=!1,h=!1,f=!1,g=!1,_=!1,y=!1,v=function(){p!=(e.selectedMsgs[e.historyMessage.id]||!1)&&(p=!p,t.toggleClass(r,p))},b=function(){m!=e.historyMessage.grouped&&(m&&t.removeClass(m),m=e.historyMessage.grouped,m&&t.addClass(m)),_!=(e.historyMessage.needDate||!1)&&(_=!_,_?n?n.show():(n=$(a),$(n[0].firstChild).text(i(e.historyMessage.date)),u?n.insertBefore(u):n.prependTo(t)):n.hide())};v(),b(),e.$on("messages_select",v),e.$on("messages_regroup",b),e.$on("messages_focus",function(n,i){i==e.historyMessage.id!=h&&(h=!h,t.toggleClass(s,h))});var w;if(!e.historyMessage.out&&(e.historyMessage.unread||e.historyMessage.unreadAfter)){var k=function(){e.peerHistory.peerID==e.historyPeer.id&&y!=(e.historyUnreadAfter==e.historyMessage.id)&&(y=!y,y?u?u.show():u=$(o).prependTo(t):(u.hide(),w&&w()))};k(),w=e.$on("messages_unread_after",k)}if(e.historyMessage.unread){t.addClass(l);var C=e.$on("messages_read",function(){e.historyMessage.unread||(t.removeClass(l),C(),w&&!y&&w())})}if(e.historyMessage.error||e.historyMessage.pending){var S=function(){g!=(e.historyMessage.pending||!1)&&(g=!g,t.toggleClass(d,g)),f!=(e.historyMessage.error||!1)&&(f=!f,t.toggleClass(c,f)),f||g||M()},M=e.$on("messages_pending",S);S()}}var i=e("myDate"),a='<div class="im_message_date_split im_service_message_wrap"><div class="im_service_message"></div></div>',o='<div class="im_message_unread_split">'+t("unread_messages_split")+"</div>",r="im_message_selected",s="im_message_focus",l="im_message_unread",c="im_message_error",d="im_message_pending";return{templateUrl:templateUrl("message"),link:n}}]).directive("myExternalEmbed",function(){function e(e,s,l){var c=e.$eval(l.myExternalEmbed);if(c){var d="",u=!1;switch(c[0]){case"youtube":var p=c[1];d='<div class="im_message_media_embed im_message_video_embed"><'+r+' type="text/html" frameborder="0" src="https://www.youtube.com/embed/'+p+'?autoplay=0&controls=2" webkitallowfullscreen mozallowfullscreen allowfullscreen></'+r+"></div>";break;case"vimeo":var p=c[1];d='<div class="im_message_media_embed im_message_video_embed"><'+r+' type="text/html" frameborder="0" src="https://player.vimeo.com/video/'+p+'?title=0&byline=0&portrait=0" webkitallowfullscreen mozallowfullscreen allowfullscreen></'+r+"></div>";break;case"instagram":var m=c[1];d='<div class="im_message_media_embed im_message_insta_embed"><'+r+' type="text/html" frameborder="0" src="https://instagram.com/p/'+m+'/embed/"></'+r+"></div>";break;case"vine":var h=c[1];d='<div class="im_message_media_embed im_message_vine_embed"><'+r+' type="text/html" frameborder="0" src="https://vine.co/v/'+h+'/embed/simple"></'+r+"></div>";break;case"soundcloud":var f=c[1];d='<div class="im_message_media_embed im_message_soundcloud_embed"><'+r+' type="text/html" frameborder="0" src="https://w.soundcloud.com/player/?url='+encodeEntities(encodeURIComponent(f))+'&auto_play=false&hide_related=true&show_comments=false&show_user=true&show_reposts=false&visual=true"></'+r+"></div>";break;case"twitter":d='<div class="im_message_twitter_embed"><blockquote class="twitter-tweet" lang="en"><a href="'+c[1]+'"></a></blockquote></div>',u=function(){t?window.twttr&&twttr.widgets.load(s[0]):(t=!0,$("<script>").appendTo("body").on("load",function(){twttr.events.bind("loaded",function(){for(var e=0;e<a.length;e++)a[e].$emit("ui_height");a=[]})}).attr("src","https://platform.twitter.com/widgets.js")),a.push(e)};break;case"facebook":d='<div class="im_message_facebook_embed"><div class="fb-post" data-href="'+c[1]+'" data-width="300"></div></div>',u=function(){n?window.FB&&FB.XFBML.parse(s[0]):(n=!0,$("<script>").appendTo("body").on("load",function(){FB.Event.subscribe("xfbml.render",function(){for(var e=0;e<o.length;e++)o[e].$emit("ui_height");o=[]})}).attr("src","https://connect.facebook.net/en_US/sdk.js#xfbml=1&appId=254098051407226&version=v2.0")),o.push(e)};break;case"gplus":d='<div class="im_message_gplus_embed"><div class="g-post" data-href="'+c[1]+'"></div></div>',u=function(){i?window.gapi&&gapi.post.go(s[0]):(i=!0,window.___gcfg={parsetags:"explicit"},$("<script>").appendTo("body").on("load",function(){gapi.post.go()}).attr("src","https://apis.google.com/js/plusone.js")),s.one("load",function(){e.$emit("ui_height")})}}d&&(s[0].innerHTML=d,u&&u())}}var t=!1,n=!1,i=!1,a=[],o=[],r=Config.Modes.chrome_packed?"webview":"iframe";return{link:e}}).directive("myServiceMessage",function(){return{templateUrl:templateUrl("message_service")}}).directive("myMessagePhoto",function(){return{templateUrl:templateUrl("message_attach_photo")}}).directive("myMessageVideo",["AppVideoManager",function(e){return{scope:{video:"=myMessageVideo",messageId:"=messageId"},templateUrl:templateUrl("message_attach_video"),link:function(t){e.updateVideoDownloaded(t.video.id),t.videoSave=function(){e.saveVideoFile(t.video.id)},t.videoOpen=function(){e.openVideo(t.video.id,t.messageId)}}}}]).directive("myMessageDocument",["AppDocsManager",function(e){return{scope:{document:"=myMessageDocument",messageId:"=messageId"},templateUrl:templateUrl("message_attach_document"),link:function(t){e.updateDocDownloaded(t.document.id),t.docSave=function(){e.saveDocFile(t.document.id)},t.docOpen=function(){return t.document.withPreview?void e.openDoc(t.document.id,t.messageId):t.docSave()}}}}]).directive("myMessageMap",function(){return{templateUrl:templateUrl("message_attach_map")}}).directive("myMessageContact",function(){return{templateUrl:templateUrl("message_attach_contact")}}).directive("myMessagePending",function(){return{templateUrl:templateUrl("message_attach_pending")}}).directive("myDialogs",["$modalStack","$transition","$window","$timeout",function(e,t,n,i){function a(t,a,o){function r(t){if(!m&&e.getTop())return!0;if(36==t.keyCode&&!t.shiftKey&&!t.ctrlKey&&t.altKey){var n=$(l).find(".im_dialog_wrap a");return n.length&&($(n[0]).trigger("mousedown"),l.scrollTop=0,$(s).nanoScroller({flash:!0})),cancelEvent(t)}if(27==t.keyCode||9==t.keyCode&&t.shiftKey&&!t.ctrlKey&&!t.metaKey)return m?c.value&&$(u).trigger("click"):(c.focus(),c.value&&c.select()),cancelEvent(t);if(m&&13==t.keyCode){var n=$(l).find(".im_dialog_selected")[0]||$(l).find(".im_dialog_wrap a")[0];return n&&$(n).trigger("mousedown"),cancelEvent(t)}var i,a,o,r=Config.Modes.packed;if(40==t.keyCode||38==t.keyCode?(i=40==t.keyCode,a=!i,o=!t.shiftKey&&t.altKey):r&&9==t.keyCode&&t.ctrlKey&&!t.metaKey&&(i=!t.shiftKey,a=!i,o=!0),i||a){if(!o&&(!m||t.metaKey))return!0;var d,n=!o&&$(l).find(".im_dialog_selected")[0]||$(l).find(".active a.im_dialog")[0],p=n&&n.parentNode;if(p){var d=n[i?"nextSibling":"previousSibling"];if(!d||!d.className||-1==d.className.indexOf("im_dialog_wrap")){var h=$(l).find(".im_dialog_wrap"),f=h.index(n.parentNode),g=f+(i?1:-1);d=h[g]}}else{var h=$(l).find(".im_dialog_wrap");d=i?h[0]:h[h.length-1]}if(o?d&&$(d).find("a").trigger("mousedown"):(p&&d&&$(p).find("a").removeClass("im_dialog_selected"),d&&$(d).find("a").addClass("im_dialog_selected")),d){var _=d.offsetTop,y=d.offsetHeight,v=l.scrollTop,b=l.clientHeight;v>_?(l.scrollTop=_,$(s).nanoScroller({flash:!0})):_+y-b>v&&(l.scrollTop=_+y-b,$(s).nanoScroller({flash:!0}))}return cancelEvent(t)}}var s=$(".im_dialogs_wrap",a)[0],l=$(".im_dialogs_scrollable_wrap",a)[0],c=$(".im_dialogs_search_field",a)[0],d=$(".im_dialogs_panel",a)[0],u=$(".im_dialogs_search_clear",a)[0],p=$(".im_dialogs_tabs_wrap",a)[0],m=!1;$(c).on("focus blur",function(e){m="focus"==e.type,m||($(l).find(".im_dialog_selected").removeClass("im_dialog_selected"),c.value||t.$emit("ui_dialogs_search_clear"))}),t.$on("dialogs_search_toggle",function(){$(d).addClass("im_dialogs_panel_search"),t.$broadcast("ui_dialogs_search"),$(n).scrollTop(0),i(function(){c.focus()})}),t.$on("search_clear",function(){$(d).removeClass("im_dialogs_panel_search"),t.$broadcast("ui_dialogs_search")}),o.$observe("hasTabs",function(e){e="true"==e,$(p).toggle(e),t.$broadcast("ui_dialogs_tabs",e)}),$(document).on("keydown",r),t.$on("$destroy",function(){$(document).off("keydown",r)})}return{link:a}}]).directive("myDialogsList",["$window","$timeout",function(e,t){function n(n,i,a){function o(){return u&&u.offsetHeight||(u=$(d)[0]),a.modal?($(i).css({height:$(e).height()-(u?u.offsetHeight:58)-(Config.Mobile?46:200)}),void f()):(c&&c.offsetHeight||(c=$(".tg_page_head")[0]),p&&p.offsetHeight||(p=$(".footer_wrap")[0]),s&&s.offsetHeight||(s=$(".im_dialogs_col_wrap")[0]),$(i).css({height:$(e).height()-(p?p.offsetHeight:0)-(c?c.offsetHeight:44)-(u?u.offsetHeight:58)-parseInt($(s).css("paddingBottom")||0)}),void f())}var r=$(".im_dialogs_wrap",i)[0],s=$(".im_dialogs_col_wrap")[0],l=$(".im_dialogs_scrollable_wrap",i)[0],c=$(".tg_page_head")[0],d=Config.Mobile&&a.modal?".mobile_modal_body .im_dialogs_panel":".im_dialogs_panel",u=$(d)[0],p=$(".footer_wrap")[0],m=!1,h=!1;onContentLoaded(function(){$(r).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0})});var f=function(){onContentLoaded(function(){$(r).nanoScroller()})};n.$on("ui_dialogs_prepend",f),n.$on("ui_dialogs_tabs",function(e,t){m=t,o()}),n.$on("ui_dialogs_search",o),n.$on("ui_dialogs_update",o),n.$on("ui_dialogs_append",function(){onContentLoaded(function(){f(),h=!1,t(function(){$(l).trigger("scroll")})})}),n.$on("ui_dialogs_change",function(){onContentLoaded(function(){f(),h=!1,t(function(){$(l).trigger("scroll")})})}),$(l).on("scroll",function(){i.is(":visible")&&!h&&l.scrollTop>=l.scrollHeight-l.clientHeight-300&&(n.$emit("dialogs_need_more"),h=!0)}),$(e).on("resize",o),o(),setTimeout(o,1e3)}return{link:n}}]).directive("myContactsList",["$window","$timeout",function(e){function t(t,n){function i(){$(n).css({height:$(e).height()-(o&&o.offsetHeight||0)-(a&&a.offsetHeight||0)-(Config.Mobile?64:200)}),$(r).nanoScroller()}var a=$(".contacts_modal_search")[0],o=$(".contacts_modal_panel")[0],r=$(".contacts_wrap",n)[0];onContentLoaded(function(){$(r).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0}),i()}),$(e).on("resize",i),t.$on("contacts_change",function(){onContentLoaded(i)})}return{link:t}}]).directive("myCountriesList",["$window","$timeout",function(e){function t(t,n){function i(){$(n).css({height:$(e).height()-(o&&o.offsetHeight||0)-(a&&a.offsetHeight||0)-(Config.Mobile?64:200)}),$(r).nanoScroller()}var a=$(".countries_modal_search")[0],o=$(".countries_modal_panel")[0],r=$(".countries_wrap",n)[0];onContentLoaded(function(){$(r).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","$rootScope","$transition",function(e,t,n,i){function a(a,o){function r(){var e,n;if(n=$(".im_message_focus:visible",u)[0]){var i=u.clientHeight,a=u.scrollTop,o=n.offsetTop,r=n.clientHeight;(!a||o>a+i||a>o+r)&&(u.scrollTop=Math.max(0,o-Math.floor(i/2)+26)),A=!1}else(e=$(".im_message_unread_split:visible",u)[0])?(u.scrollTop=Math.max(0,e.offsetTop-52),A=!1):(u.scrollTop=u.scrollHeight,A=!0);k(),t(function(){$(u).trigger("scroll"),T=u.scrollTop})}function s(t){if(o.is(":visible")||$(o[0].parentNode.parentNode).is(":visible")){$(f).is(":visible")&&$(f).css({height:$(y).height()}),g&&g.offsetHeight||(g=$(".tg_page_head")[0]),_&&_.offsetHeight||(_=$(".footer_wrap")[0]);var n=$(e).height()-m.offsetHeight-h.offsetHeight-(g?g.offsetHeight:44)-(_?_.offsetHeight:0);$(c).css({height:n}),l(),t!==!0&&(A&&onContentLoaded(function(){u.scrollTop=u.scrollHeight,k()}),k(100))}}function l(){$(d).css({marginTop:0});var e=u.offsetHeight-d.offsetHeight-20-(Config.Mobile?0:49);d.offsetHeight>0&&e>0&&$(d).css({marginTop:e}),$(c).nanoScroller()}var c=$(".im_history_wrap",o)[0],d=$(".im_history_messages",o)[0],u=($(".im_history",o)[0],$(".im_history_scrollable_wrap",o)[0]),p=$(".im_history_scrollable",o)[0],m=$(".im_history_panel_wrap",o)[0],h=$(".im_bottom_panel_wrap",o)[0],f=$(".im_send_form_wrap",o)[0],g=$(".tg_page_head")[0],_=$(".footer_wrap")[0],y=$(".im_send_form",o)[0],v=!1,b=!1;onContentLoaded(function(){u.scrollTop=u.scrollHeight}),$(c).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0});var w,k=function(e){t(function(){$(u).hasClass("im_history_to_bottom")||$(c).nanoScroller()},e||0)},C=!1,S=["transform","webkitTransform","MozTransform","msTransform","OTransform"];for(w=0;w<S.length;w++)if(S[w]in d.style){C=S[w];break}var M=!1,x=!1;a.$on("ui_history_append_new",function(e,t){if(A||t.my){var a,o=M&&!n.idle.isIDLE&&d.clientHeight>0;o?a=u.scrollHeight:($(p).css({bottom:0}),$(u).addClass("im_history_to_bottom")),onContentLoaded(function(){if(o){x=!0,$(d).removeClass("im_history_appending"),u.scrollTop=u.scrollHeight,$(d).css(C,"translate(0px, "+(u.scrollHeight-a)+"px)"),$(c).nanoScroller();var e={};e[C]="translate(0px, 0px)",$(d).addClass("im_history_appending"),i($(d),e).then(function(){x=!1,$(d).removeClass("im_history_appending"),l()})}else $(u).removeClass("im_history_to_bottom"),$(p).css({bottom:""}),u.scrollTop=u.scrollHeight,l()})}}),a.$on("ui_history_change",function(){var e=parseInt($(u).css("paddingRight"));$(u).addClass("im_history_to_bottom"),u.scrollHeight,$(p).css({bottom:0,marginLeft:-Math.ceil(e/2)}),onContentLoaded(function(){$(u).removeClass("im_history_to_bottom"),$(p).css({bottom:"",marginLeft:""}),s(!0),v=!1,b=!1,r()})}),a.$on("ui_history_change_scroll",function(){onContentLoaded(r)}),a.$on("ui_history_focus",function(){A||(u.scrollTop=u.scrollHeight,k(),A=!0)}),a.$on("ui_history_prepend",function(){var e=u.scrollHeight,n=u.scrollTop,i=parseInt($(u).css("paddingRight")),o=u.clientHeight;$(u).addClass("im_history_to_bottom"),u.scrollHeight,$(p).css({bottom:-(e-n-o),marginLeft:-Math.ceil(i/2)});var s=function(){$(u).removeClass("im_history_to_bottom"),$(p).css({bottom:"",marginLeft:""}),T>=0?r():u.scrollTop=n+u.scrollHeight-e,l(),v=!1,t(function(){u.scrollHeight!=e&&$(u).trigger("scroll")}),clearTimeout(c),d()},c=setTimeout(s,0),d=a.$on("$viewContentLoaded",s)}),a.$on("ui_history_append",function(){var e=u.scrollHeight;onContentLoaded(function(){A=!1,l(),b=!1,T>=0&&r(),t(function(){u.scrollHeight!=e&&$(u).trigger("scroll")})})}),a.$on("ui_panel_update",function(){onContentLoaded(function(){s(),a.$broadcast("ui_message_send"),t(function(){$(u).trigger("scroll")})})}),a.$on("ui_selection_clear",function(){window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty()}),a.$on("ui_editor_resize",s),a.$on("ui_height",function(){onContentLoaded(s)});var A=!0,T=-1;$(u).on("scroll",function(){if(o.is(":visible")&&!$(u).hasClass("im_history_to_bottom")&&!x){var e=u.scrollTop;A=e>=u.scrollHeight-u.clientHeight,T>=0&&T!=e&&(T=-1),!v&&300>=e?(v=!0,a.$emit("history_need_more")):!b&&e>=u.scrollHeight-u.clientHeight-300&&(b=!0,a.$emit("history_need_less"))}}),$(e).on("resize",s),s(),onContentLoaded(s)}return{link:a}}]).directive("mySendForm",["$timeout","$modalStack","$http","$interpolate","Storage","ErrorService",function(e,t,n,i,a,o){function r(n,r){function s(){E=0,T=0}function l(){if(S){e.cancel(M);var t=$("<div>").text(n.draftMessage.text||"").html();t=t.replace(/\n/g,"<br/>"),$(S).html(t),T=t.length,d()}}function c(){S&&($(S).trigger("change"),d())}function d(){var e=S.offsetHeight;I!=e&&(I=e,n.$emit("ui_editor_resize"))}function u(e){return 9!=e.keyCode||e.shiftKey||e.ctrlKey||e.metaKey||t.getTop()?void 0:(k.focus(),cancelEvent(e))}function p(){onContentLoaded(function(){k.focus()})}function m(e){var t=(e.originalEvent||e).target,i=(t||{}).src||"",a=!1;if("data:"==i.substr(0,5)){a=!0;var r=dataUrlToBlob(i);o.confirm({type:"FILE_CLIPBOARD_PASTE"}).then(function(){n.draftMessage.files=[r],n.draftMessage.isMedia=!0}),setZeroTimeout(function(){t.parentNode.removeChild(t)})}else if(i&&!i.match(/img\/blank\.gif/)){var s=document.createTextNode(" "+i+" ");setTimeout(function(){t.parentNode.replaceChild(s,t)},100)}}function h(e){var t,i,a=(e.originalEvent||e).clipboardData,r=a&&a.items||[],s=[];for(i=0;i<r.length;i++)"file"==r[i].kind&&(t=r[i].getAsFile(),s.push(t));s.length>0&&o.confirm({type:"FILES_CLIPBOARD_PASTE",files:s}).then(function(){n.draftMessage.files=s,n.draftMessage.isMedia=!0})}function f(e){var t=!1;return g&&1!=g||(g=checkDragEvent(e)?2:1,t=!0),2==g&&(_&&setTimeout(function(){clearTimeout(_),_=!1},0),"dragenter"==e.type||"dragover"==e.type?t&&$(b).css({height:$(k).height()+12,width:$(k).width()+12}).show():("drop"==e.type&&n.$apply(function(){n.draftMessage.files=Array.prototype.slice.call(e.originalEvent.dataTransfer.files),n.draftMessage.isMedia=!0}),_=setTimeout(function(){$(b).hide(),g=!1,_=!1},300))),cancelEvent(e)}var g,_,y=$("textarea",r)[0],v=$("input",r),b=$(".im_send_dropbox_wrap",r)[0],w=$(".im_emoji_btn",r)[0],k=y,C=($(y).emojiarea({button:w,norealTime:!0}),$(".emoji-menu",r)[0],$(".im_submit",r)[0]),S=$(".emoji-wysiwyg-editor",r)[0];if(S){k=S,$(S).addClass("form-control"),$(S).attr("placeholder",i($(y).attr("placeholder"))(n));var M;$(S).on("DOMNodeInserted",m).on("keyup",function(){d(),D||n.$apply(function(){n.draftMessage.text=S.textContent}),e.cancel(M),M=e(c,1e3)})}e(function(){v.on("change",function(){var e=this;n.$apply(function(){n.draftMessage.files=Array.prototype.slice.call(e.files),n.draftMessage.isMedia=$(e).hasClass("im_media_attach_input")||Config.Mobile,setTimeout(function(){try{e.value=""}catch(t){}},1e3)})})},1e3);var x=!0,A=function(){a.get("send_ctrlenter").then(function(e){x=!e})};n.$on("settings_changed",A),A(),$(k).on("keydown",function(t){if(S&&d(),13==t.keyCode){var i=!1;if(x&&!t.shiftKey?i=!0:x||!t.ctrlKey&&!t.metaKey||(i=!0),i)return e.cancel(M),c(),n.draftMessage.send(),$(r).trigger("message_send"),s(),cancelEvent(t)}}),$(C).on("mousedown touchstart",function(t){return e.cancel(M),c(),n.draftMessage.send(),$(r).trigger("message_send"),s(),cancelEvent(t)});var T,E=0;$(k).on("keyup",function(){var e=tsNow(),t=k[S?"textContent":"value"].length;e-E>5e3&&t!=T&&(E=e,T=t,n.$emit("ui_typing"))});var I=S.offsetHeight;$(document).on("keydown",u),$("body").on("dragenter dragleave dragover drop",f),$(document).on("paste",h),Config.Navigator.touch||(n.$on("ui_peer_change",p),n.$on("ui_history_focus",p),n.$on("ui_history_change",p)),n.$on("ui_peer_change",s),n.$on("ui_peer_draft",l);var D=!1;n.$on("ui_message_before_send",function(){D=!0,e.cancel(M),c()}),n.$on("ui_message_send",function(){D=!1,p()}),n.$on("$destroy",function(){$("body").off("dragenter dragleave dragover drop",f),$(document).off("paste",h),$(document).off("keydown",u),$(C).off("mousedown"),v.off("change"),S&&$(S).off("DOMNodeInserted keyup",m),$(k).off("keydown")}),Config.Navigator.touch||p()}return{link:r,scope:{draftMessage:"="}}}]).directive("myLoadThumb",["MtpApiFileManager","FileManager",function(e,t){function n(n,i,a){var o=0,r=e.getCachedFile(n.thumb&&n.thumb.location&&!n.thumb.location.empty&&n.thumb.location);r&&i.attr("src",t.getUrl(r,"image/jpeg")),n.thumb&&n.thumb.width&&n.thumb.height&&(i.attr("width",n.thumb.width),i.attr("height",n.thumb.height));var s=n.$watchCollection("thumb.location",function(a){n.thumb&&n.thumb.width&&n.thumb.height&&(i.attr("width",n.thumb.width),i.attr("height",n.thumb.height),n.$emit("ui_height"));var r=++o;if(!a||a.empty)return i.attr("src",n.thumb&&n.thumb.placeholder||"img/blank.gif"),void l();var s=e.getCachedFile(a);return s?(i.attr("src",t.getUrl(s,"image/jpeg")),void l()):(i.attr("src")||i.attr("src",n.thumb.placeholder||"img/blank.gif"),void e.downloadSmallFile(n.thumb.location).then(function(e){r==o&&(i.attr("src",t.getUrl(e,"image/jpeg")),l())},function(e){console.log("Download image failed",e,n.thumb.location,i[0]),r==o&&(i.attr("src",n.thumb.placeholder||"img/blank.gif"),l())}))}),l=a.watch?angular.noop:function(){setTimeout(function(){n.$destroy(),s()},0)}}return{link:n,scope:{thumb:"="}}}]).directive("myLoadFullPhoto",["MtpApiFileManager","FileManager","_",function(e,t,n){function i(i,a){var o=$("img",a)[0],r=$(".img_fullsize_with_progress_wrap",a).add(".img_fullsize_progress_wrap",a).add($(o)),s=function(){r.css({width:i.fullPhoto.width,height:i.fullPhoto.height}),i.$emit("ui_height",!0)},l=0;i.$watchCollection("fullPhoto.location",function(){var a=e.getCachedFile(i.thumbLocation),r=++l;if(a?(o.src=t.getUrl(a,"image/jpeg"),s()):o.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",i.fullPhoto.location){var c;if(i.fullPhoto.size){var d={_:"inputFileLocation",volume_id:i.fullPhoto.location.volume_id,local_id:i.fullPhoto.location.local_id,secret:i.fullPhoto.location.secret};c=e.downloadFile(i.fullPhoto.location.dc_id,d,i.fullPhoto.size)}else c=e.downloadSmallFile(i.fullPhoto.location);i.progress={enabled:!0,percent:0},c.then(function(e){r==l&&(i.progress.enabled=!1,o.src=t.getUrl(e,"image/jpeg"),s())},function(e){console.log("Download image failed",e,i.fullPhoto.location),i.progress.enabled=!1,i.error=e&&"FS_BROWSER_UNSUPPORTED"==e.type?{html:n("error_browser_no_local_file_system_image_md",{"moz-link":'<a href="{0}" target="_blank">{1}</a>',"chrome-link":'<a href="{0}" target="_blank">{1}</a>',"telegram-link":'<a href="{0}" target="_blank">{1}</a>'})}:{text:n("error_image_download_failed"),error:e}},function(e){i.progress.percent=Math.max(1,Math.floor(100*e.done/e.total))})}}),s()}return{link:i,transclude:!0,templateUrl:templateUrl("full_photo"),scope:{fullPhoto:"=",thumbLocation:"="}}}]).directive("myLoadVideo",["$sce","AppVideoManager","ErrorService","_",function(e,t,n,i){function a(e,a){var o=t.downloadVideo(e.video.id);o.then(function(){e.$emit("ui_height"),onContentLoaded(function(){var e=$("video",a)[0];if(e){var t=!1,i=function(e){t||e.target&&e.target.error&&e.target.error.code!=e.target.error.MEDIA_ERR_DECODE&&e.target.error.code!=e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED||(t=!0,n.show({error:{type:"MEDIA_TYPE_NOT_SUPPORTED",originalError:e.target&&e.target.error}}))};e.addEventListener("error",i,!0),$(e).on("$destroy",function(){t=!0,e.removeEventListener("error",i)})}})},function(t){console.log("Download video failed",t,e.video),e.error=t&&"FS_BROWSER_UNSUPPORTED"==t.type?{html:i("error_browser_no_local_file_system_video_md",{"moz-link":'<a href="{0}" target="_blank">{1}</a>',"chrome-link":'<a href="{0}" target="_blank">{1}</a>',"telegram-link":'<a href="{0}" target="_blank">{1}</a>'})}:{text:i("error_video_download_failed"),error:t}}),e.$emit("ui_height"),e.$on("$destroy",function(){o.cancel()})}return{link:a,transclude:!0,templateUrl:templateUrl("full_video"),scope:{video:"="}}}]).directive("myLoadGif",["AppDocsManager",function(e){function t(t){var n=!1;t.isActive=!1,t.toggle=function(i){return checkClick(i,!0)?(e.saveDocFile(t.document.id),!1):t.document.url?(t.isActive=!t.isActive,void t.$emit("ui_height")):n?(n.cancel(),void(n=!1)):(n=e.downloadDoc(t.document.id),void n.then(function(){t.isActive=!0,t.$emit("ui_height")}))}}return{link:t,templateUrl:templateUrl("full_gif"),scope:{document:"="}}}]).directive("myLoadDocument",["MtpApiFileManager","AppDocsManager","FileManager",function(e,t,n){function i(e,t){for(;e&&!$(e).hasClass("modal-dialog");)e=e.parentNode;e&&$(e).width(t+(Config.Mobile?0:32))}function a(a,o){var r=$(".document_fullsize_with_progress_wrap",o),s=$(".document_fullsize_wrap",o),l=$(".document_fullsize_img",o),c=$(window).width()-(Config.Mobile?20:32),d=$(window).height()-150;c>800&&(c-=208),a.imageWidth=c,a.imageHeight=d;var u=a.document.thumb;if(u&&"photoSizeEmpty"!=u._){var p=calcImageInBox(u.width,u.height,c,d);a.imageWidth=p.w,a.imageHeight=p.h;var m=e.getCachedFile(u.location);m&&(a.thumbSrc=n.getUrl(m,"image/jpeg"))}a.frameWidth=Math.max(a.imageWidth,Math.min(600,c)),a.frameHeight=a.imageHeight,onContentLoaded(function(){a.$emit("ui_height")}),i(o[0],a.frameWidth);var h,f,g;t.downloadDoc(a.document.id).then(function(e){var t=n.getUrl(e,a.document.mime_type),i=new Image,o=100,u=function(){if(i.height&&i.width||!--o){f=i.width,g=i.height,clearInterval(h);var e=calcImageInBox(i.width,i.height,c,d,!0),n={w:f,h:g};e.w>=n.w&&e.h>=n.h&&(n.w*=4,n.h*=4);var u=!0;a.toggleZoom=function(){u=!u;var t=(u?n:e).w,i=(u?n:e).h;l.css({width:t,height:i,marginTop:a.frameHeight>i?Math.floor((a.frameHeight-i)/2):0}),s.toggleClass("document_fullsize_zoomed",u)},a.toggleZoom(!1),l.attr("src",t),r.hide(),s.css({width:a.frameWidth,height:a.frameHeight}).show()}};h=setInterval(u,20),i.onload=u,i.src=t,setZeroTimeout(u)})}return{link:a,templateUrl:templateUrl("full_document"),scope:{document:"=myLoadDocument"}}}]).directive("myMapPoint",["ExternalResourcesManager",function(e){function t(t,n){var i="AIzaSyC32ij28dCa0YzEV_HqbWfIwTZQql-RNS0",a="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(a).then(function(e){n.append('<img src="'+e+'" width="200" height="100"/>')}),n.attr("href","https://maps.google.com/?q="+t.point.lat+","+t.point["long"]),n.attr("target","_blank")}return{link:t,scope:{point:"="}}}]).directive("myLoadingDots",["$interval",function(){function e(e,n){n.html(t(n[0])?'<div class="loading_dots"><span></span><span></span><span></span></div>':"...")}function t(e){if(void 0===n&&(n=void 0!==e.style.animationName,n===!1)){var t,i="Webkit Moz O ms Khtml".split(" ");for(t=0;t<i.length;t++)if(void 0!==e.style[i[t]+"AnimationName"]){n=!0;break}}return n}return{link:e};var n}]).directive("myFocused",function(){return{link:function(e,t){return Config.Navigator.touch?!1:void setTimeout(function(){t[0].focus()},100)}}}).directive("myFocusOn",function(){return{link:function(e,t,n){e.$on(n.myFocusOn,function(){return Config.Navigator.touch?!1:void onContentLoaded(function(){t[0].focus()})})}}}).directive("myFileUpload",function(){function e(e,t){t.on("change",function(){var t=this;e.$apply(function(){e.photo.file=t.files[0],setTimeout(function(){try{t.value=""}catch(e){}},1e3)})})}return{link:e}}).directive("myModalWidth",function(){function e(e,t,n){n.$observe("myModalWidth",function(e){$(t[0].parentNode.parentNode).css({width:parseInt(e)+(Config.Mobile?0:32)})})}return{link:e}}).directive("myModalNav",function(){function e(e,t,n){var i=function(t){var i=t.target;if(!i||"INPUT"!=i.tagName&&"TEXTAREA"!=i.tagName)switch(t.keyCode){case 39:case 32:case 34:case 40:e.$eval(n.next);break;case 37:case 33:case 38:e.$eval(n.prev)}};$(document).on("keydown",i),e.$on("$destroy",function(){$(document).off("keydown",i)})}return{link:e}}).directive("myCustomBackground",function(){function e(e,t,n){$("html").css({background:n.myCustomBackground}),e.$on("$destroy",function(){$("html").css({background:""})})}return{link:e}}).directive("myInfiniteScroller",function(){function e(e,t){var n=$(".nano-content",t)[0],i=!1;$(n).on("scroll",function(){t.is(":visible")&&!i&&n.scrollTop>=n.scrollHeight-n.clientHeight-300&&(i=!0,e.$apply(function(){e.slice.limit+=e.slice.limitDelta||20}),onContentLoaded(function(){i=!1,$(t).nanoScroller()}))})}return{link:e,scope:!0}}).directive("myModalPosition",["$window","$timeout",function(e,t){function n(n,i,a){var o=function(){if(!Config.Mobile||!$(i[0].parentNode.parentNode.parentNode).hasClass("mobile_modal")){var e=i[0].parentNode.offsetHeight,n=i[0].parentNode.parentNode.parentNode,o=$(".media_modal_bottom_panel_wrap",n)[0],r=n.offsetHeight-(o&&o.offsetHeight||0);r>e?$(i[0].parentNode).css("marginTop",(r-e)/2):$(i[0].parentNode).css("marginTop",""),"no"!=a.animation&&t(function(){$(i[0].parentNode).addClass("modal-content-animated")},300)}};onContentLoaded(o),$(e).on("resize",o),n.$on("ui_height",function(e,t){t?o():onContentLoaded(o)})}return{link:n}}]).directive("myVerticalPosition",["$window","$timeout",function(e){function t(t,n,i){var a="true"===i.padding,o=0,r=function(){var r=n[0].offsetHeight,s=r-(r&&a?2*o:0),l=i.myVerticalPosition&&parseFloat(i.myVerticalPosition)||.5,c=i.contHeight?t.$eval(i.contHeight):$(e).height(),d=c>s?parseInt((c-s)*l):"",u=a?{paddingTop:d,paddingBottom:d}:{marginTop:d,marginBottom:d};n.css(u),n.addClass("vertical-aligned"),o!==d&&t.$emit("ui_height"),o=d};$(e).on("resize",r),onContentLoaded(r),t.$on("ui_height",function(){onContentLoaded(r)})}return{link:t}}]).directive("myUserLink",["$timeout","AppUsersManager",function(e,t){function n(e,n,i){var a,o=function(){var o=t.getUser(a);n.html((o[i.short&&e.$eval(i.short)?"rFirstName":"rFullName"]||"").valueOf()),i.color&&e.$eval(i.color)&&n.addClass("user_color_"+o.num)};"A"==n[0].tagName&&n.on("click",function(){t.openUser(a,i.userOverride&&e.$eval(i.userOverride))}),i.userWatch?e.$watch(i.myUserLink,function(e){a=e,o()}):(a=e.$eval(i.myUserLink),o())}return{link:n}}]).directive("myUserStatus",["$filter","$rootScope","AppUsersManager",function(e,t,n){function i(){angular.forEach(s,function(e){e()})}function a(e,i,a){var l,c=r++,d=function(){var e=n.getUser(l);i.html(o(e)).toggleClass("status_online",e.status&&"userStatusOnline"==e.status._)};e.$watch(a.myUserStatus,function(e){l=e,d()}),t.$on("user_update",function(e,t){l==t&&d()}),s[c]=d,e.$on("$destroy",function(){delete s[c]})}var o=e("userStatus"),r=0,s={};return setInterval(i,9e4),{link:a}}]).directive("myUserPhotolink",["AppUsersManager",function(e){function t(t,n,i){t.photo=e.getUserPhoto(t.userID,"User"),(t.showStatus=i.status&&t.$eval(i.status))&&(t.user=e.getUser(t.userID)),"A"==n[0].tagName&&n.on("click",function(){e.openUser(t.userID,i.userOverride&&t.$eval(i.userOverride))}),i.imgClass&&$(n[0].firstChild).addClass(i.imgClass)}return{link:t,scope:{userID:"=myUserPhotolink"},template:'<img my-load-thumb thumb="photo" /><i class="icon icon-online" ng-if="::showStatus || false" ng-show="user.status._ == \'userStatusOnline\'"></i>'}}]).directive("myAudioPlayer",["$timeout","$q","Storage","AppAudioManager","AppDocsManager","ErrorService",function(e,t,n,i,a,o){function r(e){return e===l?!1:(l&&l.pause(),void(l=e))}function s(e,t){"audio"==e.audio._?i.updateAudioDownloaded(e.audio.id):a.updateDocDownloaded(e.audio.id),e.volume=c,e.mediaPlayer={},e.download=function(){"audio"==e.audio._?i.saveAudioFile(e.audio.id):a.saveDocFile(e.audio.id)},e.togglePlay=function(){if(e.audio.url)r(e.mediaPlayer.player),e.mediaPlayer.player.playPause();else{if(e.audio.progress&&e.audio.progress.enabled)return;var n;n="audio"==e.audio._?i.downloadAudio(e.audio.id):a.downloadDoc(e.audio.id),n.then(function(){onContentLoaded(function(){var n=$("audio",t)[0];if(n){var i=!1,a=function(e){i||e.target&&e.target.error&&e.target.error.code!=e.target.error.MEDIA_ERR_DECODE&&e.target.error.code!=e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED||(i=!0,o.show({error:{type:"MEDIA_TYPE_NOT_SUPPORTED",originalError:e.target&&e.target.error}}))};n.addEventListener("error",a,!0),$(n).on("$destroy",function(){i=!0,n.removeEventListener("error",a)})}r(e.mediaPlayer.player),e.mediaPlayer.player.setVolume(c),e.mediaPlayer.player.play()})})}},e.seek=function(t){e.mediaPlayer&&e.mediaPlayer.player?e.mediaPlayer.player.seek(t):e.togglePlay()},e.setVolume=function(t){c=t,n.set({audio_volume:t}),e.mediaPlayer&&e.mediaPlayer.player&&e.mediaPlayer.player.setVolume(t)}}var l=!1,c=.5;n.get("audio_volume").then(function(e){e>0&&1>=e&&(c=e)});return{link:s,scope:{audio:"="},templateUrl:templateUrl("audio_player")}}]).directive("mySlider",["$window",function(e){function t(t,n,i){var a=$(".tg_slider_wrap",n),o=$(".tg_slider_track_fill",n),r=$(".tg_slider_thumb",n),s=a.width(),l=Math.ceil(r.width()),c=i.sliderModel,d=i.sliderOnchange,u=0,p=1,m=!1,h=!1; |
|
|
i.sliderMin&&t.$watch(i.sliderMin,function(e){u=e||0}),i.sliderMax&&t.$watch(i.sliderMax,function(e){p=e||1});var f=function(e){e=e.originalEvent||e;var n=(e.touches&&e.touches[0]?e.touches[0].pageX:e.pageX)-h;return n=Math.min(s,Math.max(0,n)),m=u+n/s*(p-u),d?t.$eval(d,{value:m}):t.$eval(c+"="+m),r.css("left",Math.max(0,n-l)),o.css("width",n),cancelEvent(e)},g=function(){$(e).off("mousemove touchmove",f),$(e).off("mouseup touchend touchcancel touchleave",g)};t.$watch(c,function(e){if(e!=m&&void 0!==e){var t=Math.max(0,(e-u)/(p-u));if(s){var n=Math.ceil(s*t);n=Math.min(s,Math.max(0,n)),r.css("left",Math.max(0,n-l)),o.css("width",n)}else r.css("left",100*t+"%"),o.css("width",100*t+"%");m=!1}}),n.on("dragstart selectstart",cancelEvent),n.on("mousedown touchstart",function(i){if(!s&&(s=a.width(),!s))return console.error("empty width"),cancelEvent(i);g(),i=i.originalEvent||i;var _;if(i.touches&&i.touches[0])h=n.position().left,_=i.touches[0].pageX-h;else if(void 0!==i.offsetX)_=i.offsetX,h=i.pageX-_;else{if(void 0===i.layerX)return cancelEvent(i);_=i.layerX,h=i.pageX-_}return m=u+_/s*(p-u),d?t.$eval(d,{value:m}):t.$eval(c+"="+m),r.css("left",Math.max(0,_-l)),o.css("width",_),$(e).on("mousemove touchmove",f),$(e).on("mouseup touchend touchcancel touchleave",g),cancelEvent(i)})}return{link:t,templateUrl:templateUrl("slider")}}]),angular.module("myApp.directives").directive("myDialogsListMobile",["$window","$timeout",function(e,t){function n(n,i,a){function o(){return d&&d.offsetHeight||(d=$(c)[0]),a.modal?void $(i).css({height:$(e).height()-(d?d.offsetHeight:58)-46}):(l&&l.offsetHeight||(l=$(".tg_page_head")[0]),r&&r.offsetHeight||(r=$(".im_dialogs_col_wrap")[0]),void $(i).css({height:$(e).height()-(l?l.offsetHeight:46)-(d?d.offsetHeight:58)-parseInt($(r).css("paddingBottom")||0)}))}var r=$(".im_dialogs_col_wrap")[0],s=i[0],l=$(".tg_page_head")[0],c=a.modal?".mobile_modal_body .im_dialogs_panel":".im_dialogs_panel",d=$(c)[0],u=!1,p=!1;n.$on("ui_dialogs_tabs",function(e,t){u=t,o()}),n.$on("ui_dialogs_search",o),n.$on("ui_dialogs_update",o),n.$on("ui_dialogs_append",function(){onContentLoaded(function(){p=!1,t(function(){$(s).trigger("scroll")})})}),n.$on("ui_dialogs_change",function(){onContentLoaded(function(){p=!1,t(function(){$(s).trigger("scroll")})})}),$(s).on("scroll",function(){i.is(":visible")&&!p&&s.scrollTop>=s.scrollHeight-s.clientHeight-300&&(n.$emit("dialogs_need_more"),p=!0)}),$(e).on("resize",o),o(),setTimeout(o,1e3)}return{link:n}}]).directive("myHistoryMobile",["$window","$timeout","$rootScope","$transition",function(e,t){function n(n,i){function a(){var e,n;if(n=$(".im_message_focus:visible",l)[0]){var i=l.clientHeight,a=l.scrollTop,o=n.offsetTop,r=n.clientHeight;(!a||o>a+i||a>o+r)&&(l.scrollTop=Math.max(0,o-Math.floor(i/2)+26)),g=!1}else(e=$(".im_message_unread_split:visible",l)[0])?(l.scrollTop=Math.max(0,e.offsetTop-52),g=!1):(l.scrollTop=l.scrollHeight,g=!0);t(function(){$(l).trigger("scroll"),_=l.scrollTop})}function o(t){if(i.is(":visible")||$(i[0].parentNode.parentNode).is(":visible")){$(u).is(":visible")&&$(u).css({height:$(m).height()}),p&&p.offsetHeight||(p=$(".tg_page_head")[0]);var n=$(e).height()-d.offsetHeight-(p?p.offsetHeight:46);$(s).css({height:n}),r(),t!==!0&&g&&onContentLoaded(function(){l.scrollTop=l.scrollHeight})}}function r(){return}var s=$(".im_history_wrap",i)[0],l=($(".im_history_messages",i)[0],$(".im_history_scrollable_wrap",i)[0]),c=$(".im_history_scrollable",i)[0],d=$(".im_bottom_panel_wrap",i)[0],u=$(".im_send_form_wrap",i)[0],p=$(".tg_page_head")[0],m=$(".im_send_form",i)[0],h=!1,f=!1;onContentLoaded(function(){l.scrollTop=l.scrollHeight}),n.$on("ui_history_append_new",function(e,t){if(g||t.my){var n=parseInt($(l).css("paddingRight"));$(l).addClass("im_history_to_bottom"),$(c).css({bottom:0,marginLeft:-Math.ceil(n/2)}),onContentLoaded(function(){$(l).removeClass("im_history_to_bottom"),$(c).css({bottom:"",marginLeft:""}),l.scrollTop=l.scrollHeight,r()})}}),n.$on("ui_history_change",function(){var e=parseInt($(l).css("paddingRight"));$(l).addClass("im_history_to_bottom"),$(c).css({bottom:0,marginLeft:-Math.ceil(e/2)}),onContentLoaded(function(){$(l).removeClass("im_history_to_bottom"),$(c).css({bottom:"",marginLeft:""}),o(!0),h=!1,f=!1,a()})}),n.$on("ui_history_change_scroll",function(){onContentLoaded(a)}),n.$on("ui_history_focus",function(){g||(l.scrollTop=l.scrollHeight,g=!0)}),n.$on("ui_history_prepend",function(){var e=l.scrollHeight,i=l.scrollTop,o=parseInt($(l).css("paddingRight")),s=l.clientHeight;$(l).addClass("im_history_to_bottom"),l.scrollHeight,$(c).css({bottom:-(e-i-s),marginLeft:-Math.ceil(o/2)});var d=function(){$(l).removeClass("im_history_to_bottom"),$(c).css({bottom:"",marginLeft:""}),_>=0?a():l.scrollTop=i+l.scrollHeight-e,r(),h=!1,t(function(){l.scrollHeight!=e&&$(l).trigger("scroll")}),clearTimeout(u),p()},u=setTimeout(d,0),p=n.$on("$viewContentLoaded",d)}),n.$on("ui_history_append",function(){var e=l.scrollHeight;onContentLoaded(function(){g=!1,r(),f=!1,_>=0&&a(),t(function(){l.scrollHeight!=e&&$(l).trigger("scroll")})})}),n.$on("ui_panel_update",function(){onContentLoaded(function(){o(),n.$broadcast("ui_message_send"),t(function(){$(l).trigger("scroll")})})}),n.$on("ui_selection_clear",function(){window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty()}),n.$on("ui_editor_resize",o),n.$on("ui_height",function(){onContentLoaded(o)});var g=!0,_=-1;$(l).on("scroll",function(){if(i.is(":visible")&&!$(l).hasClass("im_history_to_bottom")){var e=l.scrollTop;g=e>=l.scrollHeight-l.clientHeight,_>=0&&_!=e&&(_=-1),!h&&300>=e?(h=!0,n.$emit("history_need_more")):!f&&e>=l.scrollHeight-l.clientHeight-300&&(f=!0,n.$emit("history_need_less"))}}),$(e).on("resize",o),o(),onContentLoaded(o)}return{link:n}}]).directive("myContactsListMobile",["$window","$timeout",function(e){function t(t,n){function i(){$(n).css({height:$(e).height()-(o&&o.offsetHeight||0)-(a&&a.offsetHeight||0)-64})}var a=$(".contacts_modal_search")[0],o=$(".contacts_modal_panel")[0];$(e).on("resize",i),t.$on("contacts_change",function(){onContentLoaded(i)}),onContentLoaded(i)}return{link:t}}]).directive("myCountriesListMobile",["$window","$timeout",function(e){function t(t,n){function i(){$(n).css({height:$(e).height()-(o&&o.offsetHeight||0)-(a&&a.offsetHeight||0)-64})}var a=$(".countries_modal_search")[0],o=$(".countries_modal_panel")[0];$(e).on("resize",i),onContentLoaded(i)}return{link:t}}]).directive("myInfiniteScrollerMobile",function(){function e(e,t){var n=t[0],i=!1;$(n).on("scroll",function(){t.is(":visible")&&!i&&n.scrollTop>=n.scrollHeight-n.clientHeight-300&&(i=!0,e.$apply(function(){e.slice.limit+=e.slice.limitDelta||20}),onContentLoaded(function(){i=!1}))})}return{link:e,scope:!0}}); |