diff --git a/app.manifest b/app.manifest index a3d37b35..3a2d36d1 100644 --- a/app.manifest +++ b/app.manifest @@ -1,5 +1,5 @@ CACHE MANIFEST -# Time: Thu Mar 27 2014 23:16:57 GMT+0400 (MSK) +# Time: Sat Mar 29 2014 12:01:04 GMT+0400 (MSK) CACHE: diff --git a/css/app.css b/css/app.css index a54f47cc..b5f3e3d8 100644 --- a/css/app.css +++ b/css/app.css @@ -5,4 +5,4 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) *//*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:focus,a:hover{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#999}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}.list-inline>li:first-child{padding-left:0}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.428571429}dt{font-weight:700}dd{margin-left:0}@media (min-width:480px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.428571429;color:#999}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}blockquote:after,blockquote:before{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.428571429}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid{margin-right:auto;margin-left:auto;padding-left:0;padding-right:0}@media (min-width:768px){.container{width:720px}}@media (min-width:992px){.container{width:940px}}@media (min-width:1200px){.container{width:1140px}}.row{margin-left:0;margin-right:0}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:0;padding-right:0}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666666666666%}.col-xs-10{width:83.33333333333334%}.col-xs-9{width:75%}.col-xs-8{width:66.66666666666666%}.col-xs-7{width:58.333333333333336%}.col-xs-6{width:50%}.col-xs-5{width:41.66666666666667%}.col-xs-4{width:33.33333333333333%}.col-xs-3{width:25%}.col-xs-2{width:16.666666666666664%}.col-xs-1{width:8.333333333333332%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666666666666%}.col-xs-pull-10{right:83.33333333333334%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666666666666%}.col-xs-pull-7{right:58.333333333333336%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666666666667%}.col-xs-pull-4{right:33.33333333333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.666666666666664%}.col-xs-pull-1{right:8.333333333333332%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666666666666%}.col-xs-push-10{left:83.33333333333334%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666666666666%}.col-xs-push-7{left:58.333333333333336%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666666666667%}.col-xs-push-4{left:33.33333333333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.666666666666664%}.col-xs-push-1{left:8.333333333333332%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666666666666%}.col-xs-offset-10{margin-left:83.33333333333334%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666666666666%}.col-xs-offset-7{margin-left:58.333333333333336%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666666666667%}.col-xs-offset-4{margin-left:33.33333333333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.666666666666664%}.col-xs-offset-1{margin-left:8.333333333333332%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=date]{line-height:34px}.form-group{margin-bottom:15px}.checkbox,.radio{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.checkbox label,.radio label{display:inline;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{float:left;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline[disabled],.checkbox[disabled],.radio-inline[disabled],.radio[disabled],fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:0;margin-right:0}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:0}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.428571429;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default:active,.btn-default:focus,.btn-default:hover,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default.active,.btn-default:active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:400;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#999}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:480px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group-vertical>.btn:focus,.btn-group>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=checkbox],[data-toggle=buttons]>.btn>input[type=radio]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:480px){.navbar{border-radius:4px}}@media (min-width:480px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:0;padding-left:0;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:480px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}@media (min-width:480px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:480px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:480px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 0;font-size:18px;line-height:20px;height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}@media (min-width:480px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:0}}.navbar-toggle{position:relative;float:right;margin-right:0;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:480px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px 0}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:479px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:480px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:0}}@media (min-width:480px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{margin-left:0;margin-right:0;padding:10px 0;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:479px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:480px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:0}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:480px){.navbar-text{float:left;margin-left:0;margin-right:0}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#e7e7e7;color:#555}@media (max-width:479px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:479px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.428571429;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:focus,.label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:focus,.label-default[href]:hover{background-color:gray}.label-primary{background-color:#428bca}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.nav-pills>.active>a>.badge,a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:focus,a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:focus .list-group-item-text,a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group .list-group-item:first-child{border-top:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel>.list-group:first-child .list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tfoot>tr:first-child>td,.panel>.table-bordered>tfoot>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:first-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-top:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:last-child>td,.panel>.table-bordered>thead>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.428571429px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top .arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right .arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom .arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left .arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{display:block;max-width:100%;height:auto;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus,.carousel-control:hover{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{content:" ";display:table}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-print,.visible-sm,.visible-xs,td.visible-lg,td.visible-md,td.visible-print,td.visible-sm,td.visible-xs,th.visible-lg,th.visible-md,th.visible-print,th.visible-sm,th.visible-xs,tr.visible-lg,tr.visible-md,tr.visible-print,tr.visible-sm,tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (max-width:767px){.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg,td.hidden-lg,th.hidden-lg,tr.hidden-lg{display:none!important}}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}@media print{.hidden-print,td.hidden-print,th.hidden-print,tr.hidden-print{display:none!important}} .nano{position:relative;width:100%;height:100%;overflow:hidden}.nano .content{position:absolute;overflow:scroll;overflow-x:hidden;top:0;right:0;bottom:0;left:0}.nano .content:focus{outline:thin dotted}.nano .content::-webkit-scrollbar{visibility:hidden}.has-scrollbar .content::-webkit-scrollbar{visibility:visible}.nano>.pane{background:rgba(0,0,0,.1);position:absolute;width:10px;right:0;top:0;bottom:0;visibility:hidden\9;opacity:.01;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;transition:.2s;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.nano>.pane>.slider{background:#444;background:rgba(0,0,0,.4);position:relative;margin:0 1px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.nano:hover>.pane,.pane.active,.pane.flashed{visibility:visible\9;opacity:.99} -html{background:#dee4e9 url(../img/bg_tile.png) 0 0 repeat}body{color:#000;background:0 0;font:12px/18px "Lucida Grande","Lucida Sans Unicode",Arial,Helvetica,Verdana,sans-serif}.font-light{font-family:HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Light",Helvetica,Arial,Verdana,sans-serif;font-weight:300}.non_osx .font-light,body.non_osx{font:13px/18px Tahoma,sans-serif,Arial,Helvetica;font-weight:400}h1,h2,h3,h4,h5{color:#222}.non_osx h4{font-size:17px}a,a:hover{color:#3a6d99}a:hover{cursor:pointer}.form-control{color:#000;border:1px solid #d9dbde;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control:-moz-placeholder{color:#9aa2ab}.form-control::-moz-placeholder{color:#9aa2ab}.form-control:-ms-input-placeholder{color:#9aa2ab}.form-control::-webkit-input-placeholder{color:#9aa2ab}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.btn-success{color:#fff;background-color:#6AC065;border-color:#6AC065}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#61b75b;border-color:#61b75b}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background:#5aaf54;background-image:none}.btn-danger{color:#fff;background-color:#c05f5a;border-color:#c05f5a}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#ab5450;border-color:#ab5450}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background:#a24f4b;background-image:none}.btn-primary{color:#fff;background-color:#598db5;border-color:#598db5}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#4f84ac;border-color:#4f84ac}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background:#4c799c;background-image:none}.tg_page_head .navbar{min-height:44px}.tg_page_head .navbar-toggle{margin-top:5px;margin-bottom:5px}.tg_page_head .container{display:block;width:auto}.tg_page_head .navbar-inverse{background:#497495;border:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.11);-moz-box-shadow:0 1px 1px rgba(0,0,0,.11);box-shadow:0 1px 1px rgba(0,0,0,.11);margin:0}.tg_page_head .navbar>.container .navbar-brand{padding:9px 15px;opacity:.9;margin-left:0;margin-right:20px;-webkit-transition:opacity swing .9s;display:block;line-height:0;height:auto}.navbar-offline{max-width:250px;margin:0 auto;float:none}.navbar-offline-text{padding:12px 15px;color:#b9cfe3;font-size:13px;display:block;line-height:20px}.tg_head_logo{background:url(../img/Tlogo_2x.png) 0 0 no-repeat;background-size:26px 26px;display:inline-block;width:26px;height:26px;vertical-align:text-top}.is_1x .tg_head_logo{background-image:url(../img/TLogo_1x.png)}.tg_head_logo_text{background:url(../img/TLogo2_2x.png) 0 0 no-repeat;background-size:97px 15px;display:inline-block;width:97px;height:15px;vertical-align:text-top;margin-top:7px;margin-left:10px}.is_1x .tg_head_logo_text{background-image:url(../img/TLogo2_1x.png)}.tg_page_head .navbar>.container .navbar-brand:hover{opacity:1}.tg_page_head .navbar-inverse .navbar-nav>li>a{padding-top:12px;padding-bottom:12px;color:#b9cfe3;font-size:13px}.tg_page_head .navbar-inverse .navbar-nav>li>a:hover{color:#FFF}.tg_page_head .navbar-inverse .navbar-toggle{border-color:#497495;outline:0}.tg_page_head .navbar-inverse .navbar-collapse,.tg_page_head .navbar-inverse .navbar-form{border-color:#497495}.tg_page_head .navbar-inverse .navbar-toggle:active,.tg_page_head .navbar-inverse .navbar-toggle:focus,.tg_page_head .navbar-inverse .navbar-toggle:hover{background-color:rgba(255,255,255,.1)}.tg_page_head .navbar-quick-nav{margin:0}.tg_page_head .navbar-quick-nav li{float:left}.tg_page_head .navbar-quick-nav a{padding-top:15px;padding-bottom:15px}.icon-back{display:inline-block;width:10px;height:18px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -15px -419px no-repeat;background-size:42px 680px;opacity:.6}.is_1x .icon-back{background-image:url(../img/icons/IconsetW_1x.png)}.tg_page_head .navbar-quick-nav a:hover .icon-back{opacity:1}.tg_progress{height:12px;margin:0;padding:0;background:rgba(255,255,255,.4);border:5px solid rgba(0,0,0,.5);border-radius:3px}.tg_progress .progress-bar{height:2px;line-height:2px;background:rgba(255,255,255,.9);border-radius:2px;overflow:hidden}.dropdown-menu{border-radius:2px;padding:0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.175);box-shadow:0 1px 3px rgba(0,0,0,.175)}.dropdown-menu>li>a{padding:5px 14px;font-size:13px}.modal-backdrop{background:#111}.modal-backdrop.in{opacity:.25}.modal-backdrop.fade,.modal.fade,.modal.fade .modal-dialog{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.modal{overflow-y:auto}.modal-content{border:0;border-radius:4px;-webkit-box-shadow:0 1px 10px rgba(0,0,0,.15);box-shadow:0 1px 10px rgba(0,0,0,.15)}.modal_close_wrap{cursor:pointer;position:fixed;top:0;right:0;width:50%;height:100%}.modal_close{background:url(../img/icons/CloseHover_2x.png) 0 0 no-repeat;background-size:33px 33px;width:33px;height:33px;float:right;margin:60px 30px 0 0;opacity:.5;pointer-events:none;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;transition:.2s}.modal_close_wrap:hover .modal_close{opacity:1}.text-invisible{visibility:hidden}.modal-header{padding:12px 0 4px 3px;border-bottom:2px solid #E1E1E1;margin:0 18px}.modal-title{color:#222;font-weight:700;font-size:17px;line-height:1.4}.modal-close-link,.modal-head-link{font-size:12px;line-height:1.4;float:right;padding:0 2px;margin:6px 2px 0 0}.modal-close-link:hover,.modal-head-link:hover{text-decoration:none}.modal-head-link{margin-right:15px}.img_fullsize_with_progress_wrap{position:relative;margin:0 auto}.img_fullsize_progress_overlay{position:absolute;width:100%;height:100%}.img_fullsize_progress_wrap{background:rgba(0,0,0,.1);position:relative}.img_fullsize_progress{position:absolute;bottom:15px;left:50%;width:190px;margin-left:-95px}.welcome_logo{background:url(../img/logo_dogogram.png) 0 0 no-repeat;background-size:111px 112px;display:block;width:112px;height:112px;margin:100px auto 0}.welcome_box_wrap{max-width:310px;padding:25px;background:#FFF;margin:30px auto 0;border-radius:1px;overflow:hidden;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}.welcome_text{color:#999;text-align:center;margin-bottom:25px;font-size:13px}.login_form_wrap{max-width:310px;padding:25px;background:#FFF;margin:200px auto 0;border-radius:1px;overflow:hidden;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}.login_form_head{color:#222;margin-top:0;text-align:center}.login_form_lead{color:#959595;text-align:center;margin:15px 0 30px;font-size:13px}.im_page_wrap{background:#FFF;max-width:1000px;min-width:300px;margin:0 auto;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1);border-radius:0 0 3px 3px;overflow:hidden}.im_page_footer{font-size:11px;text-align:center;color:#9cacb9;line-height:40px}.im_page_footer_brand{color:#9cacb9;font-weight:700}.im_page_footer_brand:active,.im_page_footer_brand:hover{color:#8499aa;text-decoration:none}.im_dialogs_col_wrap{float:left;width:31%;border-right:2px solid #E9EBED;padding-bottom:10px}.im_history_col_wrap{float:left;width:69%}.im_dialogs_col{margin-right:-7px}.im_dialogs_col .nano>.pane{background:rgba(0,0,0,0);width:12px;right:0;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;transition:.2s;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.im_dialogs_col .nano>.pane>.slider{background:#A5B1B9;margin:0 5px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.im_dialogs_panel{padding:14px 12px;position:relative}.im_dialogs_search{position:relative}.im_page_split .im_dialogs_search{margin-right:48px}.im_dialogs_search_field{font-size:12px;line-height:normal;background:#F2F2F2 url(../img/icons/IconsetW.png) -6px -205px no-repeat;background-size:42px 680px;border:1px solid #F2F2F2;border-radius:3px;padding:6px 20px 6px 30px;margin:0}.is_1x .im_dialogs_search_field{background-image:url(../img/icons/IconsetW_1x.png)}.im_dialogs_search_field:active,.im_dialogs_search_field:focus{background-color:#FFF}.im_dialogs_search_clear{position:absolute;right:9px;margin-top:-23px;color:#999;width:13px;height:13px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -15px -192px no-repeat;background-size:42px 680px;opacity:.6}.is_1x .im_dialogs_search_clear{background-image:url(../img/icons/IconsetW_1x.png)}.im_dialogs_search_clear:hover{opacity:1}.im_dialogs_panel_dropdown{position:absolute;right:12px}.im_dialogs_panel_dropdown .dropdown-menu{right:auto;left:0;margin-top:8px}.im_dialogs_scrollable_wrap{padding:0 19px 0 12px;outline:0!important}.im_dialogs_scrollable_wrap .im_dialog_wrap{margin-top:0}.im_dialogs_scrollable_wrap a.im_dialog{clear:both;overflow:hidden;color:#000;padding:8px 9px;border-radius:0}.im_dialogs_scrollable_wrap a.im_dialog:hover{border-radius:2px;background:#f2f6fa}.im_dialogs_scrollable_wrap .active a.im_dialog{border-radius:2px;background-color:#6490b1}.im_dialogs_scrollable_wrap .active a.im_dialog:hover{background-color:#6490b1}.im_dialogs_scrollable_wrap a.im_dialog .glyphicon,.im_dialogs_scrollable_wrap a.im_dialog .icon{display:none}.im_dialog_message_wrap{overflow:hidden;word-wrap:break-word}.im_dialog_chat_from_wrap,.im_dialog_message_media,.im_dialog_message_service{color:#3a6d99}.im_dialog_message_text{color:gray}a.im_dialog:hover .im_dialog_message_text{color:#698192}.active a.im_dialog .im_dialog_chat_from_wrap,.active a.im_dialog .im_dialog_message_media,.active a.im_dialog .im_dialog_message_service,.active a.im_dialog .im_dialog_message_text{color:#FFF}.im_dialog_photo{width:40px;height:40px;border-radius:2px;overflow:hidden;margin:0 10px 0 0}.im_dialog_peer{color:#222;font-weight:700;margin-top:2px;margin-bottom:2px}.active .im_dialog_peer{color:#FFF}.im_dialog_badge{background:#75BB72;border-radius:2px;font-size:10px;padding:3px 4px;margin-top:4px}.active .im_dialog_badge{color:#428bca;background-color:#fff}.im_dialogs_modal_col .im_dialog_badge{display:none}.im_dialog_unread{background:#c1d6e5;display:inline-block;float:right;width:8px;height:8px;border-radius:5px;overflow:hidden;margin:10px 0 0}a.im_dialog:hover .im_dialog_unread{background:#a3c0d4}.active .im_dialog_unread{background-color:#a4c4dd}.im_dialog_date{color:#b3b3b3;font-size:.85em}a.im_dialog:hover .im_dialog_date{color:#91a6ba}.active .im_dialog_date,.active a.im_dialog:hover .im_dialog_date{color:#b8d1e4}.im_dialog_service{font-style:italic;color:#999}.im_dialog_message,.im_dialog_peer{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.contacts_modal_col .nano>.pane,.im_dialogs_modal_col .nano>.pane,.im_history_col .nano>.pane{background:rgba(3,36,64,.08);width:9px;right:0;top:0;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;transition:.2s;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.im_history_col .nano>.pane{top:10px;right:8px}.contacts_modal_col .nano>.pane>.slider,.im_dialogs_modal_col .nano>.pane>.slider,.im_history_col .nano>.pane>.slider{background:rgba(3,46,79,.22);margin:0;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.im_history_panel_wrap{margin:0 23px 0 15px;cursor:pointer;-webkit-box-shadow:0 2px 0 rgba(0,0,0,.12);-moz-box-shadow:0 2px 0 rgba(0,0,0,.12);box-shadow:0 2px 0 rgba(0,0,0,.12);position:relative;z-index:2;min-height:44px}.im_history_panel{padding:10px 4px 0}.im_history_panel_title h4{font-size:17px;line-height:20px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin:8px 0 6px}.im_history_panel_title h4 small{color:#999;font-size:13px;margin-left:5px}.im_history_panel_edit_link,.im_history_panel_info_link,.im_history_panel_media_dropdown .dropdown-toggle,.im_history_panel_return_link{font-size:13px;font-weight:400;padding-top:5px;line-height:1}.im_history_panel_media_dropdown{padding-top:2px}.im_history_panel_edit_link,.im_history_panel_media_dropdown,.im_history_panel_return_link{font-size:13px;margin-right:20px}.im_history_panel_return_count{margin-left:5px}.icon-caret{width:8px;height:4px;display:inline-block;vertical-align:text-top;margin-top:7px;margin-left:6px;background:url(../img/icons/IconsetW.png) -17px -444px no-repeat;background-size:42px 680px}.is_1x .icon-caret{background-image:url(../img/icons/IconsetW_1x.png)}.im_history_panel_media_dropdown .dropdown-menu{border-radius:2px;right:auto;left:-15px;margin-top:11px;padding:0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.175);box-shadow:0 1px 3px rgba(0,0,0,.175)}.im_history_wrap{overflow:hidden}.im_history_scrollable_wrap{outline:0!important;-webkit-user-select:text}.im_history_to_bottom .im_history_scrollable{position:absolute;bottom:0;width:100%}.im_history_appending{-webkit-transition:all .2s;-moz-transition:all .2s;-ms-transition:all .2s;-o-transition:all .2s;transition:all .2s}.im_history{padding:20px 0 0;position:relative}.im_history_typing_wrap{margin-top:13px;height:18px;line-height:18px;width:100%;margin-bottom:13px;overflow:hidden;-webkit-user-select:none}.im_history_typing{font-size:11px;color:#999;max-width:526px;margin:0 auto;padding:0 77px}.im_message_unread_split{background:#f4f4f4;color:#777;text-align:center;padding:4px 10px;margin:10px 0}.im_message_author{color:#3a6d99;font-weight:700}.non_osx .im_message_author{font-size:12px}.im_message_grouped .im_message_author,.im_message_grouped .im_message_from_photo{display:none}.im_message_grouped .im_message_body{margin-left:46px}.im_message_grouped .im_content_message_select_area{height:34px}.im_message_grouped .icon-select-tick{margin-top:4px}.im_message_grouped .icon-message-status{display:none;margin-top:5px;margin-left:24px}.im_message_contact_photo,.im_message_from_photo{width:34px;height:34px;border-radius:2px;overflow:hidden}a.im_message_contact_photo,a.im_message_from_photo{margin:1px 12px 0 0}.im_message_contact_name{color:#3C6E97;font-weight:700}.non_osx .im_message_contact_name{font-size:12px}a.im_message_photo_thumb,a.im_message_video_thumb{display:block;overflow:hidden;border-radius:2px}img.im_message_photo_thumb,img.im_message_video_thumb{overflow:hidden;border-radius:2px}.im_message_video,a.im_message_photo_thumb{margin-top:5px}a.im_message_video_thumb{float:left;margin-right:15px;position:relative}img.im_message_video_thumb{-webkit-filter:blur(2px);-moz-filter:blur(2px);-o-filter:blur(2px);-ms-filter:blur(2px);filter:blur(2px);filter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='2')}div.im_message_video_thumb{position:relative}.im_message_video_duration{background:rgba(0,0,0,.4);color:#FFF;position:absolute;bottom:4px;right:4px;padding:2px 6px;font-size:11px;line-height:15px;border-radius:2px;overflow:hidden;z-index:1}.icon-videoplay{position:absolute;display:inline-block;top:50%;left:50%;margin-left:-21px;margin-top:-21px;width:42px;height:42px;background:url(../img/icons/IconsetW.png) 0 -590px no-repeat;background-size:42px 680px;z-index:1}.is_1x .icon-videoplay{background-image:url(../img/icons/IconsetW_1x.png)}.im_message_geopoint{border-radius:2px;margin-top:5px;overflow:hidden;display:block;position:relative;width:200px;height:100px}.icon-geo-point{position:absolute;display:inline-block;top:50%;left:50%;margin-left:-8px;margin-top:-10px;width:15px;height:19px;background:url(../img/icons/IconsetW.png) -14px -389px no-repeat;background-size:42px 680px}.is_1x .icon-geo-point{background-image:url(../img/icons/IconsetW_1x.png)}.im_message_iframe_video{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-top:5px}.im_message_iframe_video iframe{position:absolute;top:0;left:0;width:100%;height:100%}.im_message_audio,.im_message_document,.im_message_upload_file{margin-top:3px;border-radius:3px;display:inline-block;width:340px}.icon-document,.icon-photo,.icon-video{display:block;float:left;width:38px;height:38px;vertical-align:text-top;background:#F2F2F2 url(../img/icons/IconsetW.png) -2px -229px no-repeat;background-size:42px 680px;border-radius:3px;margin-right:10px}.is_1x .icon-document,.is_1x .icon-photo,.is_1x .icon-video{background-image:url(../img/icons/IconsetW_1x.png)}.im_history_selectable .im_message_outer_wrap:hover .icon-document,.im_history_selectable .im_message_outer_wrap:hover .icon-photo,.im_history_selectable .im_message_outer_wrap:hover .icon-video,.im_message_selected .icon-document,.im_message_selected .icon-photo,.im_message_selected .icon-video{background-color:#dae6f0;background-position:-2px -542px}.im_message_document_link_disabled{cursor:default;pointer-events:none}.im_message_document_info{float:left}.im_message_document_thumb_wrap{border-radius:2px;overflow:hidden;background:#f2f2f2;width:100px;min-height:38px;max-height:100px;margin-right:10px;text-align:center;float:left;line-height:0}img.im_message_document_thumb{max-width:100px;max-height:100px;vertical-align:middle}.im_message_document_name_wrap{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:290px;padding:0 0 1px}.im_message_document_name{color:#222;display:inline-block;font-weight:700;max-width:200px;overflow:hidden;vertical-align:text-top;white-space:nowrap;text-overflow:ellipsis}.im_message_document_size{color:#999;padding-left:2px}.im_message_document_actions a{margin-right:10px}.icon-audio{display:block;float:left;width:38px;height:38px;vertical-align:text-top;background:#F2F2F2 url(../img/icons/IconsetW.png) -2px -277px no-repeat;background-size:42px 680px;border-radius:3px;margin-right:10px}.is_1x .icon-audio{background-image:url(../img/icons/IconsetW_1x.png)}.im_message_audio_info{float:left;width:292px}.im_message_audio_name_wrap{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:290px;padding:0 0 1px}.im_message_audio_name{color:#222;display:inline-block;font-weight:700;max-width:200px;overflow:hidden;vertical-align:text-top;white-space:nowrap;text-overflow:ellipsis}.im_message_audio_duration,.im_message_audio_size{color:#999;padding-left:2px}.im_message_audio_info audio{height:38px;line-height:38px}.im_message_download_progress_wrap,.im_message_upload_progress_wrap{margin-top:5px;width:290px}.im_message_document_thumbed .im_message_audio_name_wrap,.im_message_document_thumbed .im_message_document_name_wrap,.im_message_document_thumbed .im_message_download_progress_wrap,.im_message_document_thumbed .im_message_upload_progress_wrap{width:230px}.im_message_document_thumbed .im_message_document_name{max-width:150px}.im_message_video .im_message_document_name_wrap,.im_message_video .im_message_download_progress_wrap{width:150px}.im_message_video .im_message_document_name_wrap{margin-top:5px}.tg_down_progress,.tg_up_progress{height:5px;margin:0;padding:0;background:#F2F2F2;border:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.tg_down_progress .progress-bar,.tg_up_progress .progress-bar{height:5px;line-height:5px;background:#6B9ABD;border-radius:0;overflow:hidden;-webkit-box-shadow:none;box-shadow:none}.im_service_message_wrap{text-align:center}.im_service_message{display:inline-block;min-width:10px;padding:4px 7px;line-height:1.4;color:#999;text-align:center;border-radius:10px;margin:5px 0}.im_service_message_photo_thumb{display:block;margin:0 auto}.im_content_message_wrap{margin:8px 0 8px 16px}.icon-message-status{background:#43A4DB;border:0;display:block;width:10px;height:10px;border-radius:7px;overflow:hidden;position:absolute;margin-left:-26px;margin-top:13px;opacity:0}.icon-message-status-unread{opacity:1}.icon-message-status-pending{opacity:.5}.icon-message-status-error{background:#da564d;opacity:.85}.icon-message-status-error:hover{opacity:1}.icon-message-status-tick{display:none;width:16px;height:10px;background:url(../img/icons/Checks2_2x.png) 0 0 no-repeat;background-size:16px 10px;top:2px;position:relative}.icon-message-status-tick.message-status-unread-tick{background:url(../img/icons/Checks1_2x.png) 0 0 no-repeat;background-size:16px 10px}.im_message_date{color:#adadad;font-size:.85em;padding-bottom:20px}div.im_message_author,div.im_message_body{display:block;overflow:hidden}div.im_message_fwd_header{color:gray}.im_message_text{word-wrap:break-word}span.emoji{-moz-box-orient:vertical;display:inline-block;vertical-align:baseline;*vertical-align:auto;*zoom:1;*display:inline;height:18px;width:18px;background-repeat:no-repeat;text-indent:-9999px}.emoji-spritesheet-0{background-size:486px 126px;background-image:url(../img/emojisprite_0.png)}.emoji-spritesheet-1{background-size:522px 72px;background-image:url(../img/emojisprite_1.png)}.emoji-spritesheet-2{background-size:594px 126px;background-image:url(../img/emojisprite_2.png)}.emoji-spritesheet-3{background-size:612px 54px;background-image:url(../img/emojisprite_3.png)}.emoji-spritesheet-4{background-size:612px 108px;background-image:url(../img/emojisprite_4.png)}.im_history_empty,.im_history_not_selected{text-align:center;color:#999;font-size:1.5em;padding:0 50px}.im_history_to_bottom .im_history_empty,.im_history_to_bottom .im_history_not_selected{display:none}.im_send_panel_wrap{max-width:526px;margin:0 auto;padding:10px 15px 22px}.im_send_form_wrap{position:relative}.im_send_form{max-width:389px;margin:0 auto;position:absolute;bottom:0;left:62px;right:62px}.im_submit{padding:5px 12px;font-size:13px;line-height:17px;min-width:60px}.im_send_dropbox_wrap{background:#FFF;display:none;padding:15px 10px;margin:1px;border-radius:4px;overflow:hidden;text-align:center;color:#999;position:absolute}textarea.im_message_field{font-size:12px;margin-bottom:10px;padding:6px;min-height:50px;height:50px;resize:none}.im_attach{cursor:pointer;display:block;overflow:hidden;position:relative;padding:0 2px;width:23px;height:24px;margin-top:4px;margin-left:20px}.icon-paperclip{display:inline-block;width:19px;height:23px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -12px -68px no-repeat;background-size:42px 680px;opacity:.8}.is_1x .icon-paperclip{background-image:url(../img/icons/IconsetW_1x.png)}.im_attach:hover .icon-paperclip{opacity:1}.im_attach:active .icon-paperclip{background-position:-12px -100px;opacity:1}.im_emoji_btn{cursor:pointer;padding:0;width:23px;height:23px;margin-top:4px}.icon-emoji{display:inline-block;width:23px;height:23px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -10px -4px no-repeat;background-size:42px 680px;opacity:.8}.is_1x .icon-emoji{background-image:url(../img/icons/IconsetW_1x.png)}.im_emoji_btn:hover .icon-emoji{opacity:1}.im_emoji_btn.on .icon-emoji,.im_emoji_btn:active .icon-emoji{background-position:-10px -36px;opacity:1}.im_attach_input,.im_media_attach_input{cursor:pointer;font-size:72px!important;opacity:.01;position:absolute;z-index:100;margin:0;padding:0;right:0}.im_media_attach{cursor:pointer;display:block;overflow:hidden;position:relative;padding:0;width:24px;height:22px;margin-top:5px;margin-left:20px}.icon-camera{display:inline-block;width:25px;height:21px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -9px -132px no-repeat;background-size:42px 680px;opacity:.8}.is_1x .icon-camera{background-image:url(../img/icons/IconsetW_1x.png)}.im_media_attach:hover .icon-camera{opacity:1}.im_media_attach:active .icon-camera{background-position:-9px -162px;opacity:1}.im_panel_own_photo,.im_panel_peer_photo{width:50px;height:50px;border-radius:3px;overflow:hidden}div.im_panel_peer_photo{cursor:pointer;margin-left:12px;height:55px}div.im_panel_own_photo{margin-right:12px}.im_panel_peer_online{background:#6DBF69;border:1px solid #FFF;display:block;width:11px;height:11px;border-radius:6px;overflow:hidden;position:absolute;margin-top:-7px;margin-left:43px}.status_online{background:#6DBF69;border:1px solid #FFF;display:block;width:11px;height:11px;border-radius:6px;overflow:hidden;position:absolute;margin-top:-7px;margin-left:33px}.media_modal_wrap .modal-body{padding:19px 18px 17px}a.img_fullsize{display:block;text-align:center}img.img_fullsize{margin:0 auto}.media_modal_info{color:#777;margin:20px 0 0}.media_modal_author{font-weight:700}.non_osx .media_modal_author{font-size:12px}.user_modal_window .modal-dialog{max-width:506px}.user_modal_wrap .modal-body{padding:23px 25px 30px}.settings_profile_photo_wrap{width:120px;margin-right:22px;margin-bottom:15px}.settings_profile_photo{position:relative;overflow:hidden}.settings_profile_photo_change_wrap{background:rgba(0,0,0,.6);padding:2px 5px;position:absolute;opacity:0;bottom:-30px;-webkit-transition:all ease-in-out .2s;transition:all ease-in-out .2s;width:120px}.settings_profile_photo:hover .settings_profile_photo_change_wrap{bottom:0;opacity:1}.settings_profile_photo_delete_link,.settings_profile_photo_loading,.settings_profile_photo_update_link{display:block;color:rgba(255,255,255,.8);text-align:center;padding:2px 0}.settings_profile_photo_delete_link:hover,.settings_profile_photo_update_link:hover{color:#FFF;text-decoration:none}.settings_profile_photo_update_link{position:relative;overflow:hidden}.user_modal_image_wrap{width:120px;margin-right:22px}.user_modal_image{width:120px;height:120px}.user_modal_header{font-weight:700;margin:0 0 5px}.user_modal_status{color:#999}.user_modal_actions_wrap{margin-top:8px}.user_modal_send_btn{border:0;background:#4E9CD8;font-size:12px;padding-left:16px;padding-right:16px;float:left}.user_modal_send_btn:hover{background:#539BD1}.user_modal_other_btn{margin-left:10px;float:left}.user_modal_other_btn .dropdown-toggle{border:0;font-size:12px}.user_modal_settings_wrap{margin-top:25px}.user_modal_notifications{font-weight:700}.user_modal_clear{margin-top:20px}.chat_modal_window .modal-dialog{max-width:506px}.chat_modal_wrap .modal-body{padding:23px 25px 15px}.chat_modal_photo_wrap{width:120px;margin-right:22px}.chat_modal_photo{position:relative;overflow:hidden}.chat_modal_photo_change_wrap{background:rgba(0,0,0,.6);padding:2px 5px;position:absolute;opacity:0;bottom:-30px;-webkit-transition:all ease-in-out .2s;transition:all ease-in-out .2s;width:120px}.chat_modal_photo:hover .chat_modal_photo_change_wrap{bottom:0;opacity:1}.chat_modal_photo_delete_link,.chat_modal_photo_loading,.chat_modal_photo_update_link{display:block;color:rgba(255,255,255,.8);text-align:center;padding:2px 0}.chat_modal_photo_delete_link:hover,.chat_modal_photo_update_link:hover{color:#FFF;text-decoration:none}.chat_modal_photo_update_link{position:relative;overflow:hidden}.chat_modal_header{margin:0 0 5px}.chat_modal_members_count{color:#999}.chat_modal_actions_wrap{margin-top:8px}.chat_modal_send_btn{border:0;background:#4E9CD8;font-size:12px;padding-left:16px;padding-right:16px;float:left}.chat_modal_send_btn:hover{background:#539BD1}.chat_modal_delete_btn{border:0;font-size:12px;padding-left:16px;padding-right:16px;float:left}.chat_modal_other_btn{margin-left:10px;float:left}.chat_modal_other_btn .dropdown-toggle{border:0;font-size:12px}.chat_modal_settings_wrap{margin-top:10px}.chat_modal_notifications{margin-top:25px;font-weight:700}.chat_modal_members_header{margin:20px 0 6px}.chat_modal_participant_wrap{padding:8px 7px;border-top:1px solid #F0F0F0}.chat_modal_participant_kick{padding:11px 0;display:block}.chat_modal_participant_name{display:block;color:#3C6E97;font-weight:700;margin:1px 0 2px}.non_osx .chat_modal_participant_name{font-size:12px}.chat_modal_participant_status{color:#999}.chat_modal_participant_photo{width:40px;height:40px;margin-right:10px;overflow:hidden}.chat_modal_members_forbidden{color:#999}.emoji-wysiwyg-editor:empty:before{content:attr(placeholder);color:#9aa2ab}.emoji-wysiwyg-editor:active:before,.emoji-wysiwyg-editor:focus:before{content:none}.emoji-wysiwyg-editor{font-size:12px;margin-bottom:10px;padding:6px;min-height:50px;height:auto;max-height:300px;overflow:auto;line-height:17px;border:1px solid #d9dbde;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-webkit-user-select:text}.emoji-wysiwyg-editor img{width:20px;height:20px;vertical-align:middle;margin:-3px 0 0 0}.emoji-menu{position:absolute;z-index:999;width:220px;margin-left:-107px;margin-top:-252px;border:1px #dfdfdf solid;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;overflow:hidden;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1)}.emoji-items-wrap1{background:#FFF;padding:5px 2px 5px 5px}.emoji-items-wrap1 .emoji-menu-tabs{width:100%;margin-bottom:8px;margin-top:3px}.emoji-items-wrap1 .emoji-menu-tabs td{text-align:center;color:#fff;line-height:0}.emoji-menu-tabs .emoji-menu-tab{display:inline-block;width:24px;height:29px;background:url(../img/icons/IconsetSmiles.png) no-repeat;background-size:42px 350px}.is_1x .emoji-menu-tabs .emoji-menu-tab{background-image:url(../img/icons/IconsetSmiles_1x.png)}.emoji-menu-tabs .icon-smile{background-position:-9px -34px}.emoji-menu-tabs .icon-smile-selected{background-position:-9px -5px}.emoji-menu-tabs .icon-flower{background-position:-9px -145px}.emoji-menu-tabs .icon-flower-selected{background-position:-9px -118px}.emoji-menu-tabs .icon-bell{background-position:-9px -89px}.emoji-menu-tabs .icon-bell-selected{background-position:-9px -61px}.emoji-menu-tabs .icon-car{background-position:-9px -196px}.emoji-menu-tabs .icon-car-selected{background-position:-9px -170px}.emoji-menu-tabs .icon-grid{background-position:-9px -248px}.emoji-menu-tabs .icon-grid-selected{background-position:-9px -222px}.emoji-menu-tabs .icon-bell,.emoji-menu-tabs .icon-car,.emoji-menu-tabs .icon-flower,.emoji-menu-tabs .icon-grid,.emoji-menu-tabs .icon-smile{opacity:.7}.emoji-menu-tabs .icon-bell:hover,.emoji-menu-tabs .icon-car:hover,.emoji-menu-tabs .icon-flower:hover,.emoji-menu-tabs .icon-grid:hover,.emoji-menu-tabs .icon-smile:hover{opacity:1}.emoji-menu .emoji-items-wrap{position:relative;height:174px}.emoji-menu .emoji-items{padding-right:8px;outline:0!important}.emoji-menu img{width:20px;height:20px;vertical-align:middle;border:0 none}.emoji-menu .emoji-items a{margin:-1px 0 0 -1px;padding:5px;display:block;float:left;border-radius:2px}.emoji-menu .emoji-items a:hover{background-color:#edf2f5}.emoji-menu:after{content:' ';display:block;clear:left}.emoji-menu a .label{display:none}.emoji-menu-tail{display:none;background:url(../img/icons/IconsetW.png) -14px -268px no-repeat;background-size:42px 680px;width:14px;height:7px;margin:0 83px}.is_1x .emoji-menu-tail{background-image:url(../img/icons/IconsetW_1x.png)}.emoji-menu .nano>.pane{background:rgba(255,255,255,0);right:-2px}.emoji-menu .nano>.pane>.slider{background:#d1d1d1;margin:0 3px 0 4px}.error_modal_window .modal-dialog{max-width:350px}.error_modal_description{text-align:center;padding:20px;font-size:14px;line-height:160%}.photo_modal_error{color:#999;position:absolute;width:100%;top:50%;margin-top:-20px;padding:0 20px;text-align:center;font-size:1.4em;line-height:160%}.video_full_error{border-radius:10px;overflow:hidden;background:rgba(0,0,0,.6);color:#FFF;position:absolute;top:50%;margin:-40px 10px 0;padding:10px;text-align:center;font-size:1.4em;line-height:160%}.settings_modal_window .modal-dialog{max-width:502px}.settings_profile_image_wrap{float:left;width:120px;margin-right:22px}.settings_profile_first_name,.settings_profile_last_name{width:180px;float:left}.settings_profile_first_name label,.settings_profile_last_name label{margin-bottom:3px}.settings_profile_first_name{margin-right:22px;margin-bottom:10px}.settings_profile_last_name{margin-right:10px;margin-bottom:15px}.settings_profile_save{padding-top:21px;float:left}.settings_profile_save_btn{width:50px}.settings_profile_edit_form{margin-bottom:0}.settings_profile_edit_form input{font-size:12px;line-height:normal;background:#F2F2F2;border:1px solid #F2F2F2;border-radius:0;padding:6px;margin:0}.settings_profile_edit_form input:active,.settings_profile_edit_form input:focus{background-color:#FFF}.settings_send_choose_form input{margin-top:2px}.settings_send_choose_form{margin-bottom:20px}.settings_user_phone,.settings_version{color:#999}.contacts_modal_window .modal-dialog{max-width:506px}.contacts_modal_wrap .modal-body{padding:23px 25px 15px}.contacts_modal_search{padding:0 0 14px;position:relative}.contacts_modal_search_field{font-size:12px;line-height:normal;background:#F2F2F2 url(../img/icons/IconsetW.png) -6px -205px no-repeat;background-size:42px 680px;border:1px solid #F2F2F2;border-radius:3px;padding:6px 20px 6px 30px;margin:0}.is_1x .contacts_modal_search_field{background-image:url(../img/icons/IconsetW_1x.png)}.contacts_modal_search_field:active,.contacts_modal_search_field:focus{background-color:#FFF}.contacts_modal_search_clear{position:absolute;right:9px;margin-top:-23px;color:#999;width:13px;height:13px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -15px -192px no-repeat;background-size:42px 680px;opacity:.6}.is_1x .contacts_modal_search_clear{background-image:url(../img/icons/IconsetW_1x.png)}.contacts_modal_search_clear:hover{opacity:1}.contacts_modal_col{margin-right:-17px}.contacts_scrollable_wrap{padding:0 17px 0 0;outline:0!important}.contacts_modal_members_list a.contacts_modal_contact{clear:both;overflow:hidden;color:#000;padding:8px 9px;border-radius:0}.contacts_modal_members_list a.contacts_modal_contact:hover{border-radius:2px;background:#f2f6fa}.contacts_modal_members_list .active a.contacts_modal_contact{border-radius:2px;background-color:#6490b1}.contacts_modal_members_list .active a.contacts_modal_contact:hover{background-color:#6490b1}.contacts_modal_contact_name{display:block;color:#3C6E97;font-weight:700;margin:1px 0 2px}.non_osx .contacts_modal_contact_name{font-size:12px}.contacts_modal_contact_photo{width:40px;height:40px;margin-right:10px;overflow:hidden}.contacts_modal_contact_status{color:#999}a.contacts_modal_contact:hover .contacts_modal_contact_status{color:#91a6ba}.contacts_modal_members_list .active .contacts_modal_contact_name,.contacts_modal_members_list .active a.contacts_modal_contact .contacts_modal_contact_status{color:#FFF}.icon-contact-tick{position:absolute;right:10px;top:22px;width:17px;height:15px;background:url(../img/icons/IconsetW.png) -13px -366px no-repeat;background-size:42px 680px;opacity:.5}.is_1x .icon-contact-tick{background-image:url(../img/icons/IconsetW_1x.png)}.contacts_modal_members_list a.contacts_modal_contact:hover .icon-contact-tick{background-position:-13px -366px;opacity:1}.contacts_modal_members_list .active .icon-contact-tick{background-position:-13px -458px!important;opacity:1}.contacts_modal_members_list .disabled{pointer-events:none}.contacts_modal_members_list .disabled .icon-contact-tick{display:none}.contacts_modal_actions,.contacts_modal_panel{padding-top:10px}.im_edit_panel_wrap{padding:10px 0 34px;margin:0 24px 0 12px}.im_edit_panel_border{display:block;margin:0 0 34px 3px;border-bottom:1px solid #EEE}.im_panel_to_top .im_edit_panel_wrap{background:#FFF;position:absolute;width:100%}.im_edit_cancel_link,.im_edit_flush_link{display:block;padding:6px 17px;border-radius:2px;overflow:hidden;margin:6px}.im_edit_cancel_link{float:left}.im_edit_flush_link{float:right}.im_edit_cancel_link:hover,.im_edit_flush_link:hover{background:#f2f6fa;text-decoration:none}.im_edit_selected_actions{text-align:center}.im_edit_delete_btn,.im_edit_forward_btn{border-radius:2px;padding:5px 17px;font-weight:400;font-size:12px;line-height:18px;margin:6px}.im_edit_panel_title{text-align:center;margin:0;font-size:14px;line-height:34px}.icon-delete{display:inline-block;width:12px;height:15px;background:url(../img/icons/IconsetW.png) -15px -319px no-repeat;background-size:42px 680px}.is_1x .icon-delete{background-image:url(../img/icons/IconsetW_1x.png)}.im_message_selected{background:#f2f6fa}.im_history_selectable .im_message_outer_wrap{cursor:pointer}.im_history_selectable .im_message_outer_wrap:hover{background:#f2f6fa}.im_history_selectable .im_message_outer_wrap:hover .im_message_date,.im_history_selectable .im_message_outer_wrap:hover .im_message_fwd_header,.im_message_selected .im_message_date,.im_message_selected .im_message_fwd_header{color:#91a6ba}.im_message_wrap{max-width:526px;padding:0 15px;margin:0 auto;position:relative}.im_content_message_select_area{display:none;cursor:pointer;position:absolute;width:112px;height:52px;margin:-8px 0 0 -112px}@media (min-width:1024px){.im_content_message_select_area{display:block}}.icon-select-tick{display:none;width:26px;height:26px;margin:13px 0 0 40px;background:url(../img/icons/IconsetW.png) -9px -516px no-repeat;background-size:42px 680px}.is_1x .icon-select-tick{background-image:url(../img/icons/IconsetW_1x.png)}.im_content_message_select_area:hover .icon-select-tick,.im_history_selectable .icon-select-tick{display:inline-block}.im_content_message_select_area:hover .icon-select-tick,.im_history_selectable .im_message_outer_wrap:hover .icon-select-tick,.im_message_selected .icon-select-tick{background-position:-9px -481px;opacity:.5}.im_message_selected .icon-select-tick{opacity:1!important}@media (min-width:480px){.tg_page_head .navbar-quick-nav{display:none}}@media (max-width:480px){.tg_page_head .navbar>.container .navbar-brand{padding-left:9px}.im_history_panel_info_link{display:none}.im_history_panel_edit_link{margin-right:0}.im_dialogs_panel_dropdown .dropdown-menu{right:0;left:auto}}@media (min-height:768px){.user_modal_window .modal-dialog{margin-top:150px}}@media (max-width:480px){.login_form_wrap{border-radius:0;max-width:auto;box-shadow:none;-webkit-box-shadow:none;margin:30px auto 20px}.im_panel_own_photo,.im_panel_peer_photo{display:none}.im_history_panel_wrap{margin:0 15px}.im_send_panel_wrap{padding:10px 15px}.icon-select-tick{margin:10px 0 0 -24px}.im_content_message_wrap{margin-left:0}.im_history_typing{padding:0 15px 0 60px}.im_send_form{left:0;right:0;max-width:none}.im_edit_cancel_link,.im_edit_delete_btn,.im_edit_flush_link,.im_edit_forward_btn{padding-left:5px;padding-right:5px;margin:6px 4px}.im_edit_panel_border{margin:0 18px 22px 3px}.im_edit_panel_wrap{margin:0 5px;padding-bottom:34px}}@media (max-height:480px){.im_page_footer{display:none}.im_send_panel_wrap{padding-bottom:10px}.im_edit_panel_wrap{padding-bottom:18px}.emoji-wysiwyg-editor{min-height:34px;max-height:150px}}@media (max-width:640px){.im_dialog_peer{white-space:normal;height:2.84em}.im_dialog_message{display:none}}@media (max-width:900px){.icon-message-status{z-index:10;margin-left:-5px;border-radius:0;height:34px;width:2px;margin-top:1px;border:0}}@media (max-width:480px){.im_dialogs_col_wrap,.im_page_peer_not_selected .im_history_col_wrap{display:none}.im_page_peer_not_selected .im_dialogs_col_wrap{display:block;border-right:0}.im_page_peer_not_selected .im_dialogs_col{margin-right:0}.im_page_peer_not_selected .im_dialogs_col_wrap .pane{width:12px;right:0}.im_page_peer_not_selected .im_dialogs_col_wrap .pane>.slider{border-radius:3px;margin:0 3px}.im_dialogs_scrollable_wrap{padding:0 12px}.im_dialogs_col_wrap,.im_history_col_wrap{float:none;width:auto;max-width:auto;min-width:auto}.im_page_peer_not_selected .im_dialog_peer{white-space:nowrap;height:auto}.im_page_peer_not_selected .im_dialog_message{display:block}}.peer_select_window .modal-dialog{max-width:506px}.peer_select_modal_wrap .modal-body{padding:10px 10px 15px}.user_color_1,.user_color_1:hover{color:#b3577a}.user_color_2,.user_color_2:hover{color:#539e4f}.user_color_3,.user_color_3:hover{color:#ae9661}.user_color_4,.user_color_4:hover{color:#4979a3}.user_color_5,.user_color_5:hover{color:#8365ab}.user_color_6,.user_color_6:hover{color:#b7635d}.user_color_7,.user_color_7:hover{color:#5397b4}.user_color_8,.user_color_8:hover{color:#c07844}.im_dialogs_contacts_wrap h5{color:#999;font-size:13px;margin-left:8px}.tooltip-inner{background:rgba(0,0,0,.8)}.tooltip-arrow{opacity:.8}.im_dialogs_panel_dropdown{margin-left:8px}.im_dialogs_panel_dropdown .dropdown-toggle{background:#F2F2F2;display:block;border-radius:2px;overflow:hidden;padding:11px 12px;width:38px;height:34px}.im_dialogs_panel_dropdown .dropdown-toggle .icon-bar{background:#b3b3b3;display:block;height:2px;margin-bottom:3px}.im_dialogs_panel_dropdown .dropdown-toggle .icon-bar:last-child{margin-bottom:0}.im_dialogs_panel_dropdown.open .dropdown-toggle{background:#6690b0}.im_dialogs_panel_dropdown.open .dropdown-toggle .icon-bar{background:#fff}.import_contact_modal_window .modal-dialog{max-width:380px}.import_modal_field_wrap{margin-bottom:10px}.modal-content-animated{-webkit-transition:margin-top linear .2s;transition:margin-top linear .2s} \ No newline at end of file +html{background:#dee4e9 url(../img/bg_tile.png) 0 0 repeat}body{color:#000;background:0 0;font:12px/18px "Lucida Grande","Lucida Sans Unicode",Arial,Helvetica,Verdana,sans-serif}.font-light{font-family:HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Light",Helvetica,Arial,Verdana,sans-serif;font-weight:300}.non_osx .font-light,body.non_osx{font:13px/18px Tahoma,sans-serif,Arial,Helvetica;font-weight:400}h1,h2,h3,h4,h5{color:#222}.non_osx h4{font-size:17px}a,a:hover{color:#3a6d99}a:hover{cursor:pointer}.form-control{color:#000;border:1px solid #d9dbde;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control:-moz-placeholder{color:#9aa2ab}.form-control::-moz-placeholder{color:#9aa2ab}.form-control:-ms-input-placeholder{color:#9aa2ab}.form-control::-webkit-input-placeholder{color:#9aa2ab}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.btn-success{color:#fff;background-color:#6AC065;border-color:#6AC065}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#61b75b;border-color:#61b75b}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background:#5aaf54;background-image:none}.btn-danger{color:#fff;background-color:#c05f5a;border-color:#c05f5a}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#ab5450;border-color:#ab5450}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background:#a24f4b;background-image:none}.btn-primary{color:#fff;background-color:#598db5;border-color:#598db5}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#4f84ac;border-color:#4f84ac}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background:#4c799c;background-image:none}.tg_page_head .navbar{min-height:44px}.tg_page_head .navbar-toggle{margin-top:5px;margin-bottom:5px}.tg_page_head .container{display:block;width:auto}.tg_page_head .navbar-inverse{background:#497495;border:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.11);-moz-box-shadow:0 1px 1px rgba(0,0,0,.11);box-shadow:0 1px 1px rgba(0,0,0,.11);margin:0}.tg_page_head .navbar>.container .navbar-brand{padding:9px 15px;opacity:.9;margin-left:0;margin-right:20px;-webkit-transition:opacity swing .9s;display:block;line-height:0;height:auto}.navbar-offline{max-width:250px;margin:0 auto;float:none}.navbar-offline-text{padding:12px 15px;color:#b9cfe3;font-size:13px;display:block;line-height:20px}.tg_head_logo{background:url(../img/Tlogo_2x.png) 0 0 no-repeat;background-size:26px 26px;display:inline-block;width:26px;height:26px;vertical-align:text-top}.is_1x .tg_head_logo{background-image:url(../img/TLogo_1x.png)}.tg_head_logo_text{background:url(../img/TLogo2_2x.png) 0 0 no-repeat;background-size:97px 15px;display:inline-block;width:97px;height:15px;vertical-align:text-top;margin-top:7px;margin-left:10px}.is_1x .tg_head_logo_text{background-image:url(../img/TLogo2_1x.png)}.tg_page_head .navbar>.container .navbar-brand:hover{opacity:1}.tg_page_head .navbar-inverse .navbar-nav>li>a{padding-top:12px;padding-bottom:12px;color:#b9cfe3;font-size:13px}.tg_page_head .navbar-inverse .navbar-nav>li>a:hover{color:#FFF}.tg_page_head .navbar-inverse .navbar-toggle{border-color:#497495;outline:0}.tg_page_head .navbar-inverse .navbar-collapse,.tg_page_head .navbar-inverse .navbar-form{border-color:#497495}.tg_page_head .navbar-inverse .navbar-toggle:active,.tg_page_head .navbar-inverse .navbar-toggle:focus,.tg_page_head .navbar-inverse .navbar-toggle:hover{background-color:rgba(255,255,255,.1)}.tg_page_head .navbar-quick-nav{margin:0}.tg_page_head .navbar-quick-nav li{float:left}.tg_page_head .navbar-quick-nav a{padding-top:15px;padding-bottom:15px}.icon-back{display:inline-block;width:10px;height:18px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -15px -419px no-repeat;background-size:42px 680px;opacity:.6}.is_1x .icon-back{background-image:url(../img/icons/IconsetW_1x.png)}.tg_page_head .navbar-quick-nav a:hover .icon-back{opacity:1}.tg_progress{height:12px;margin:0;padding:0;background:rgba(255,255,255,.4);border:5px solid rgba(0,0,0,.5);border-radius:3px}.tg_progress .progress-bar{height:5px;line-height:2px;background:rgba(255,255,255,.9);border-radius:0;overflow:hidden}.dropdown-menu{border-radius:2px;padding:0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.175);box-shadow:0 1px 3px rgba(0,0,0,.175)}.dropdown-menu>li>a{padding:5px 14px;font-size:13px}.modal-backdrop{background:#111}.modal-backdrop.in{opacity:.25}.modal-backdrop.fade,.modal.fade,.modal.fade .modal-dialog{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.modal{overflow-y:auto}.modal-content{border:0;border-radius:4px;-webkit-box-shadow:0 1px 10px rgba(0,0,0,.15);box-shadow:0 1px 10px rgba(0,0,0,.15)}.modal_close_wrap{cursor:pointer;position:fixed;top:0;right:0;width:50%;height:100%}.modal_close{background:url(../img/icons/CloseHover_2x.png) 0 0 no-repeat;background-size:33px 33px;width:33px;height:33px;float:right;margin:60px 30px 0 0;opacity:.5;pointer-events:none;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;transition:.2s}.modal_close_wrap:hover .modal_close{opacity:1}.text-invisible{visibility:hidden}.modal-header{padding:12px 0 4px 3px;border-bottom:2px solid #E1E1E1;margin:0 18px}.modal-title{color:#222;font-weight:700;font-size:17px;line-height:1.4}.modal-close-link,.modal-head-link{font-size:12px;line-height:1.4;float:right;padding:0 2px;margin:6px 2px 0 0}.modal-close-link:hover,.modal-head-link:hover{text-decoration:none}.modal-head-link{margin-right:15px}.img_fullsize_with_progress_wrap{position:relative;margin:0 auto}.img_fullsize_progress_overlay{position:absolute;width:100%;height:100%}.img_fullsize_progress_wrap{background:rgba(0,0,0,.1);position:relative}.img_fullsize_progress{position:absolute;bottom:0;left:0;width:100%;height:25px;margin:0;background:rgba(0,0,0,.5);border:0;border-radius:0;padding:10px}.welcome_logo{background:url(../img/logo_dogogram.png) 0 0 no-repeat;background-size:111px 112px;display:block;width:112px;height:112px;margin:100px auto 0}.welcome_box_wrap{max-width:310px;padding:25px;background:#FFF;margin:30px auto 0;border-radius:1px;overflow:hidden;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}.welcome_text{color:#999;text-align:center;margin-bottom:25px;font-size:13px}.login_form_wrap{max-width:310px;padding:25px;background:#FFF;margin:200px auto 0;border-radius:1px;overflow:hidden;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}.login_form_head{color:#222;margin-top:0;text-align:center}.login_form_lead{color:#959595;text-align:center;margin:15px 0 30px;font-size:13px}.im_page_wrap{background:#FFF;max-width:1000px;min-width:300px;margin:0 auto;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1);border-radius:0 0 3px 3px;overflow:hidden}.im_page_footer{font-size:11px;text-align:center;color:#9cacb9;line-height:40px}.im_page_footer_brand{color:#9cacb9;font-weight:700}.im_page_footer_brand:active,.im_page_footer_brand:hover{color:#8499aa;text-decoration:none}.im_dialogs_col_wrap{float:left;width:31%;border-right:2px solid #E9EBED;padding-bottom:10px}.im_history_col_wrap{float:left;width:69%}.im_dialogs_col{margin-right:-7px}.im_dialogs_col .nano>.pane{background:rgba(0,0,0,0);width:12px;right:0;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;transition:.2s;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.im_dialogs_col .nano>.pane>.slider{background:#A5B1B9;margin:0 5px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.im_dialogs_panel{padding:14px 12px;position:relative}.im_dialogs_search{position:relative}.im_page_split .im_dialogs_search{margin-right:48px}.im_dialogs_search_field{font-size:12px;line-height:normal;background:#F2F2F2 url(../img/icons/IconsetW.png) -6px -205px no-repeat;background-size:42px 680px;border:1px solid #F2F2F2;border-radius:3px;padding:6px 20px 6px 30px;margin:0}.is_1x .im_dialogs_search_field{background-image:url(../img/icons/IconsetW_1x.png)}.im_dialogs_search_field:active,.im_dialogs_search_field:focus{background-color:#FFF}.im_dialogs_search_clear{position:absolute;right:9px;margin-top:-23px;color:#999;width:13px;height:13px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -15px -192px no-repeat;background-size:42px 680px;opacity:.6}.is_1x .im_dialogs_search_clear{background-image:url(../img/icons/IconsetW_1x.png)}.im_dialogs_search_clear:hover{opacity:1}.im_dialogs_panel_dropdown{position:absolute;right:12px}.im_dialogs_panel_dropdown .dropdown-menu{right:auto;left:0;margin-top:8px}.im_dialogs_scrollable_wrap{padding:0 19px 0 12px;outline:0!important}.im_dialogs_scrollable_wrap .im_dialog_wrap{margin-top:0}.im_dialogs_scrollable_wrap a.im_dialog{clear:both;overflow:hidden;color:#000;padding:8px 9px;border-radius:0}.im_dialogs_scrollable_wrap a.im_dialog:hover{border-radius:2px;background:#f2f6fa}.im_dialogs_scrollable_wrap .active a.im_dialog{border-radius:2px;background-color:#6490b1}.im_dialogs_scrollable_wrap .active a.im_dialog:hover{background-color:#6490b1}.im_dialogs_scrollable_wrap a.im_dialog .glyphicon,.im_dialogs_scrollable_wrap a.im_dialog .icon{display:none}.im_dialog_message_wrap{overflow:hidden;word-wrap:break-word}.im_dialog_chat_from_wrap,.im_dialog_message_media,.im_dialog_message_service{color:#3a6d99}.im_dialog_message_text{color:gray}a.im_dialog:hover .im_dialog_message_text{color:#698192}.active a.im_dialog .im_dialog_chat_from_wrap,.active a.im_dialog .im_dialog_message_media,.active a.im_dialog .im_dialog_message_service,.active a.im_dialog .im_dialog_message_text{color:#FFF}.im_dialog_photo{width:40px;height:40px;border-radius:2px;overflow:hidden;margin:0 10px 0 0}.im_dialog_peer{color:#222;font-weight:700;margin-top:2px;margin-bottom:2px}.active .im_dialog_peer{color:#FFF}.im_dialog_badge{background:#75BB72;border-radius:2px;font-size:10px;padding:3px 4px;margin-top:4px}.active .im_dialog_badge{color:#428bca;background-color:#fff}.im_dialogs_modal_col .im_dialog_badge{display:none}.im_dialog_unread{background:#c1d6e5;display:inline-block;float:right;width:8px;height:8px;border-radius:5px;overflow:hidden;margin:10px 0 0}a.im_dialog:hover .im_dialog_unread{background:#a3c0d4}.active .im_dialog_unread{background-color:#a4c4dd}.im_dialog_date{color:#b3b3b3;font-size:.85em}a.im_dialog:hover .im_dialog_date{color:#91a6ba}.active .im_dialog_date,.active a.im_dialog:hover .im_dialog_date{color:#b8d1e4}.im_dialog_service{font-style:italic;color:#999}.im_dialog_message,.im_dialog_peer{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.contacts_modal_col .nano>.pane,.im_dialogs_modal_col .nano>.pane,.im_history_col .nano>.pane{background:rgba(3,36,64,.08);width:9px;right:0;top:0;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;transition:.2s;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.im_history_col .nano>.pane{top:10px;right:8px}.contacts_modal_col .nano>.pane>.slider,.im_dialogs_modal_col .nano>.pane>.slider,.im_history_col .nano>.pane>.slider{background:rgba(3,46,79,.22);margin:0;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.im_history_panel_wrap{margin:0 23px 0 15px;cursor:pointer;-webkit-box-shadow:0 2px 0 rgba(0,0,0,.12);-moz-box-shadow:0 2px 0 rgba(0,0,0,.12);box-shadow:0 2px 0 rgba(0,0,0,.12);position:relative;z-index:2;min-height:44px}.im_history_panel{padding:10px 4px 0}.im_history_panel_title h4{font-size:17px;line-height:20px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin:8px 0 6px}.im_history_panel_title h4 small{color:#999;font-size:13px;margin-left:5px}.im_history_panel_edit_link,.im_history_panel_info_link,.im_history_panel_media_dropdown .dropdown-toggle,.im_history_panel_return_link{font-size:13px;font-weight:400;padding-top:5px;line-height:1}.im_history_panel_media_dropdown{padding-top:2px}.im_history_panel_edit_link,.im_history_panel_media_dropdown,.im_history_panel_return_link{font-size:13px;margin-right:20px}.im_history_panel_return_count{margin-left:5px}.icon-caret{width:8px;height:4px;display:inline-block;vertical-align:text-top;margin-top:7px;margin-left:6px;background:url(../img/icons/IconsetW.png) -17px -444px no-repeat;background-size:42px 680px}.is_1x .icon-caret{background-image:url(../img/icons/IconsetW_1x.png)}.im_history_panel_media_dropdown .dropdown-menu{border-radius:2px;right:auto;left:-15px;margin-top:11px;padding:0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.175);box-shadow:0 1px 3px rgba(0,0,0,.175)}.im_history_wrap{overflow:hidden}.im_history_scrollable_wrap{outline:0!important;-webkit-user-select:text}.im_history_to_bottom .im_history_scrollable{position:absolute;bottom:0;width:100%}.im_history_appending{-webkit-transition:all .2s;-moz-transition:all .2s;-ms-transition:all .2s;-o-transition:all .2s;transition:all .2s}.im_history{padding:20px 0 0;position:relative}.im_history_typing_wrap{margin-top:13px;height:18px;line-height:18px;width:100%;margin-bottom:13px;overflow:hidden;-webkit-user-select:none}.im_history_typing{font-size:11px;color:#999;max-width:526px;margin:0 auto;padding:0 77px}.im_message_unread_split{background:#f4f4f4;color:#777;text-align:center;padding:4px 10px;margin:10px 0}.im_message_author{color:#3a6d99;font-weight:700}.non_osx .im_message_author{font-size:12px}.im_message_grouped .im_message_author,.im_message_grouped .im_message_from_photo{display:none}.im_message_grouped .im_message_body{margin-left:46px}.im_message_grouped .im_content_message_select_area{height:34px}.im_message_grouped .icon-select-tick{margin-top:4px}.im_message_grouped .icon-message-status{display:none;margin-top:5px;margin-left:24px}.im_message_contact_photo,.im_message_from_photo{width:34px;height:34px;border-radius:2px;overflow:hidden}a.im_message_contact_photo,a.im_message_from_photo{margin:1px 12px 0 0}.im_message_contact_name{color:#3C6E97;font-weight:700}.non_osx .im_message_contact_name{font-size:12px}a.im_message_photo_thumb,a.im_message_video_thumb{display:block;overflow:hidden;border-radius:2px}img.im_message_photo_thumb,img.im_message_video_thumb{overflow:hidden;border-radius:2px}.im_message_video,a.im_message_photo_thumb{margin-top:5px}a.im_message_video_thumb{float:left;margin-right:15px;position:relative}img.im_message_video_thumb{-webkit-filter:blur(2px);-moz-filter:blur(2px);-o-filter:blur(2px);-ms-filter:blur(2px);filter:blur(2px);filter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='2')}div.im_message_video_thumb{position:relative}.im_message_video_duration{background:rgba(0,0,0,.4);color:#FFF;position:absolute;bottom:4px;right:4px;padding:2px 6px;font-size:11px;line-height:15px;border-radius:2px;overflow:hidden;z-index:1}.icon-videoplay{position:absolute;display:inline-block;top:50%;left:50%;margin-left:-21px;margin-top:-21px;width:42px;height:42px;background:url(../img/icons/IconsetW.png) 0 -590px no-repeat;background-size:42px 680px;z-index:1}.is_1x .icon-videoplay{background-image:url(../img/icons/IconsetW_1x.png)}.im_message_geopoint{border-radius:2px;margin-top:5px;overflow:hidden;display:block;position:relative;width:200px;height:100px}.icon-geo-point{position:absolute;display:inline-block;top:50%;left:50%;margin-left:-8px;margin-top:-10px;width:15px;height:19px;background:url(../img/icons/IconsetW.png) -14px -389px no-repeat;background-size:42px 680px}.is_1x .icon-geo-point{background-image:url(../img/icons/IconsetW_1x.png)}.im_message_iframe_video{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-top:5px}.im_message_iframe_video iframe{position:absolute;top:0;left:0;width:100%;height:100%}.im_message_audio,.im_message_document,.im_message_upload_file{margin-top:3px;border-radius:3px;display:inline-block;width:340px}.icon-document,.icon-photo,.icon-video{display:block;float:left;width:38px;height:38px;vertical-align:text-top;background:#F2F2F2 url(../img/icons/IconsetW.png) -2px -229px no-repeat;background-size:42px 680px;border-radius:3px;margin-right:10px}.is_1x .icon-document,.is_1x .icon-photo,.is_1x .icon-video{background-image:url(../img/icons/IconsetW_1x.png)}.im_history_selectable .im_message_outer_wrap:hover .icon-document,.im_history_selectable .im_message_outer_wrap:hover .icon-photo,.im_history_selectable .im_message_outer_wrap:hover .icon-video,.im_message_selected .icon-document,.im_message_selected .icon-photo,.im_message_selected .icon-video{background-color:#dae6f0;background-position:-2px -542px}.im_message_document_link_disabled{cursor:default;pointer-events:none}.im_message_document_info{float:left}.im_message_document_thumb_wrap{border-radius:2px;overflow:hidden;background:#f2f2f2;width:100px;min-height:38px;max-height:100px;margin-right:10px;text-align:center;float:left;line-height:0}img.im_message_document_thumb{max-width:100px;max-height:100px;vertical-align:middle}.im_message_document_name_wrap{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:290px;padding:0 0 1px}.im_message_document_name{color:#222;display:inline-block;font-weight:700;max-width:200px;overflow:hidden;vertical-align:text-top;white-space:nowrap;text-overflow:ellipsis}.im_message_document_size{color:#999;padding-left:2px}.im_message_document_actions a{margin-right:10px}.icon-audio{display:block;float:left;width:38px;height:38px;vertical-align:text-top;background:#F2F2F2 url(../img/icons/IconsetW.png) -2px -277px no-repeat;background-size:42px 680px;border-radius:3px;margin-right:10px}.is_1x .icon-audio{background-image:url(../img/icons/IconsetW_1x.png)}.im_message_audio_info{float:left;width:292px}.im_message_audio_name_wrap{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:290px;padding:0 0 1px}.im_message_audio_name{color:#222;display:inline-block;font-weight:700;max-width:200px;overflow:hidden;vertical-align:text-top;white-space:nowrap;text-overflow:ellipsis}.im_message_audio_duration,.im_message_audio_size{color:#999;padding-left:2px}.im_message_audio_info audio{height:38px;line-height:38px}.im_message_download_progress_wrap,.im_message_upload_progress_wrap{margin-top:5px;width:290px}.im_message_document_thumbed .im_message_audio_name_wrap,.im_message_document_thumbed .im_message_document_name_wrap,.im_message_document_thumbed .im_message_download_progress_wrap,.im_message_document_thumbed .im_message_upload_progress_wrap{width:230px}.im_message_document_thumbed .im_message_document_name{max-width:150px}.im_message_video .im_message_document_name_wrap,.im_message_video .im_message_download_progress_wrap{width:150px}.im_message_video .im_message_document_name_wrap{margin-top:5px}.tg_down_progress,.tg_up_progress{height:5px;margin:0;padding:0;background:#F2F2F2;border:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.tg_down_progress .progress-bar,.tg_up_progress .progress-bar{height:5px;line-height:5px;background:#6B9ABD;border-radius:0;overflow:hidden;-webkit-box-shadow:none;box-shadow:none}.im_service_message_wrap{text-align:center}.im_service_message{display:inline-block;min-width:10px;padding:4px 7px;line-height:1.4;color:#999;text-align:center;border-radius:10px;margin:5px 0}.im_service_message_photo_thumb{display:block;margin:0 auto}.im_content_message_wrap{margin:8px 0 8px 16px}.icon-message-status{background:#43A4DB;border:0;display:block;width:10px;height:10px;border-radius:7px;overflow:hidden;position:absolute;margin-left:-26px;margin-top:13px;opacity:0}.icon-message-status-unread{opacity:1}.icon-message-status-pending{opacity:.5}.icon-message-status-error{background:#da564d;opacity:.85}.icon-message-status-error:hover{opacity:1}.icon-message-status-tick{display:none;width:16px;height:10px;background:url(../img/icons/Checks2_2x.png) 0 0 no-repeat;background-size:16px 10px;top:2px;position:relative}.icon-message-status-tick.message-status-unread-tick{background:url(../img/icons/Checks1_2x.png) 0 0 no-repeat;background-size:16px 10px}.im_message_date{color:#adadad;font-size:.85em;padding-bottom:20px}div.im_message_author,div.im_message_body{display:block;overflow:hidden}div.im_message_fwd_header{color:gray}.im_message_text{word-wrap:break-word}span.emoji{-moz-box-orient:vertical;display:inline-block;vertical-align:baseline;*vertical-align:auto;*zoom:1;*display:inline;height:18px;width:18px;background-repeat:no-repeat;text-indent:-9999px}.emoji-spritesheet-0{background-size:486px 126px;background-image:url(../img/emojisprite_0.png)}.emoji-spritesheet-1{background-size:522px 72px;background-image:url(../img/emojisprite_1.png)}.emoji-spritesheet-2{background-size:594px 126px;background-image:url(../img/emojisprite_2.png)}.emoji-spritesheet-3{background-size:612px 54px;background-image:url(../img/emojisprite_3.png)}.emoji-spritesheet-4{background-size:612px 108px;background-image:url(../img/emojisprite_4.png)}.im_history_empty,.im_history_not_selected{text-align:center;color:#999;font-size:1.5em;padding:0 50px}.im_history_to_bottom .im_history_empty,.im_history_to_bottom .im_history_not_selected{display:none}.im_send_panel_wrap{max-width:526px;margin:0 auto;padding:10px 15px 22px}.im_send_form_wrap{position:relative}.im_send_form{max-width:389px;margin:0 auto;position:absolute;bottom:0;left:62px;right:62px}.im_submit{padding:5px 12px;font-size:13px;line-height:17px;min-width:60px}.im_send_dropbox_wrap{background:#FFF;display:none;padding:15px 10px;margin:1px;border-radius:4px;overflow:hidden;text-align:center;color:#999;position:absolute}textarea.im_message_field{font-size:12px;margin-bottom:10px;padding:6px;min-height:50px;height:50px;resize:none}.im_attach{cursor:pointer;display:block;overflow:hidden;position:relative;padding:0 2px;width:23px;height:24px;margin-top:4px;margin-left:20px}.icon-paperclip{display:inline-block;width:19px;height:23px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -12px -68px no-repeat;background-size:42px 680px;opacity:.8}.is_1x .icon-paperclip{background-image:url(../img/icons/IconsetW_1x.png)}.im_attach:hover .icon-paperclip{opacity:1}.im_attach:active .icon-paperclip{background-position:-12px -100px;opacity:1}.im_emoji_btn{cursor:pointer;padding:0;width:23px;height:23px;margin-top:4px}.icon-emoji{display:inline-block;width:23px;height:23px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -10px -4px no-repeat;background-size:42px 680px;opacity:.8}.is_1x .icon-emoji{background-image:url(../img/icons/IconsetW_1x.png)}.im_emoji_btn:hover .icon-emoji{opacity:1}.im_emoji_btn.on .icon-emoji,.im_emoji_btn:active .icon-emoji{background-position:-10px -36px;opacity:1}.im_attach_input,.im_media_attach_input{cursor:pointer;font-size:72px!important;opacity:.01;position:absolute;z-index:100;margin:0;padding:0;right:0}.im_media_attach{cursor:pointer;display:block;overflow:hidden;position:relative;padding:0;width:24px;height:22px;margin-top:5px;margin-left:20px}.icon-camera{display:inline-block;width:25px;height:21px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -9px -132px no-repeat;background-size:42px 680px;opacity:.8}.is_1x .icon-camera{background-image:url(../img/icons/IconsetW_1x.png)}.im_media_attach:hover .icon-camera{opacity:1}.im_media_attach:active .icon-camera{background-position:-9px -162px;opacity:1}.im_panel_own_photo,.im_panel_peer_photo{width:50px;height:50px;border-radius:3px;overflow:hidden}div.im_panel_peer_photo{cursor:pointer;margin-left:12px;height:55px}div.im_panel_own_photo{margin-right:12px}.im_panel_peer_online{background:#6DBF69;border:1px solid #FFF;display:block;width:11px;height:11px;border-radius:6px;overflow:hidden;position:absolute;margin-top:-7px;margin-left:43px}.status_online{background:#6DBF69;border:1px solid #FFF;display:block;width:11px;height:11px;border-radius:6px;overflow:hidden;position:absolute;margin-top:-7px;margin-left:33px}.media_modal_wrap .modal-body{padding:19px 18px 17px}a.img_fullsize{display:block;text-align:center}img.img_fullsize{margin:0 auto}.media_modal_info{color:#777;margin:20px 0 0}.media_modal_author{font-weight:700}.non_osx .media_modal_author{font-size:12px}.user_modal_window .modal-dialog{max-width:506px}.user_modal_wrap .modal-body{padding:23px 25px 30px}.settings_profile_photo_wrap{width:120px;margin-right:22px;margin-bottom:15px}.settings_profile_photo{position:relative;overflow:hidden}.settings_profile_photo_change_wrap{background:rgba(0,0,0,.6);padding:2px 5px;position:absolute;opacity:0;bottom:-30px;-webkit-transition:all ease-in-out .2s;transition:all ease-in-out .2s;width:120px}.settings_profile_photo:hover .settings_profile_photo_change_wrap{bottom:0;opacity:1}.settings_profile_photo_delete_link,.settings_profile_photo_loading,.settings_profile_photo_update_link{display:block;color:rgba(255,255,255,.8);text-align:center;padding:2px 0}.settings_profile_photo_delete_link:hover,.settings_profile_photo_update_link:hover{color:#FFF;text-decoration:none}.settings_profile_photo_update_link{position:relative;overflow:hidden}.user_modal_image_wrap{width:120px;margin-right:22px}.user_modal_image{width:120px;height:120px}.user_modal_header{font-weight:700;margin:0 0 5px}.user_modal_status{color:#999}.user_modal_actions_wrap{margin-top:8px}.user_modal_send_btn{border:0;background:#4E9CD8;font-size:12px;padding-left:16px;padding-right:16px;float:left}.user_modal_send_btn:hover{background:#539BD1}.user_modal_other_btn{margin-left:10px;float:left}.user_modal_other_btn .dropdown-toggle{border:0;font-size:12px}.user_modal_settings_wrap{margin-top:25px}.user_modal_notifications{font-weight:700}.user_modal_clear{margin-top:20px}.chat_modal_window .modal-dialog{max-width:506px}.chat_modal_wrap .modal-body{padding:23px 25px 15px}.chat_modal_photo_wrap{width:120px;margin-right:22px}.chat_modal_photo{position:relative;overflow:hidden}.chat_modal_photo_change_wrap{background:rgba(0,0,0,.6);padding:2px 5px;position:absolute;opacity:0;bottom:-30px;-webkit-transition:all ease-in-out .2s;transition:all ease-in-out .2s;width:120px}.chat_modal_photo:hover .chat_modal_photo_change_wrap{bottom:0;opacity:1}.chat_modal_photo_delete_link,.chat_modal_photo_loading,.chat_modal_photo_update_link{display:block;color:rgba(255,255,255,.8);text-align:center;padding:2px 0}.chat_modal_photo_delete_link:hover,.chat_modal_photo_update_link:hover{color:#FFF;text-decoration:none}.chat_modal_photo_update_link{position:relative;overflow:hidden}.chat_modal_header{margin:0 0 5px}.chat_modal_members_count{color:#999}.chat_modal_actions_wrap{margin-top:8px}.chat_modal_send_btn{border:0;background:#4E9CD8;font-size:12px;padding-left:16px;padding-right:16px;float:left}.chat_modal_send_btn:hover{background:#539BD1}.chat_modal_delete_btn{border:0;font-size:12px;padding-left:16px;padding-right:16px;float:left}.chat_modal_other_btn{margin-left:10px;float:left}.chat_modal_other_btn .dropdown-toggle{border:0;font-size:12px}.chat_modal_settings_wrap{margin-top:10px}.chat_modal_notifications{margin-top:25px;font-weight:700}.chat_modal_members_header{margin:20px 0 6px}.chat_modal_participant_wrap{padding:8px 7px;border-top:1px solid #F0F0F0}.chat_modal_participant_kick{padding:11px 0;display:block}.chat_modal_participant_name{display:block;color:#3C6E97;font-weight:700;margin:1px 0 2px}.non_osx .chat_modal_participant_name{font-size:12px}.chat_modal_participant_status{color:#999}.chat_modal_participant_photo{width:40px;height:40px;margin-right:10px;overflow:hidden}.chat_modal_members_forbidden{color:#999}.emoji-wysiwyg-editor:empty:before{content:attr(placeholder);color:#9aa2ab}.emoji-wysiwyg-editor:active:before,.emoji-wysiwyg-editor:focus:before{content:none}.emoji-wysiwyg-editor{font-size:12px;margin-bottom:10px;padding:6px;min-height:50px;height:auto;max-height:300px;overflow:auto;line-height:17px;border:1px solid #d9dbde;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-webkit-user-select:text}.emoji-wysiwyg-editor img{width:20px;height:20px;vertical-align:middle;margin:-3px 0 0 0}.emoji-menu{position:absolute;z-index:999;width:220px;margin-left:-107px;margin-top:-252px;border:1px #dfdfdf solid;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;overflow:hidden;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1)}.emoji-items-wrap1{background:#FFF;padding:5px 2px 5px 5px}.emoji-items-wrap1 .emoji-menu-tabs{width:100%;margin-bottom:8px;margin-top:3px}.emoji-items-wrap1 .emoji-menu-tabs td{text-align:center;color:#fff;line-height:0}.emoji-menu-tabs .emoji-menu-tab{display:inline-block;width:24px;height:29px;background:url(../img/icons/IconsetSmiles.png) no-repeat;background-size:42px 350px}.is_1x .emoji-menu-tabs .emoji-menu-tab{background-image:url(../img/icons/IconsetSmiles_1x.png)}.emoji-menu-tabs .icon-smile{background-position:-9px -34px}.emoji-menu-tabs .icon-smile-selected{background-position:-9px -5px}.emoji-menu-tabs .icon-flower{background-position:-9px -145px}.emoji-menu-tabs .icon-flower-selected{background-position:-9px -118px}.emoji-menu-tabs .icon-bell{background-position:-9px -89px}.emoji-menu-tabs .icon-bell-selected{background-position:-9px -61px}.emoji-menu-tabs .icon-car{background-position:-9px -196px}.emoji-menu-tabs .icon-car-selected{background-position:-9px -170px}.emoji-menu-tabs .icon-grid{background-position:-9px -248px}.emoji-menu-tabs .icon-grid-selected{background-position:-9px -222px}.emoji-menu-tabs .icon-bell,.emoji-menu-tabs .icon-car,.emoji-menu-tabs .icon-flower,.emoji-menu-tabs .icon-grid,.emoji-menu-tabs .icon-smile{opacity:.7}.emoji-menu-tabs .icon-bell:hover,.emoji-menu-tabs .icon-car:hover,.emoji-menu-tabs .icon-flower:hover,.emoji-menu-tabs .icon-grid:hover,.emoji-menu-tabs .icon-smile:hover{opacity:1}.emoji-menu .emoji-items-wrap{position:relative;height:174px}.emoji-menu .emoji-items{padding-right:8px;outline:0!important}.emoji-menu img{width:20px;height:20px;vertical-align:middle;border:0 none}.emoji-menu .emoji-items a{margin:-1px 0 0 -1px;padding:5px;display:block;float:left;border-radius:2px}.emoji-menu .emoji-items a:hover{background-color:#edf2f5}.emoji-menu:after{content:' ';display:block;clear:left}.emoji-menu a .label{display:none}.emoji-menu-tail{display:none;background:url(../img/icons/IconsetW.png) -14px -268px no-repeat;background-size:42px 680px;width:14px;height:7px;margin:0 83px}.is_1x .emoji-menu-tail{background-image:url(../img/icons/IconsetW_1x.png)}.emoji-menu .nano>.pane{background:rgba(255,255,255,0);right:-2px}.emoji-menu .nano>.pane>.slider{background:#d1d1d1;margin:0 3px 0 4px}.error_modal_window .modal-dialog{max-width:350px}.error_modal_description{text-align:center;padding:20px;font-size:14px;line-height:160%}.photo_modal_error{color:#999;position:absolute;width:100%;top:50%;margin-top:-20px;padding:0 20px;text-align:center;font-size:1.4em;line-height:160%}.video_full_error{border-radius:10px;overflow:hidden;background:rgba(0,0,0,.6);color:#FFF;position:absolute;top:50%;margin:-40px 10px 0;padding:10px;text-align:center;font-size:1.4em;line-height:160%}.settings_modal_window .modal-dialog{max-width:502px}.settings_profile_image_wrap{float:left;width:120px;margin-right:22px}.settings_profile_first_name,.settings_profile_last_name{width:180px;float:left}.settings_profile_first_name label,.settings_profile_last_name label{margin-bottom:3px}.settings_profile_first_name{margin-right:22px;margin-bottom:10px}.settings_profile_last_name{margin-right:10px;margin-bottom:15px}.settings_profile_save{padding-top:21px;float:left}.settings_profile_save_btn{width:50px}.settings_profile_edit_form{margin-bottom:0}.settings_profile_edit_form input{font-size:12px;line-height:normal;background:#F2F2F2;border:1px solid #F2F2F2;border-radius:0;padding:6px;margin:0}.settings_profile_edit_form input:active,.settings_profile_edit_form input:focus{background-color:#FFF}.settings_send_choose_form input{margin-top:2px}.settings_send_choose_form{margin-bottom:20px}.settings_user_phone,.settings_version{color:#999}.contacts_modal_window .modal-dialog{max-width:506px}.contacts_modal_wrap .modal-body{padding:23px 25px 15px}.contacts_modal_search{padding:0 0 14px;position:relative}.contacts_modal_search_field{font-size:12px;line-height:normal;background:#F2F2F2 url(../img/icons/IconsetW.png) -6px -205px no-repeat;background-size:42px 680px;border:1px solid #F2F2F2;border-radius:3px;padding:6px 20px 6px 30px;margin:0}.is_1x .contacts_modal_search_field{background-image:url(../img/icons/IconsetW_1x.png)}.contacts_modal_search_field:active,.contacts_modal_search_field:focus{background-color:#FFF}.contacts_modal_search_clear{position:absolute;right:9px;margin-top:-23px;color:#999;width:13px;height:13px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -15px -192px no-repeat;background-size:42px 680px;opacity:.6}.is_1x .contacts_modal_search_clear{background-image:url(../img/icons/IconsetW_1x.png)}.contacts_modal_search_clear:hover{opacity:1}.contacts_modal_col{margin-right:-17px}.contacts_scrollable_wrap{padding:0 17px 0 0;outline:0!important}.contacts_modal_members_list a.contacts_modal_contact{clear:both;overflow:hidden;color:#000;padding:8px 9px;border-radius:0}.contacts_modal_members_list a.contacts_modal_contact:hover{border-radius:2px;background:#f2f6fa}.contacts_modal_members_list .active a.contacts_modal_contact{border-radius:2px;background-color:#6490b1}.contacts_modal_members_list .active a.contacts_modal_contact:hover{background-color:#6490b1}.contacts_modal_contact_name{display:block;color:#3C6E97;font-weight:700;margin:1px 0 2px}.non_osx .contacts_modal_contact_name{font-size:12px}.contacts_modal_contact_photo{width:40px;height:40px;margin-right:10px;overflow:hidden}.contacts_modal_contact_status{color:#999}a.contacts_modal_contact:hover .contacts_modal_contact_status{color:#91a6ba}.contacts_modal_members_list .active .contacts_modal_contact_name,.contacts_modal_members_list .active a.contacts_modal_contact .contacts_modal_contact_status{color:#FFF}.icon-contact-tick{position:absolute;right:10px;top:22px;width:17px;height:15px;background:url(../img/icons/IconsetW.png) -13px -366px no-repeat;background-size:42px 680px;opacity:.5}.is_1x .icon-contact-tick{background-image:url(../img/icons/IconsetW_1x.png)}.contacts_modal_members_list a.contacts_modal_contact:hover .icon-contact-tick{background-position:-13px -366px;opacity:1}.contacts_modal_members_list .active .icon-contact-tick{background-position:-13px -458px!important;opacity:1}.contacts_modal_members_list .disabled{pointer-events:none}.contacts_modal_members_list .disabled .icon-contact-tick{display:none}.contacts_modal_actions,.contacts_modal_panel{padding-top:10px}.im_edit_panel_wrap{padding:10px 0 34px;margin:0 24px 0 12px}.im_edit_panel_border{display:block;margin:0 0 34px 3px;border-bottom:1px solid #EEE}.im_panel_to_top .im_edit_panel_wrap{background:#FFF;position:absolute;width:100%}.im_edit_cancel_link,.im_edit_flush_link{display:block;padding:6px 17px;border-radius:2px;overflow:hidden;margin:6px}.im_edit_cancel_link{float:left}.im_edit_flush_link{float:right}.im_edit_cancel_link:hover,.im_edit_flush_link:hover{background:#f2f6fa;text-decoration:none}.im_edit_selected_actions{text-align:center}.im_edit_delete_btn,.im_edit_forward_btn{border-radius:2px;padding:5px 17px;font-weight:400;font-size:12px;line-height:18px;margin:6px}.im_edit_panel_title{text-align:center;margin:0;font-size:14px;line-height:34px}.icon-delete{display:inline-block;width:12px;height:15px;background:url(../img/icons/IconsetW.png) -15px -319px no-repeat;background-size:42px 680px}.is_1x .icon-delete{background-image:url(../img/icons/IconsetW_1x.png)}.im_message_selected{background:#f2f6fa}.im_history_selectable .im_message_outer_wrap{cursor:pointer}.im_history_selectable .im_message_outer_wrap:hover{background:#f2f6fa}.im_history_selectable .im_message_outer_wrap:hover .im_message_date,.im_history_selectable .im_message_outer_wrap:hover .im_message_fwd_header,.im_message_selected .im_message_date,.im_message_selected .im_message_fwd_header{color:#91a6ba}.im_message_wrap{max-width:526px;padding:0 15px;margin:0 auto;position:relative}.im_content_message_select_area{display:none;cursor:pointer;position:absolute;width:112px;height:52px;margin:-8px 0 0 -112px;-webkit-user-select:text}@media (min-width:1024px){.im_content_message_select_area{display:block}}.icon-select-tick{display:none;width:26px;height:26px;margin:13px 0 0 40px;background:url(../img/icons/IconsetW.png) -9px -516px no-repeat;background-size:42px 680px}.is_1x .icon-select-tick{background-image:url(../img/icons/IconsetW_1x.png)}.im_content_message_select_area:hover .icon-select-tick,.im_history_selectable .icon-select-tick{display:inline-block}.im_content_message_select_area:hover .icon-select-tick,.im_history_selectable .im_message_outer_wrap:hover .icon-select-tick,.im_message_selected .icon-select-tick{background-position:-9px -481px;opacity:.5}.im_message_selected .icon-select-tick{opacity:1!important}@media (min-width:480px){.tg_page_head .navbar-quick-nav{display:none}}@media (max-width:480px){.tg_page_head .navbar>.container .navbar-brand{padding-left:9px}.im_history_panel_info_link{display:none}.im_history_panel_edit_link{margin-right:0}.im_dialogs_panel_dropdown .dropdown-menu{right:0;left:auto}}@media (min-height:768px){.user_modal_window .modal-dialog{margin-top:150px}}@media (max-width:480px){.login_form_wrap{border-radius:0;max-width:auto;box-shadow:none;-webkit-box-shadow:none;margin:30px auto 20px}.im_panel_own_photo,.im_panel_peer_photo{display:none}.im_history_panel_wrap{margin:0 15px}.im_send_panel_wrap{padding:10px 15px}.icon-select-tick{margin:10px 0 0 -24px}.im_content_message_wrap{margin-left:0}.im_history_typing{padding:0 15px 0 60px}.im_send_form{left:0;right:0;max-width:none}.im_edit_cancel_link,.im_edit_delete_btn,.im_edit_flush_link,.im_edit_forward_btn{padding-left:5px;padding-right:5px;margin:6px 4px}.im_edit_panel_border{margin:0 18px 22px 3px}.im_edit_panel_wrap{margin:0 5px;padding-bottom:34px}}@media (max-height:480px){.im_page_footer{display:none}.im_send_panel_wrap{padding-bottom:10px}.im_edit_panel_wrap{padding-bottom:18px}.emoji-wysiwyg-editor{min-height:34px;max-height:150px}}@media (max-width:640px){.im_dialog_peer{white-space:normal;height:2.84em}.im_dialog_message{display:none}}@media (max-width:900px){.icon-message-status{z-index:10;margin-left:-5px;border-radius:0;height:34px;width:2px;margin-top:1px;border:0}}@media (max-width:480px){.im_dialogs_col_wrap,.im_page_peer_not_selected .im_history_col_wrap{display:none}.im_page_peer_not_selected .im_dialogs_col_wrap{display:block;border-right:0}.im_page_peer_not_selected .im_dialogs_col{margin-right:0}.im_page_peer_not_selected .im_dialogs_col_wrap .pane{width:12px;right:0}.im_page_peer_not_selected .im_dialogs_col_wrap .pane>.slider{border-radius:3px;margin:0 3px}.im_dialogs_scrollable_wrap{padding:0 12px}.im_dialogs_col_wrap,.im_history_col_wrap{float:none;width:auto;max-width:auto;min-width:auto}.im_page_peer_not_selected .im_dialog_peer{white-space:nowrap;height:auto}.im_page_peer_not_selected .im_dialog_message{display:block}}.peer_select_window .modal-dialog{max-width:506px}.peer_select_modal_wrap .modal-body{padding:10px 10px 15px}.user_color_1,.user_color_1:hover{color:#b3577a}.user_color_2,.user_color_2:hover{color:#539e4f}.user_color_3,.user_color_3:hover{color:#ae9661}.user_color_4,.user_color_4:hover{color:#4979a3}.user_color_5,.user_color_5:hover{color:#8365ab}.user_color_6,.user_color_6:hover{color:#b7635d}.user_color_7,.user_color_7:hover{color:#5397b4}.user_color_8,.user_color_8:hover{color:#c07844}.im_dialogs_contacts_wrap h5{color:#999;font-size:13px;margin-left:8px}.tooltip-inner{background:rgba(0,0,0,.8)}.tooltip-arrow{opacity:.8}.im_dialogs_panel_dropdown{margin-left:8px}.im_dialogs_panel_dropdown .dropdown-toggle{background:#F2F2F2;display:block;border-radius:2px;overflow:hidden;padding:11px 12px;width:38px;height:34px}.im_dialogs_panel_dropdown .dropdown-toggle .icon-bar{background:#b3b3b3;display:block;height:2px;margin-bottom:3px}.im_dialogs_panel_dropdown .dropdown-toggle .icon-bar:last-child{margin-bottom:0}.im_dialogs_panel_dropdown.open .dropdown-toggle{background:#6690b0}.im_dialogs_panel_dropdown.open .dropdown-toggle .icon-bar{background:#fff}.import_contact_modal_window .modal-dialog{max-width:380px}.import_modal_field_wrap{margin-bottom:10px}.modal-content-animated{-webkit-transition:margin-top linear .2s;transition:margin-top linear .2s} \ No newline at end of file diff --git a/index.html b/index.html index 65a5516e..35100073 100644 --- a/index.html +++ b/index.html @@ -8,7 +8,11 @@ scheduleUpdate = function (delay) { clearTimeout(updateTimeout); updateTimeout = setTimeout(function () { - appCache.update(); + try { + appCache.update(); + } catch (ex) { + console.log('appCache.update: ' + ex); + } }, delay || 300000); }, attach = function () { diff --git a/js/app.js b/js/app.js index 5f10add6..caf61985 100644 --- a/js/app.js +++ b/js/app.js @@ -11,21 +11,21 @@ var n,r,i=[];for(e>t.length?e=t.length:e<-t.length&&(e=-t.length),e>0?(n=0,r=e): !function(e,r){"use strict";function t(){function e(e,t){return r.extend(new(r.extend(function(){},{prototype:e})),t)}function t(e,r){var t=r.caseInsensitiveMatch,n={originalPath:e,regexp:e},a=n.keys=[];return e=e.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?|\*])?/g,function(e,r,t,n){var o="?"===n?n:null,i="*"===n?n:null;return a.push({name:t,optional:!!o}),r=r||"",""+(o?"":r)+"(?:"+(o?r:"")+(i&&"(.+?)"||"([^/]+)")+(o||"")+")"+(o||"")}).replace(/([\/$\*])/g,"\\$1"),n.regexp=new RegExp("^"+e+"$",t?"i":""),n}var n={};this.when=function(e,a){if(n[e]=r.extend({reloadOnSearch:!0},a,e&&t(e,a)),e){var o="/"==e[e.length-1]?e.substr(0,e.length-1):e+"/";n[o]=r.extend({redirectTo:e},t(o,a))}return this},this.otherwise=function(e){return this.when(null,e),this},this.$get=["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce",function(t,a,o,i,c,u,l,s){function p(e,r){var t=r.keys,n={};if(!r.regexp)return null;var a=r.regexp.exec(e);if(!a)return null;for(var o=1,i=a.length;i>o;++o){var c=t[o-1],u="string"==typeof a[o]?decodeURIComponent(a[o]):a[o];c&&u&&(n[c.name]=u)}return n}function $(){var e=h(),n=m.current;e&&n&&e.$$route===n.$$route&&r.equals(e.pathParams,n.pathParams)&&!e.reloadOnSearch&&!d?(n.params=e.params,r.copy(n.params,o),t.$broadcast("$routeUpdate",n)):(e||n)&&(d=!1,t.$broadcast("$routeChangeStart",e,n),m.current=e,e&&e.redirectTo&&(r.isString(e.redirectTo)?a.path(f(e.redirectTo,e.params)).search(e.params).replace():a.url(e.redirectTo(e.pathParams,a.path(),a.search())).replace()),i.when(e).then(function(){if(e){var t,n,a=r.extend({},e.resolve);return r.forEach(a,function(e,t){a[t]=r.isString(e)?c.get(e):c.invoke(e)}),r.isDefined(t=e.template)?r.isFunction(t)&&(t=t(e.params)):r.isDefined(n=e.templateUrl)&&(r.isFunction(n)&&(n=n(e.params)),n=s.getTrustedResourceUrl(n),r.isDefined(n)&&(e.loadedTemplateUrl=n,t=u.get(n,{cache:l}).then(function(e){return e.data}))),r.isDefined(t)&&(a.$template=t),i.all(a)}}).then(function(a){e==m.current&&(e&&(e.locals=a,r.copy(e.params,o)),t.$broadcast("$routeChangeSuccess",e,n))},function(r){e==m.current&&t.$broadcast("$routeChangeError",e,n,r)}))}function h(){var t,o;return r.forEach(n,function(n){!o&&(t=p(a.path(),n))&&(o=e(n,{params:r.extend({},a.search(),t),pathParams:t}),o.$$route=n)}),o||n[null]&&e(n[null],{params:{},pathParams:{}})}function f(e,t){var n=[];return r.forEach((e||"").split(":"),function(e,r){if(0===r)n.push(e);else{var a=e.match(/(\w+)(.*)/),o=a[1];n.push(t[o]),n.push(a[2]||""),delete t[o]}}),n.join("")}var d=!1,m={routes:n,reload:function(){d=!0,t.$evalAsync($)}};return t.$on("$locationChangeSuccess",$),m}]}function n(){this.$get=function(){return{}}}function a(e,t,n){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,o,i,c,u){function l(){p&&(p.$destroy(),p=null),$&&(n.leave($),$=null)}function s(){var i=e.current&&e.current.locals,c=i&&i.$template;if(r.isDefined(c)){var s=a.$new(),d=e.current,m=u(s,function(e){n.enter(e,null,$||o,function(){!r.isDefined(h)||h&&!a.$eval(h)||t()}),l()});$=m,p=d.scope=s,p.$emit("$viewContentLoaded"),p.$eval(f)}else l()}var p,$,h=i.autoscroll,f=i.onload||"";a.$on("$routeChangeSuccess",s),s()}}}function o(e,r,t){return{restrict:"ECA",priority:-400,link:function(n,a){var o=t.current,i=o.locals;a.html(i.$template);var c=e(a.contents());if(o.controller){i.$scope=n;var u=r(o.controller,i);o.controllerAs&&(n[o.controllerAs]=u),a.data("$ngControllerController",u),a.children().data("$ngControllerController",u)}c(n)}}}var i=r.module("ngRoute",["ng"]).provider("$route",t);i.provider("$routeParams",n),i.directive("ngView",a),i.directive("ngView",o),a.$inject=["$route","$anchorScroll","$animate"],o.$inject=["$compile","$controller","$route"]}(window,window.angular); !function(n,t,a){"use strict";t.module("ngAnimate",["ng"]).factory("$$animateReflow",["$window","$timeout",function(n,t){var a=n.requestAnimationFrame||n.webkitRequestAnimationFrame||function(n){return t(n,10,!1)},e=n.cancelAnimationFrame||n.webkitCancelAnimationFrame||function(n){return t.cancel(n)};return function(n){var t=a(n);return function(){e(t)}}}]).config(["$provide","$animateProvider",function(e,i){function r(n){for(var t=0;t=0||"removeClass"==n&&-1==B.indexOf(j)?(A(),C(),D(),void x()):(a.addClass(m),a.data(c,{running:!0,event:n,className:t,structural:!R,animations:I,done:f}),void d(I,"before",f))}function D(n){var a=r(n);u(a.querySelectorAll("."+m),function(n){n=t.element(n);var a=n.data(c);a&&(h(a.animations),b(n))})}function h(n){var t=!0;u(n,function(n){n.beforeComplete||(n.beforeEnd||s)(t),n.afterComplete||(n.afterEnd||s)(t)})}function b(n){o(n,f)?d.disabled||(d.running=!1,d.structural=!1):(n.removeClass(m),n.removeData(c))}function $(n,t){if(d.disabled)return!0;if(o(n,f))return d.disabled||d.running;do{if(0===t.length)break;var a=o(t,f),e=a?d:t.data(c),i=e&&(!!e.disabled||!!e.running);if(a||i)return i;if(a)return!0}while(t=t.parent());return!0}f.data(c,d),p.$$postDigest(function(){p.$$postDigest(function(){d.running=!1})});var x=i.classNameFilter(),w=x?function(n){return x.test(n)}:function(){return!0};return{enter:function(t,a,e,i){this.enabled(!1,t),n.enter(t,a,e),p.$$postDigest(function(){C("enter","ng-enter",t,a,e,s,i)})},leave:function(t,a){D(t),this.enabled(!1,t),p.$$postDigest(function(){C("leave","ng-leave",t,null,null,function(){n.leave(t)},a)})},move:function(t,a,e,i){D(t),this.enabled(!1,t),n.move(t,a,e),p.$$postDigest(function(){C("move","ng-move",t,a,e,s,i)})},addClass:function(t,a,e){C("addClass",a,t,null,null,function(){n.addClass(t,a)},e)},removeClass:function(t,a,e){C("removeClass",a,t,null,null,function(){n.removeClass(t,a)},e)},enabled:function(n,t){switch(arguments.length){case 2:if(n)b(t);else{var a=t.data(c)||{};a.disabled=!0,t.data(c,a)}break;case 1:d.disabled=!n;break;default:n=!d.disabled}return!!n}}}]),i.register("",["$window","$sniffer","$timeout","$$animateReflow",function(e,i,o,l){function c(n,a){T&&T(),J.push(a);var e=r(n);n=t.element(e),L.push(n);var i=n.data(W),s=i.stagger,f=i.itemIndex*(Math.max(s.animationDelay,s.transitionDelay)||0),c=(i.maxDelay+i.maxDuration)*H;Q=Math.max(Q,(f+c)*K),i.animationCount=U,T=l(function(){u(J,function(n){n()});var n=[],t=U;u(L,function(t){n.push(t)}),o(function(){m(n,t),n=null},Q,!1),J=[],L=[],T=null,z={},Q=0,U++})}function m(n,t){u(n,function(n){var a=n.data(W);a&&a.animationCount==t&&(a.closeAnimationFn||s)()})}function d(n,t){var a=t?z[t]:null;if(!a){var i,r,o,s,l=0,c=0,m=0,d=0;u(n,function(n){if(n.nodeType==f){var t=e.getComputedStyle(n)||{};o=t[N+I],l=Math.max(v(o),l),s=t[N+P],i=t[N+O],c=Math.max(v(i),c),r=t[F+O],d=Math.max(v(r),d);var a=v(t[F+I]);a>0&&(a*=parseInt(t[F+B],10)||1),m=Math.max(a,m)}}),a={total:0,transitionPropertyStyle:s,transitionDurationStyle:o,transitionDelayStyle:i,transitionDelay:c,transitionDuration:l,animationDelayStyle:r,animationDelay:d,animationDuration:m},t&&(z[t]=a)}return a}function v(n){var a=0,e=t.isString(n)?n.split(/\s*,\s*/):[];return u(e,function(n){a=Math.max(parseFloat(n)||0,a)}),a}function p(n){var t=n.parent(),a=t.data(q);return a||(t.data(q,++G),a=G),a+"-"+r(n).className}function g(n,t,a){var e=p(n),i=e+" "+t,r={},o=z[i]?++z[i].total:0;if(o>0){var s=t+"-stagger",l=e+" "+s,f=!z[l];f&&n.addClass(s),r=d(n,l),f&&n.removeClass(s)}a=a||function(n){return n()},n.addClass(t);var c=a(function(){return d(n,i)}),m=Math.max(c.transitionDelay,c.animationDelay),v=Math.max(c.transitionDuration,c.animationDuration);if(0===v)return n.removeClass(t),!1;var g="";return c.transitionDuration>0?y(n):C(n),u(t.split(" "),function(n,t){g+=(t>0?" ":"")+n+"-active"}),n.data(W,{className:t,activeClassName:g,maxDuration:v,maxDelay:m,classes:t+" "+g,timings:c,stagger:r,itemIndex:o}),!0}function y(n){r(n).style[N+P]="none"}function C(n){r(n).style[F]="none 0s"}function D(n){var t=N+P,a=r(n);a.style[t]&&a.style[t].length>0&&(a.style[t]="")}function h(n){var t=F,a=r(n);a.style[t]&&a.style[t].length>0&&(a.style[t]="")}function b(n,t,a){function e(){n.off(v,i),n.removeClass(c),S(n,t);var a=r(n);for(var e in y)a.style.removeProperty(y[e])}function i(n){n.stopPropagation();var t=n.originalEvent||n,e=t.$manualTimeStamp||t.timeStamp||Date.now(),i=parseFloat(t.elapsedTime.toFixed(j));Math.max(e-d,0)>=m&&i>=f&&a()}var o=n.data(W),s=r(n);if(-1==s.className.indexOf(t)||!o)return void a();var u=o.timings,l=o.stagger,f=o.maxDuration,c=o.activeClassName,m=Math.max(u.transitionDelay,u.animationDelay)*K,d=Date.now(),v=E+" "+M,p=o.itemIndex,g="",y=[];if(u.transitionDuration>0){var C=u.transitionPropertyStyle;-1==C.indexOf("all")&&(g+=R+"transition-property: "+C+";",g+=R+"transition-duration: "+u.transitionDurationStyle+";",y.push(R+"transition-property"),y.push(R+"transition-duration"))}if(p>0){if(l.transitionDelay>0&&0===l.transitionDuration){var D=u.transitionDelayStyle;g+=R+"transition-delay: "+$(D,l.transitionDelay,p)+"; ",y.push(R+"transition-delay")}l.animationDelay>0&&0===l.animationDuration&&(g+=R+"animation-delay: "+$(u.animationDelayStyle,l.animationDelay,p)+"; ",y.push(R+"animation-delay"))}if(y.length>0){var h=s.getAttribute("style")||"";s.setAttribute("style",h+" "+g)}return n.on(v,i),n.addClass(c),o.closeAnimationFn=function(){e(),a()},e}function $(n,t,a){var e="";return u(n.split(","),function(n,i){e+=(i>0?",":"")+(a*t+parseInt(n,10))+"s"}),e}function x(n,t,a){return g(n,t,a)?function(a){a&&S(n,t)}:void 0}function w(n,t,a){return n.data(W)?b(n,t,a):(S(n,t),void a())}function A(n,t,a){var e=x(n,t);if(!e)return void a();var i=e;return c(n,function(){D(n),h(n),i=w(n,t,a)}),function(n){(i||s)(n)}}function S(n,t){n.removeClass(t),n.removeData(W)}function k(n,a){var e="";return n=t.isArray(n)?n:n.split(/\s+/),u(n,function(n,t){n&&n.length>0&&(e+=(t>0?" ":"")+n+a)}),e}var N,M,F,E,R="";n.ontransitionend===a&&n.onwebkittransitionend!==a?(R="-webkit-",N="WebkitTransition",M="webkitTransitionEnd transitionend"):(N="transition",M="transitionend"),n.onanimationend===a&&n.onwebkitanimationend!==a?(R="-webkit-",F="WebkitAnimation",E="webkitAnimationEnd animationend"):(F="animation",E="animationend");var T,I="Duration",P="Property",O="Delay",B="IterationCount",q="$$ngAnimateKey",W="$$ngAnimateCSS3Data",j=3,H=1.5,K=1e3,U=0,z={},G=0,J=[],L=[],Q=0;return{allowCancel:function(n,a,e){var i=(n.data(W)||{}).classes;if(!i||["enter","leave","move"].indexOf(a)>=0)return!0;var o=n.parent(),s=t.element(r(n).cloneNode());s.attr("style","position:absolute; top:-9999px; left:-9999px"),s.removeAttr("id"),s.empty(),u(i.split(" "),function(n){s.removeClass(n)});var l="addClass"==a?"-add":"-remove";s.addClass(k(e,l)),o.append(s);var f=d(s);return s.remove(),Math.max(f.transitionDuration,f.animationDuration)>0},enter:function(n,t){return A(n,"ng-enter",t)},leave:function(n,t){return A(n,"ng-leave",t)},move:function(n,t){return A(n,"ng-move",t)},beforeAddClass:function(n,t,a){var e=x(n,k(t,"-add"),function(a){n.addClass(t);var e=a();return n.removeClass(t),e});return e?(c(n,function(){D(n),h(n),a()}),e):void a()},addClass:function(n,t,a){return w(n,k(t,"-add"),a)},beforeRemoveClass:function(n,t,a){var e=x(n,k(t,"-remove"),function(a){var e=n.attr("class");n.removeClass(t);var i=a();return n.attr("class",e),i});return e?(c(n,function(){D(n),h(n),a()}),e):void a()},removeClass:function(n,t,a){return w(n,k(t,"-remove"),a)}}}])}])}(window,window.angular); !function(e,t){"use strict";function r(){this.$get=["$$sanitizeUri",function(e){return function(t){var r=[];return s(t,c(r,function(t,r){return!/^unsafe/.test(e(t,r))})),r.join("")}}]}function n(e){var r=[],n=c(r,t.noop);return n.chars(e),r.join("")}function a(e){var t,r={},n=e.split(",");for(t=0;t=0&&v[s]!=n;s--);if(s>=0){for(a=v.length-1;a>=s;a--)r.end&&r.end(v[a]);v.length=s}}var s,o,c,v=[],x=e;for(v.last=function(){return v[v.length-1]};e;){if(o=!0,v.last()&&C[v.last()])e=e.replace(new RegExp("(.*)<\\s*\\/\\s*"+v.last()+"[^>]*>","i"),function(e,t){return t=t.replace(d,"$1").replace(b,"$1"),r.chars&&r.chars(i(t)),""}),a("",v.last());else if(0===e.indexOf("",s)===s&&(r.comment&&r.comment(e.substring(4,s)),e=e.substring(s+3),o=!1)):m.test(e)?(c=e.match(m),c&&(e=e.replace(c[0],""),o=!1)):g.test(e)?(c=e.match(p),c&&(e=e.substring(c[0].length),c[0].replace(p,a),o=!1)):h.test(e)&&(c=e.match(u),c&&(e=e.substring(c[0].length),c[0].replace(u,n),o=!1)),o){s=e.indexOf("<");var $=0>s?e:e.substring(0,s);e=0>s?"":e.substring(s),r.chars&&r.chars(i($))}if(e==x)throw l("badparse","The sanitizer was unable to parse the following block of html: {0}",e);x=e}a()}function i(e){if(!e)return"";var t=S.exec(e),r=t[1],n=t[3],a=t[2];return a&&(A.innerHTML=a.replace(//g,">")}function c(e,r){var n=!1,a=t.bind(e,e.push);return{start:function(e,s,i){e=t.lowercase(e),!n&&C[e]&&(n=e),n||E[e]!==!0||(a("<"),a(e),t.forEach(s,function(n,s){var i=t.lowercase(s),c="img"===e&&"src"===i||"background"===i;T[i]!==!0||O[i]===!0&&!r(n,c)||(a(" "),a(s),a('="'),a(o(n)),a('"'))}),a(i?"/>":">"))},end:function(e){e=t.lowercase(e),n||E[e]!==!0||(a("")),e==n&&(n=!1)},chars:function(e){n||a(o(e))}}}var l=t.$$minErr("$sanitize"),u=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,p=/^<\s*\/\s*([\w:-]+)[^>]*>/,f=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,h=/^/g,m=/]*?)>/i,b=//g,v=/([^\#-~| |!])/g,w=a("area,br,col,hr,img,wbr"),x=a("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),$=a("rp,rt"),z=t.extend({},$,x),k=t.extend({},x,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")),y=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")),C=a("script,style"),E=t.extend({},w,k,y,z),O=a("background,cite,href,longdesc,src,usemap"),T=t.extend({},O,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")),A=document.createElement("pre"),S=/^(\s*)([\s\S]*?)(\s*)$/;t.module("ngSanitize",[]).provider("$sanitize",r),t.module("ngSanitize").filter("linky",["$sanitize",function(e){var r=/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>]/,a=/^mailto:/;return function(s,i){function o(e){e&&h.push(n(e))}function c(e,r){h.push("'),o(r),h.push("")}if(!s)return s;for(var l,u,p,f=s,h=[];l=f.match(r);)u=l[0],l[2]==l[3]&&(u="mailto:"+u),p=l.index,o(f.substr(0,p)),c(u,l[0].replace(a,"")),f=f.substring(p+l[0].length);return o(f),e(h.join(""))}}])}(window,window.angular); -angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.transition","ui.bootstrap.collapse","ui.bootstrap.dropdownToggle","ui.bootstrap.modal","ui.bootstrap.position","ui.bootstrap.bindHtml","ui.bootstrap.tooltip"]),angular.module("ui.bootstrap.tpls",["template/modal/backdrop.html","template/modal/window.html","template/tooltip/tooltip-html-unsafe-popup.html","template/tooltip/tooltip-popup.html"]),angular.module("ui.bootstrap.transition",[]).factory("$transition",["$q","$timeout","$rootScope",function(t,n,e){function o(t){for(var n in t)if(void 0!==a.style[n])return t[n]}var i=function(o,a,l){l=l||{};var r=t.defer(),s=i[l.animation?"animationEndEventName":"transitionEndEventName"],c=function(){e.$apply(function(){o.unbind(s,c),r.resolve(o)})};return s&&o.bind(s,c),n(function(){angular.isString(a)?o.addClass(a):angular.isFunction(a)?a(o):angular.isObject(a)&&o.css(a),s||r.resolve(o)}),r.promise.cancel=function(){s&&o.unbind(s,c),r.reject("Transition cancelled")},r.promise},a=document.createElement("trans"),l={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"},r={WebkitTransition:"webkitAnimationEnd",MozTransition:"animationend",OTransition:"oAnimationEnd",transition:"animationend"};return i.transitionEndEventName=o(l),i.animationEndEventName=o(r),i}]),angular.module("ui.bootstrap.collapse",["ui.bootstrap.transition"]).directive("collapse",["$transition",function(t){return{link:function(n,e,o){function i(n){function o(){c===i&&(c=void 0)}var i=t(e,n);return c&&c.cancel(),c=i,i.then(o,o),i}function a(){p?(p=!1,l()):(e.removeClass("collapse").addClass("collapsing"),i({height:e[0].scrollHeight+"px"}).then(l))}function l(){e.removeClass("collapsing"),e.addClass("collapse in"),e.css({height:"auto"})}function r(){if(p)p=!1,s(),e.css({height:0});else{e.css({height:e[0].scrollHeight+"px"});{e[0].offsetWidth}e.removeClass("collapse in").addClass("collapsing"),i({height:0}).then(s)}}function s(){e.removeClass("collapsing"),e.addClass("collapse")}var c,p=!0;n.$watch(o.collapse,function(t){t?r():a()})}}}]),angular.module("ui.bootstrap.dropdownToggle",[]).directive("dropdownToggle",["$document","$location",function(t){var n=null,e=angular.noop;return{restrict:"CA",link:function(o,i){o.$watch("$location.path",function(){e()}),i.parent().bind("click",function(){e()}),i.bind("click",function(o){var a=i===n;o.preventDefault(),o.stopPropagation(),n&&e(),a||i.hasClass("disabled")||i.prop("disabled")||(i.parent().addClass("open"),n=i,e=function(o){o&&(o.preventDefault(),o.stopPropagation()),t.unbind("click",e),i.parent().removeClass("open"),e=angular.noop,n=null},t.bind("click",e))})}}}]),angular.module("ui.bootstrap.modal",["ui.bootstrap.transition"]).factory("$$stackedMap",function(){return{createNew:function(){var t=[];return{add:function(n,e){t.push({key:n,value:e})},get:function(n){for(var e=0;e0)}function s(){if(p&&-1==l()){var t=u;c(p,u,150,function(){t.$destroy(),t=null}),p=void 0,u=void 0}}function c(e,o,i,a){function l(){l.done||(l.done=!0,e.remove(),a&&a())}o.animate=!1;var r=t.transitionEndEventName;if(r){var s=n(l,i);e.bind(r,function(){n.cancel(s),l(),o.$apply()})}else n(l,0)}var p,u,d="modal-open",f=a.createNew(),m={};return i.$watch(l,function(t){u&&(u.index=t)}),e.bind("keydown",function(t){var n;27===t.which&&(n=f.top(),n&&n.value.keyboard&&i.$apply(function(){m.dismiss(n.key)}))}),m.open=function(t,n){f.add(t,{deferred:n.deferred,modalScope:n.scope,backdrop:n.backdrop,keyboard:n.keyboard});var a=e.find("body").eq(0),r=l();r>=0&&!p&&(u=i.$new(!0),u.index=r,p=o("
")(u),a.append(p));var s=angular.element("
");s.attr("window-class",n.windowClass),s.attr("index",f.length()-1),s.attr("animate","animate"),s.html(n.content);var c=o(s)(n.scope);f.top().value.modalDomEl=c,a.append(c),a.addClass(d)},m.close=function(t,n){var e=f.get(t).value;e&&(e.deferred.resolve(n),r(t))},m.dismiss=function(t,n){var e=f.get(t).value;e&&(e.deferred.reject(n),r(t))},m.dismissAll=function(t){for(var n=this.getTop();n;)this.dismiss(n.key,t),n=this.getTop()},m.getTop=function(){return f.top()},m}]).provider("$modal",function(){var t={options:{backdrop:!0,keyboard:!0},$get:["$injector","$rootScope","$q","$http","$templateCache","$controller","$modalStack",function(n,e,o,i,a,l,r){function s(t){return t.template?o.when(t.template):i.get(t.templateUrl,{cache:a}).then(function(t){return t.data})}function c(t){var e=[];return angular.forEach(t,function(t){(angular.isFunction(t)||angular.isArray(t))&&e.push(o.when(n.invoke(t)))}),e}var p={};return p.open=function(n){var i=o.defer(),a=o.defer(),p={result:i.promise,opened:a.promise,close:function(t){r.close(p,t)},dismiss:function(t){r.dismiss(p,t)}};if(n=angular.extend({},t.options,n),n.resolve=n.resolve||{},!n.template&&!n.templateUrl)throw new Error("One of template or templateUrl options is required.");var u=o.all([s(n)].concat(c(n.resolve)));return u.then(function(t){var o=(n.scope||e).$new();o.$close=p.close,o.$dismiss=p.dismiss;var a,s={},c=1;n.controller&&(s.$scope=o,s.$modalInstance=p,angular.forEach(n.resolve,function(n,e){s[e]=t[c++]}),a=l(n.controller,s)),r.open(p,{scope:o,deferred:i,content:t[0],backdrop:n.backdrop,keyboard:n.keyboard,windowClass:n.windowClass})},function(t){i.reject(t)}),u.then(function(){a.resolve(!0)},function(){a.reject(!1)}),p},p}]};return t}),angular.module("ui.bootstrap.position",[]).factory("$position",["$document","$window",function(t,n){function e(t,e){return t.currentStyle?t.currentStyle[e]:n.getComputedStyle?n.getComputedStyle(t)[e]:t.style[e]}function o(t){return"static"===(e(t,"position")||"static")}var i=function(n){for(var e=t[0],i=n.offsetParent||e;i&&i!==e&&o(i);)i=i.offsetParent;return i||e};return{position:function(n){var e=this.offset(n),o={top:0,left:0},a=i(n[0]);a!=t[0]&&(o=this.offset(angular.element(a)),o.top+=a.clientTop-a.scrollTop,o.left+=a.clientLeft-a.scrollLeft);var l=n[0].getBoundingClientRect();return{width:l.width||n.prop("offsetWidth"),height:l.height||n.prop("offsetHeight"),top:e.top-o.top,left:e.left-o.left}},offset:function(e){var o=e[0].getBoundingClientRect();return{width:o.width||e.prop("offsetWidth"),height:o.height||e.prop("offsetHeight"),top:o.top+(n.pageYOffset||t[0].body.scrollTop||t[0].documentElement.scrollTop),left:o.left+(n.pageXOffset||t[0].body.scrollLeft||t[0].documentElement.scrollLeft)}}}}]),angular.module("ui.bootstrap.bindHtml",[]).directive("bindHtmlUnsafe",function(){return function(t,n,e){n.addClass("ng-binding").data("$binding",e.bindHtmlUnsafe),t.$watch(e.bindHtmlUnsafe,function(t){n.html(t||"")})}}),angular.module("ui.bootstrap.tooltip",["ui.bootstrap.position","ui.bootstrap.bindHtml"]).provider("$tooltip",function(){function t(t){var n=/[A-Z]/g,e="-";return t.replace(n,function(t,n){return(n?e:"")+t.toLowerCase()})}var n={placement:"top",animation:!0,popupDelay:0},e={mouseenter:"mouseleave",click:"click",focus:"blur"},o={};this.options=function(t){angular.extend(o,t)},this.setTriggers=function(t){angular.extend(e,t)},this.$get=["$window","$compile","$timeout","$parse","$document","$position","$interpolate",function(i,a,l,r,s,c,p){return function(i,u,d){function f(t){var n=t||m.trigger||d,o=e[n]||n;return{show:n,hide:o}}var m=angular.extend({},n,o),v=t(i),h=p.startSymbol(),g=p.endSymbol(),b="
';return{restrict:"EA",scope:!0,compile:function(){var t=a(b);return function(n,e,o){function a(){n.tt_isOpen?d():p()}function p(){(!T||n.$eval(o[u+"Enable"]))&&(n.tt_popupDelay?(k=l(v,n.tt_popupDelay,!1),k.then(function(t){t()})):v()())}function d(){n.$apply(function(){h()})}function v(){return n.tt_content?(g(),w&&l.cancel(w),$.css({top:0,left:0,display:"block"}),y?s.find("body").append($):e.after($),_(),n.tt_isOpen=!0,n.$digest(),_):angular.noop}function h(){n.tt_isOpen=!1,l.cancel(k),n.tt_animation?w=l(b,500):b()}function g(){$&&b(),$=t(n,function(){}),n.$digest()}function b(){$&&($.remove(),$=null)}var $,w,k,y=angular.isDefined(m.appendToBody)?m.appendToBody:!1,C=f(void 0),E=!1,T=angular.isDefined(o[u+"Enable"]),_=function(){var t,o,i,a;switch(t=y?c.offset(e):c.position(e),o=$.prop("offsetWidth"),i=$.prop("offsetHeight"),n.tt_placement){case"right":a={top:t.top+t.height/2-i/2,left:t.left+t.width};break;case"bottom":a={top:t.top+t.height,left:t.left+t.width/2-o/2};break;case"left":a={top:t.top+t.height/2-i/2,left:t.left-o};break;default:a={top:t.top-i,left:t.left+t.width/2-o/2}}a.top+="px",a.left+="px",$.css(a)};n.tt_isOpen=!1,o.$observe(i,function(t){n.tt_content=t,!t&&n.tt_isOpen&&h()}),o.$observe(u+"Title",function(t){n.tt_title=t}),o.$observe(u+"Placement",function(t){n.tt_placement=angular.isDefined(t)?t:m.placement}),o.$observe(u+"PopupDelay",function(t){var e=parseInt(t,10);n.tt_popupDelay=isNaN(e)?m.popupDelay:e});var x=function(){E&&(e.unbind(C.show,p),e.unbind(C.hide,d))};o.$observe(u+"Trigger",function(t){x(),C=f(t),C.show===C.hide?e.bind(C.show,a):(e.bind(C.show,p),e.bind(C.hide,d)),E=!0});var O=n.$eval(o[u+"Animation"]);n.tt_animation=angular.isDefined(O)?!!O:m.animation,o.$observe(u+"AppendToBody",function(t){y=angular.isDefined(t)?r(t)(n):y}),y&&n.$on("$locationChangeSuccess",function(){n.tt_isOpen&&h()}),n.$on("$destroy",function(){l.cancel(w),l.cancel(k),x(),b()})}}}}}]}).directive("tooltipPopup",function(){return{restrict:"EA",replace:!0,scope:{content:"@",placement:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-popup.html"}}).directive("tooltip",["$tooltip",function(t){return t("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(t){return t("tooltipHtmlUnsafe","tooltip","mouseenter")}]),angular.module("template/modal/backdrop.html",[]).run(["$templateCache",function(t){t.put("template/modal/backdrop.html",'')}]),angular.module("template/modal/window.html",[]).run(["$templateCache",function(t){t.put("template/modal/window.html",'')}]),angular.module("template/tooltip/tooltip-html-unsafe-popup.html",[]).run(["$templateCache",function(t){t.put("template/tooltip/tooltip-html-unsafe-popup.html",'
\n
\n
\n
\n')}]),angular.module("template/tooltip/tooltip-popup.html",[]).run(["$templateCache",function(t){t.put("template/tooltip/tooltip-popup.html",'
\n
\n
\n
\n')}]); +angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.transition","ui.bootstrap.collapse","ui.bootstrap.dropdownToggle","ui.bootstrap.modal","ui.bootstrap.position","ui.bootstrap.bindHtml","ui.bootstrap.tooltip"]),angular.module("ui.bootstrap.tpls",["template/modal/backdrop.html","template/modal/window.html","template/tooltip/tooltip-html-unsafe-popup.html","template/tooltip/tooltip-popup.html"]),angular.module("ui.bootstrap.transition",[]).factory("$transition",["$q","$timeout","$rootScope",function(t,n,e){function o(t){for(var n in t)if(void 0!==a.style[n])return t[n]}var i=function(o,a,l){l=l||{};var r=t.defer(),s=i[l.animation?"animationEndEventName":"transitionEndEventName"],c=function(){e.$apply(function(){o.unbind(s,c),r.resolve(o)})};return s&&o.bind(s,c),n(function(){angular.isString(a)?o.addClass(a):angular.isFunction(a)?a(o):angular.isObject(a)&&o.css(a),s||r.resolve(o)}),r.promise.cancel=function(){s&&o.unbind(s,c),r.reject("Transition cancelled")},r.promise},a=document.createElement("trans"),l={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"},r={WebkitTransition:"webkitAnimationEnd",MozTransition:"animationend",OTransition:"oAnimationEnd",transition:"animationend"};return i.transitionEndEventName=o(l),i.animationEndEventName=o(r),i}]),angular.module("ui.bootstrap.collapse",["ui.bootstrap.transition"]).directive("collapse",["$transition",function(t){return{link:function(n,e,o){function i(n){function o(){c===i&&(c=void 0)}var i=t(e,n);return c&&c.cancel(),c=i,i.then(o,o),i}function a(){p?(p=!1,l()):(e.removeClass("collapse").addClass("collapsing"),i({height:e[0].scrollHeight+"px"}).then(l))}function l(){e.removeClass("collapsing"),e.addClass("collapse in"),e.css({height:"auto"})}function r(){if(p)p=!1,s(),e.css({height:0});else{e.css({height:e[0].scrollHeight+"px"});{e[0].offsetWidth}e.removeClass("collapse in").addClass("collapsing"),i({height:0}).then(s)}}function s(){e.removeClass("collapsing"),e.addClass("collapse")}var c,p=!0;n.$watch(o.collapse,function(t){t?r():a()})}}}]),angular.module("ui.bootstrap.dropdownToggle",[]).directive("dropdownToggle",["$document","$location",function(t){var n=null,e=angular.noop;return{restrict:"CA",link:function(o,i){o.$watch("$location.path",function(){e()}),i.parent().bind("click",function(){e()}),i.bind("click",function(o){var a=i===n;o.preventDefault(),o.stopPropagation(),n&&e(),a||i.hasClass("disabled")||i.prop("disabled")||(i.parent().addClass("open"),n=i,e=function(o){o&&(o.preventDefault(),o.stopPropagation()),t.unbind("click",e),i.parent().removeClass("open"),e=angular.noop,n=null},t.bind("click",e))})}}}]),angular.module("ui.bootstrap.modal",["ui.bootstrap.transition"]).factory("$$stackedMap",function(){return{createNew:function(){var t=[];return{add:function(n,e){t.push({key:n,value:e})},get:function(n){for(var e=0;e0)}function s(){if(p&&-1==l()){var t=u;c(p,u,0,function(){t.$destroy(),t=null}),p=void 0,u=void 0}}function c(e,o,i,a){function l(){l.done||(l.done=!0,e.remove(),a&&a())}o.animate=!1;var r=t.transitionEndEventName;if(r){var s=n(l,i);e.bind(r,function(){n.cancel(s),l(),o.$apply()})}else n(l,0)}var p,u,d="modal-open",f=a.createNew(),m={};return i.$watch(l,function(t){u&&(u.index=t)}),e.bind("keydown",function(t){var n;27===t.which&&(n=f.top(),n&&n.value.keyboard&&i.$apply(function(){m.dismiss(n.key)}))}),m.open=function(t,n){f.add(t,{deferred:n.deferred,modalScope:n.scope,backdrop:n.backdrop,keyboard:n.keyboard});var a=e.find("body").eq(0),r=l();r>=0&&!p&&(u=i.$new(!0),u.index=r,p=o("
")(u),a.append(p));var s=angular.element("
");s.attr("window-class",n.windowClass),s.attr("index",f.length()-1),s.attr("animate","animate"),s.html(n.content);var c=o(s)(n.scope);f.top().value.modalDomEl=c,a.append(c),a.addClass(d)},m.close=function(t,n){var e=f.get(t).value;e&&(e.deferred.resolve(n),r(t))},m.dismiss=function(t,n){var e=f.get(t).value;e&&(e.deferred.reject(n),r(t))},m.dismissAll=function(t){for(var n=this.getTop();n;)this.dismiss(n.key,t),n=this.getTop()},m.getTop=function(){return f.top()},m}]).provider("$modal",function(){var t={options:{backdrop:!0,keyboard:!0},$get:["$injector","$rootScope","$q","$http","$templateCache","$controller","$modalStack",function(n,e,o,i,a,l,r){function s(t){return t.template?o.when(t.template):i.get(t.templateUrl,{cache:a}).then(function(t){return t.data})}function c(t){var e=[];return angular.forEach(t,function(t){(angular.isFunction(t)||angular.isArray(t))&&e.push(o.when(n.invoke(t)))}),e}var p={};return p.open=function(n){var i=o.defer(),a=o.defer(),p={result:i.promise,opened:a.promise,close:function(t){r.close(p,t)},dismiss:function(t){r.dismiss(p,t)}};if(n=angular.extend({},t.options,n),n.resolve=n.resolve||{},!n.template&&!n.templateUrl)throw new Error("One of template or templateUrl options is required.");var u=o.all([s(n)].concat(c(n.resolve)));return u.then(function(t){var o=(n.scope||e).$new();o.$close=p.close,o.$dismiss=p.dismiss;var a,s={},c=1;n.controller&&(s.$scope=o,s.$modalInstance=p,angular.forEach(n.resolve,function(n,e){s[e]=t[c++]}),a=l(n.controller,s)),r.open(p,{scope:o,deferred:i,content:t[0],backdrop:n.backdrop,keyboard:n.keyboard,windowClass:n.windowClass})},function(t){i.reject(t)}),u.then(function(){a.resolve(!0)},function(){a.reject(!1)}),p},p}]};return t}),angular.module("ui.bootstrap.position",[]).factory("$position",["$document","$window",function(t,n){function e(t,e){return t.currentStyle?t.currentStyle[e]:n.getComputedStyle?n.getComputedStyle(t)[e]:t.style[e]}function o(t){return"static"===(e(t,"position")||"static")}var i=function(n){for(var e=t[0],i=n.offsetParent||e;i&&i!==e&&o(i);)i=i.offsetParent;return i||e};return{position:function(n){var e=this.offset(n),o={top:0,left:0},a=i(n[0]);a!=t[0]&&(o=this.offset(angular.element(a)),o.top+=a.clientTop-a.scrollTop,o.left+=a.clientLeft-a.scrollLeft);var l=n[0].getBoundingClientRect();return{width:l.width||n.prop("offsetWidth"),height:l.height||n.prop("offsetHeight"),top:e.top-o.top,left:e.left-o.left}},offset:function(e){var o=e[0].getBoundingClientRect();return{width:o.width||e.prop("offsetWidth"),height:o.height||e.prop("offsetHeight"),top:o.top+(n.pageYOffset||t[0].body.scrollTop||t[0].documentElement.scrollTop),left:o.left+(n.pageXOffset||t[0].body.scrollLeft||t[0].documentElement.scrollLeft)}}}}]),angular.module("ui.bootstrap.bindHtml",[]).directive("bindHtmlUnsafe",function(){return function(t,n,e){n.addClass("ng-binding").data("$binding",e.bindHtmlUnsafe),t.$watch(e.bindHtmlUnsafe,function(t){n.html(t||"")})}}),angular.module("ui.bootstrap.tooltip",["ui.bootstrap.position","ui.bootstrap.bindHtml"]).provider("$tooltip",function(){function t(t){var n=/[A-Z]/g,e="-";return t.replace(n,function(t,n){return(n?e:"")+t.toLowerCase()})}var n={placement:"top",animation:!0,popupDelay:0},e={mouseenter:"mouseleave",click:"click",focus:"blur"},o={};this.options=function(t){angular.extend(o,t)},this.setTriggers=function(t){angular.extend(e,t)},this.$get=["$window","$compile","$timeout","$parse","$document","$position","$interpolate",function(i,a,l,r,s,c,p){return function(i,u,d){function f(t){var n=t||m.trigger||d,o=e[n]||n;return{show:n,hide:o}}var m=angular.extend({},n,o),v=t(i),h=p.startSymbol(),g=p.endSymbol(),b="
';return{restrict:"EA",scope:!0,compile:function(){var t=a(b);return function(n,e,o){function a(){n.tt_isOpen?d():p()}function p(){(!T||n.$eval(o[u+"Enable"]))&&(n.tt_popupDelay?(k=l(v,n.tt_popupDelay,!1),k.then(function(t){t()})):v()())}function d(){n.$apply(function(){h()})}function v(){return n.tt_content?(g(),w&&l.cancel(w),$.css({top:0,left:0,display:"block"}),y?s.find("body").append($):e.after($),_(),n.tt_isOpen=!0,n.$digest(),_):angular.noop}function h(){n.tt_isOpen=!1,l.cancel(k),n.tt_animation?w=l(b,500):b()}function g(){$&&b(),$=t(n,function(){}),n.$digest()}function b(){$&&($.remove(),$=null)}var $,w,k,y=angular.isDefined(m.appendToBody)?m.appendToBody:!1,C=f(void 0),E=!1,T=angular.isDefined(o[u+"Enable"]),_=function(){var t,o,i,a;switch(t=y?c.offset(e):c.position(e),o=$.prop("offsetWidth"),i=$.prop("offsetHeight"),n.tt_placement){case"right":a={top:t.top+t.height/2-i/2,left:t.left+t.width};break;case"bottom":a={top:t.top+t.height,left:t.left+t.width/2-o/2};break;case"left":a={top:t.top+t.height/2-i/2,left:t.left-o};break;default:a={top:t.top-i,left:t.left+t.width/2-o/2}}a.top+="px",a.left+="px",$.css(a)};n.tt_isOpen=!1,o.$observe(i,function(t){n.tt_content=t,!t&&n.tt_isOpen&&h()}),o.$observe(u+"Title",function(t){n.tt_title=t}),o.$observe(u+"Placement",function(t){n.tt_placement=angular.isDefined(t)?t:m.placement}),o.$observe(u+"PopupDelay",function(t){var e=parseInt(t,10);n.tt_popupDelay=isNaN(e)?m.popupDelay:e});var x=function(){E&&(e.unbind(C.show,p),e.unbind(C.hide,d))};o.$observe(u+"Trigger",function(t){x(),C=f(t),C.show===C.hide?e.bind(C.show,a):(e.bind(C.show,p),e.bind(C.hide,d)),E=!0});var O=n.$eval(o[u+"Animation"]);n.tt_animation=angular.isDefined(O)?!!O:m.animation,o.$observe(u+"AppendToBody",function(t){y=angular.isDefined(t)?r(t)(n):y}),y&&n.$on("$locationChangeSuccess",function(){n.tt_isOpen&&h()}),n.$on("$destroy",function(){l.cancel(w),l.cancel(k),x(),b()})}}}}}]}).directive("tooltipPopup",function(){return{restrict:"EA",replace:!0,scope:{content:"@",placement:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-popup.html"}}).directive("tooltip",["$tooltip",function(t){return t("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(t){return t("tooltipHtmlUnsafe","tooltip","mouseenter")}]),angular.module("template/modal/backdrop.html",[]).run(["$templateCache",function(t){t.put("template/modal/backdrop.html",'')}]),angular.module("template/modal/window.html",[]).run(["$templateCache",function(t){t.put("template/modal/window.html",'')}]),angular.module("template/tooltip/tooltip-html-unsafe-popup.html",[]).run(["$templateCache",function(t){t.put("template/tooltip/tooltip-html-unsafe-popup.html",'
\n
\n
\n
\n')}]),angular.module("template/tooltip/tooltip-popup.html",[]).run(["$templateCache",function(t){t.put("template/tooltip/tooltip-popup.html",'
\n
\n
\n
\n')}]); !function(){"use strict";var e=angular.module("pasvaz.bindonce",[]);e.directive("bindonce",function(){var e=function(e){if(e&&0!==e.length){var t=angular.lowercase(""+e);e=!("f"===t||"0"===t||"false"===t||"no"===t||"n"===t||"[]"===t)}else e=!1;return e},t=parseInt((/msie (\d+)/.exec(angular.lowercase(navigator.userAgent))||[])[1],10);isNaN(t)&&(t=parseInt((/trident\/.*; rv:(\d+)/.exec(angular.lowercase(navigator.userAgent))||[])[1],10));var r={restrict:"AM",controller:["$scope","$element","$attrs","$interpolate",function(r,a,i,n){var c=function(t,r,a){var i="show"===r?"":"none",n="hide"===r?"":"none";t.css("display",e(a)?i:n)},o=function(e,t){if(angular.isObject(t)&&!angular.isArray(t)){var r=[];angular.forEach(t,function(e,t){e&&r.push(t)}),t=r}t&&e.addClass(angular.isArray(t)?t.join(" "):t)},s=function(e,t){e.transclude(t,function(t){var r=e.element.parent(),a=e.element&&e.element[e.element.length-1],i=r&&r[0]||a&&a.parentNode,n=a&&a.nextSibling||null;angular.forEach(t,function(e){i.insertBefore(e,n)})})},l={watcherRemover:void 0,binders:[],group:i.boName,element:a,ran:!1,addBinder:function(e){this.binders.push(e),this.ran&&this.runBinders()},setupWatcher:function(e){var t=this;this.watcherRemover=r.$watch(e,function(e){void 0!==e&&(t.removeWatcher(),t.checkBindonce(e))},!0)},checkBindonce:function(e){var t=this,r=e.$promise?e.$promise.then:e.then;"function"==typeof r?r(function(){t.runBinders()}):t.runBinders()},removeWatcher:function(){void 0!==this.watcherRemover&&(this.watcherRemover(),this.watcherRemover=void 0)},runBinders:function(){for(;this.binders.length>0;){var r=this.binders.shift();if(!this.group||this.group==r.group){var a=r.scope.$eval(r.interpolate?n(r.value):r.value);switch(r.attr){case"boIf":e(a)&&s(r,r.scope.$new());break;case"boSwitch":var i,l=r.controller[0];(i=l.cases["!"+a]||l.cases["?"])&&(r.scope.$eval(r.attrs.change),angular.forEach(i,function(e){s(e,r.scope.$new())}));break;case"boSwitchWhen":var u=r.controller[0];u.cases["!"+r.attrs.boSwitchWhen]=u.cases["!"+r.attrs.boSwitchWhen]||[],u.cases["!"+r.attrs.boSwitchWhen].push({transclude:r.transclude,element:r.element});break;case"boSwitchDefault":var u=r.controller[0];u.cases["?"]=u.cases["?"]||[],u.cases["?"].push({transclude:r.transclude,element:r.element});break;case"hide":case"show":c(r.element,r.attr,a);break;case"class":o(r.element,a);break;case"text":r.element.text(a);break;case"html":r.element.html(a);break;case"style":r.element.css(a);break;case"src":r.element.attr(r.attr,a),t&&r.element.prop("src",a);break;case"attr":angular.forEach(r.attrs,function(e,t){var a,i;t.match(/^boAttr./)&&r.attrs[t]&&(a=t.replace(/^boAttr/,"").replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),i=r.scope.$eval(r.attrs[t]),r.element.attr(a,i))});break;case"href":case"alt":case"title":case"id":case"value":r.element.attr(r.attr,a)}}}this.ran=!0}};return l}],link:function(e,t,r,a){var i=r.bindonce&&e.$eval(r.bindonce);void 0!==i?a.checkBindonce(i):(a.setupWatcher(r.bindonce),t.bind("$destroy",a.removeWatcher))}};return r}),angular.forEach([{directiveName:"boShow",attribute:"show"},{directiveName:"boHide",attribute:"hide"},{directiveName:"boClass",attribute:"class"},{directiveName:"boText",attribute:"text"},{directiveName:"boBind",attribute:"text"},{directiveName:"boHtml",attribute:"html"},{directiveName:"boSrcI",attribute:"src",interpolate:!0},{directiveName:"boSrc",attribute:"src"},{directiveName:"boHrefI",attribute:"href",interpolate:!0},{directiveName:"boHref",attribute:"href"},{directiveName:"boAlt",attribute:"alt"},{directiveName:"boTitle",attribute:"title"},{directiveName:"boId",attribute:"id"},{directiveName:"boStyle",attribute:"style"},{directiveName:"boValue",attribute:"value"},{directiveName:"boAttr",attribute:"attr"},{directiveName:"boIf",transclude:"element",terminal:!0,priority:1e3},{directiveName:"boSwitch",require:"boSwitch",controller:function(){this.cases={}}},{directiveName:"boSwitchWhen",transclude:"element",priority:800,require:"^boSwitch"},{directiveName:"boSwitchDefault",transclude:"element",priority:800,require:"^boSwitch"}],function(t){var r=200;return e.directive(t.directiveName,function(){var e={priority:t.priority||r,transclude:t.transclude||!1,terminal:t.terminal||!1,require:["^bindonce"].concat(t.require||[]),controller:t.controller,compile:function(e,r,a){return function(e,r,i,n){var c=n[0],o=i.boParent;if(o&&c.group!==o){var s=c.element.parent();c=void 0;for(var l;9!==s[0].nodeType&&s.length;){if((l=s.data("$bindonceController"))&&l.group===o){c=l;break}s=s.parent()}if(!c)throw new Error("No bindonce controller: "+o)}c.addBinder({element:r,attr:t.attribute||t.directiveName,attrs:i,value:i[t.directiveName],interpolate:t.interpolate,group:o,transclude:a,controller:n.slice(1),scope:e})}}};return e})})}(); function BigInteger(t,i,r){null!=t&&("number"==typeof t?this.fromNumber(t,i,r):null==i&&"string"!=typeof t?this.fromString(t,256):this.fromString(t,i))}function nbi(){return new BigInteger(null)}function am1(t,i,r,n,o,e){for(;--e>=0;){var s=i*this[t++]+r[n]+o;o=Math.floor(s/67108864),r[n++]=67108863&s}return o}function am2(t,i,r,n,o,e){for(var s=32767&i,h=i>>15;--e>=0;){var p=32767&this[t],u=this[t++]>>15,a=h*p+u*s;p=s*p+((32767&a)<<15)+r[n]+(1073741823&o),o=(p>>>30)+(a>>>15)+h*u+(o>>>30),r[n++]=1073741823&p}return o}function am3(t,i,r,n,o,e){for(var s=16383&i,h=i>>14;--e>=0;){var p=16383&this[t],u=this[t++]>>14,a=h*p+u*s;p=s*p+((16383&a)<<14)+r[n]+o,o=(p>>28)+(a>>14)+h*u,r[n++]=268435455&p}return o}function int2char(t){return BI_RM.charAt(t)}function intAt(t,i){var r=BI_RC[t.charCodeAt(i)];return null==r?-1:r}function bnpCopyTo(t){for(var i=this.t-1;i>=0;--i)t[i]=this[i];t.t=this.t,t.s=this.s}function bnpFromInt(t){this.t=1,this.s=0>t?-1:0,t>0?this[0]=t:-1>t?this[0]=t+this.DV:this.t=0}function nbv(t){var i=nbi();return i.fromInt(t),i}function bnpFromString(t,i,r){var n;if(16==i)n=4;else if(8==i)n=3;else if(256==i)n=8;else if(2==i)n=1;else if(32==i)n=5;else{if(4!=i)return void this.fromRadix(t,i);n=2}this.t=0,this.s=0;for(var o=t.length,e=!1,s=0;--o>=0;){var h=8==n?255&t[o]:intAt(t,o);0>h?"-"==t.charAt(o)&&(e=!0):(e=!1,0==s?this[this.t++]=h:s+n>this.DB?(this[this.t-1]|=(h&(1<>this.DB-s):this[this.t-1]|=h<=this.DB&&(s-=this.DB))}8==n&&0!=(128&t[0])&&r&&(this.s=-1,s>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t}function bnToString(t){if(this.s<0)return"-"+this.negate().toString(t);var i;if(16==t)i=4;else if(8==t)i=3;else if(2==t)i=1;else if(32==t)i=5;else{if(4!=t)return this.toRadix(t);i=2}var r,n=(1<0)for(h>h)>0&&(o=!0,e=int2char(r));s>=0;)i>h?(r=(this[s]&(1<>(h+=this.DB-i)):(r=this[s]>>(h-=i)&n,0>=h&&(h+=this.DB,--s)),r>0&&(o=!0),o&&(e+=int2char(r));return o?e:"0"}function bnNegate(){var t=nbi();return BigInteger.ZERO.subTo(this,t),t}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(t){var i=this.s-t.s;if(0!=i)return i;var r=this.t;if(i=r-t.t,0!=i)return this.s<0?-i:i;for(;--r>=0;)if(0!=(i=this[r]-t[r]))return i;return 0}function nbits(t){var i,r=1;return 0!=(i=t>>>16)&&(t=i,r+=16),0!=(i=t>>8)&&(t=i,r+=8),0!=(i=t>>4)&&(t=i,r+=4),0!=(i=t>>2)&&(t=i,r+=2),0!=(i=t>>1)&&(t=i,r+=1),r}function bnBitLength(){return this.t<=0?0:this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(t,i){var r;for(r=this.t-1;r>=0;--r)i[r+t]=this[r];for(r=t-1;r>=0;--r)i[r]=0;i.t=this.t+t,i.s=this.s}function bnpDRShiftTo(t,i){for(var r=t;r=0;--r)i[r+s+1]=this[r]>>o|h,h=(this[r]&e)<=0;--r)i[r]=0;i[s]=h,i.t=this.t+s+1,i.s=this.s,i.clamp()}function bnpRShiftTo(t,i){i.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)return void(i.t=0);var n=t%this.DB,o=this.DB-n,e=(1<>n;for(var s=r+1;s>n;n>0&&(i[this.t-r-1]|=(this.s&e)<r;)n+=this[r]-t[r],i[r++]=n&this.DM,n>>=this.DB;if(t.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n-=t.s}i.s=0>n?-1:0,-1>n?i[r++]=this.DV+n:n>0&&(i[r++]=n),i.t=r,i.clamp()}function bnpMultiplyTo(t,i){var r=this.abs(),n=t.abs(),o=r.t;for(i.t=o+n.t;--o>=0;)i[o]=0;for(o=0;o=0;)t[r]=0;for(r=0;r=i.DV&&(t[r+i.t]-=i.DV,t[r+i.t+1]=1)}t.t>0&&(t[t.t-1]+=i.am(r,i[r],t,2*r,0,1)),t.s=0,t.clamp()}function bnpDivRemTo(t,i,r){var n=t.abs();if(!(n.t<=0)){var o=this.abs();if(o.t0?(n.lShiftTo(p,e),o.lShiftTo(p,r)):(n.copyTo(e),o.copyTo(r));var u=e.t,a=e[u-1];if(0!=a){var f=a*(1<1?e[u-2]>>this.F2:0),g=this.FV/f,b=(1<=0&&(r[r.t++]=1,r.subTo(v,r)),BigInteger.ONE.dlShiftTo(u,v),v.subTo(e,e);e.t=0;){var B=r[--m]==a?this.DM:Math.floor(r[m]*g+(r[m-1]+l)*b);if((r[m]+=e.am(0,B,r,c,0,u))0&&r.rShiftTo(p,r),0>s&&BigInteger.ZERO.subTo(r,r)}}}function bnMod(t){var i=nbi();return this.abs().divRemTo(t,null,i),this.s<0&&i.compareTo(BigInteger.ZERO)>0&&t.subTo(i,i),i}function Classic(t){this.m=t}function cConvert(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t}function cRevert(t){return t}function cReduce(t){t.divRemTo(this.m,null,t)}function cMulTo(t,i,r){t.multiplyTo(i,r),this.reduce(r)}function cSqrTo(t,i){t.squareTo(i),this.reduce(i)}function bnpInvDigit(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var i=3&t;return i=i*(2-(15&t)*i)&15,i=i*(2-(255&t)*i)&255,i=i*(2-((65535&t)*i&65535))&65535,i=i*(2-t*i%this.DV)%this.DV,i>0?this.DV-i:-i}function Montgomery(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<0&&this.m.subTo(i,i),i}function montRevert(t){var i=nbi();return t.copyTo(i),this.reduce(i),i}function montReduce(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var i=0;i>15)*this.mpl&this.um)<<15)&t.DM;for(r=i+this.m.t,t[r]+=this.m.am(0,n,t,i,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)}function montSqrTo(t,i){t.squareTo(i),this.reduce(i)}function montMulTo(t,i,r){t.multiplyTo(i,r),this.reduce(r)}function bnpIsEven(){return 0==(this.t>0?1&this[0]:this.s)}function bnpExp(t,i){if(t>4294967295||1>t)return BigInteger.ONE;var r=nbi(),n=nbi(),o=i.convert(this),e=nbits(t)-1;for(o.copyTo(r);--e>=0;)if(i.sqrTo(r,n),(t&1<0)i.mulTo(n,o,r);else{var s=r;r=n,n=s}return i.revert(r)}function bnModPowInt(t,i){var r;return r=256>t||i.isEven()?new Classic(i):new Montgomery(i),this.exp(t,r)}function bnClone(){var t=nbi();return this.copyTo(t),t}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)<>24}function bnShortValue(){return 0==this.t?this.s:this[0]<<16>>16}function bnpChunkSize(t){return Math.floor(Math.LN2*this.DB/Math.log(t))}function bnSigNum(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1}function bnpToRadix(t){if(null==t&&(t=10),0==this.signum()||2>t||t>36)return"0";var i=this.chunkSize(t),r=Math.pow(t,i),n=nbv(r),o=nbi(),e=nbi(),s="";for(this.divRemTo(n,o,e);o.signum()>0;)s=(r+e.intValue()).toString(t).substr(1)+s,o.divRemTo(n,o,e);return e.intValue().toString(t)+s}function bnpFromRadix(t,i){this.fromInt(0),null==i&&(i=10);for(var r=this.chunkSize(i),n=Math.pow(i,r),o=!1,e=0,s=0,h=0;hp?"-"==t.charAt(h)&&0==this.signum()&&(o=!0):(s=i*s+p,++e>=r&&(this.dMultiply(n),this.dAddOffset(s,0),e=0,s=0))}e>0&&(this.dMultiply(Math.pow(i,e)),this.dAddOffset(s,0)),o&&BigInteger.ZERO.subTo(this,this)}function bnpFromNumber(t,i,r){if("number"==typeof i)if(2>t)this.fromInt(1);else for(this.fromNumber(t,r),this.testBit(t-1)||this.bitwiseTo(BigInteger.ONE.shiftLeft(t-1),op_or,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(i);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(BigInteger.ONE.shiftLeft(t-1),this);else{var n=new Array,o=7&t;n.length=(t>>3)+1,i.nextBytes(n),o>0?n[0]&=(1<0)for(o>o)!=(this.s&this.DM)>>o&&(r[e++]=n|this.s<=0;)8>o?(n=(this[i]&(1<>(o+=this.DB-8)):(n=this[i]>>(o-=8)&255,0>=o&&(o+=this.DB,--i)),t&&0!=(128&n)&&(n|=-256),0==e&&(128&this.s)!=(128&n)&&++e,(e>0||n!=this.s)&&(r[e++]=n);return r}function bnEquals(t){return 0==this.compareTo(t)}function bnMin(t){return this.compareTo(t)<0?this:t}function bnMax(t){return this.compareTo(t)>0?this:t}function bnpBitwiseTo(t,i,r){var n,o,e=Math.min(t.t,this.t);for(n=0;e>n;++n)r[n]=i(this[n],t[n]);if(t.tt?this.rShiftTo(-t,i):this.lShiftTo(t,i),i}function bnShiftRight(t){var i=nbi();return 0>t?this.lShiftTo(-t,i):this.rShiftTo(t,i),i}function lbit(t){if(0==t)return-1;var i=0;return 0==(65535&t)&&(t>>=16,i+=16),0==(255&t)&&(t>>=8,i+=8),0==(15&t)&&(t>>=4,i+=4),0==(3&t)&&(t>>=2,i+=2),0==(1&t)&&++i,i}function bnGetLowestSetBit(){for(var t=0;t=this.t?0!=this.s:0!=(this[i]&1<r;)n+=this[r]+t[r],i[r++]=n&this.DM,n>>=this.DB;if(t.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n+=t.s}i.s=0>n?-1:0,n>0?i[r++]=n:-1>n&&(i[r++]=this.DV+n),i.t=r,i.clamp()}function bnAdd(t){var i=nbi();return this.addTo(t,i),i}function bnSubtract(t){var i=nbi();return this.subTo(t,i),i}function bnMultiply(t){var i=nbi();return this.multiplyTo(t,i),i}function bnSquare(){var t=nbi();return this.squareTo(t),t}function bnDivide(t){var i=nbi();return this.divRemTo(t,i,null),i}function bnRemainder(t){var i=nbi();return this.divRemTo(t,null,i),i}function bnDivideAndRemainder(t){var i=nbi(),r=nbi();return this.divRemTo(t,i,r),new Array(i,r)}function bnpDMultiply(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()}function bnpDAddOffset(t,i){if(0!=t){for(;this.t<=i;)this[this.t++]=0;for(this[i]+=t;this[i]>=this.DV;)this[i]-=this.DV,++i>=this.t&&(this[this.t++]=0),++this[i]}}function NullExp(){}function nNop(t){return t}function nMulTo(t,i,r){t.multiplyTo(i,r)}function nSqrTo(t,i){t.squareTo(i)}function bnPow(t){return this.exp(t,new NullExp)}function bnpMultiplyLowerTo(t,i,r){var n=Math.min(this.t+t.t,i);for(r.s=0,r.t=n;n>0;)r[--n]=0;var o;for(o=r.t-this.t;o>n;++n)r[n+this.t]=this.am(0,t[n],r,n,0,this.t);for(o=Math.min(t.t,i);o>n;++n)this.am(0,t[n],r,n,0,i-n);r.clamp()}function bnpMultiplyUpperTo(t,i,r){--i;var n=r.t=this.t+t.t-i;for(r.s=0;--n>=0;)r[n]=0;for(n=Math.max(i-this.t,0);n2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var i=nbi();return t.copyTo(i),this.reduce(i),i}function barrettRevert(t){return t}function barrettReduce(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)}function barrettSqrTo(t,i){t.squareTo(i),this.reduce(i)}function barrettMulTo(t,i,r){t.multiplyTo(i,r),this.reduce(r)}function bnModPow(t,i){var r,n,o=t.bitLength(),e=nbv(1);if(0>=o)return e;r=18>o?1:48>o?3:144>o?4:768>o?5:6,n=8>o?new Classic(i):i.isEven()?new Barrett(i):new Montgomery(i);var s=new Array,h=3,p=r-1,u=(1<1){var a=nbi();for(n.sqrTo(s[1],a);u>=h;)s[h]=nbi(),n.mulTo(a,s[h-2],s[h]),h+=2}var f,g,b=t.t-1,l=!0,m=nbi();for(o=nbits(t[b])-1;b>=0;){for(o>=p?f=t[b]>>o-p&u:(f=(t[b]&(1<0&&(f|=t[b-1]>>this.DB+o-p)),h=r;0==(1&f);)f>>=1,--h;if((o-=h)<0&&(o+=this.DB,--b),l)s[f].copyTo(e),l=!1;else{for(;h>1;)n.sqrTo(e,m),n.sqrTo(m,e),h-=2;h>0?n.sqrTo(e,m):(g=e,e=m,m=g),n.mulTo(m,s[f],e)}for(;b>=0&&0==(t[b]&1<e)return i;for(e>o&&(e=o),e>0&&(i.rShiftTo(e,i),r.rShiftTo(e,r));i.signum()>0;)(o=i.getLowestSetBit())>0&&i.rShiftTo(o,i),(o=r.getLowestSetBit())>0&&r.rShiftTo(o,r),i.compareTo(r)>=0?(i.subTo(r,i),i.rShiftTo(1,i)):(r.subTo(i,r),r.rShiftTo(1,r));return e>0&&r.lShiftTo(e,r),r}function bnpModInt(t){if(0>=t)return 0;var i=this.DV%t,r=this.s<0?t-1:0;if(this.t>0)if(0==i)r=this[0]%t;else for(var n=this.t-1;n>=0;--n)r=(i*r+this[n])%t;return r}function bnModInverse(t){var i=t.isEven();if(this.isEven()&&i||0==t.signum())return BigInteger.ZERO;for(var r=t.clone(),n=this.clone(),o=nbv(1),e=nbv(0),s=nbv(0),h=nbv(1);0!=r.signum();){for(;r.isEven();)r.rShiftTo(1,r),i?(o.isEven()&&e.isEven()||(o.addTo(this,o),e.subTo(t,e)),o.rShiftTo(1,o)):e.isEven()||e.subTo(t,e),e.rShiftTo(1,e);for(;n.isEven();)n.rShiftTo(1,n),i?(s.isEven()&&h.isEven()||(s.addTo(this,s),h.subTo(t,h)),s.rShiftTo(1,s)):h.isEven()||h.subTo(t,h),h.rShiftTo(1,h);r.compareTo(n)>=0?(r.subTo(n,r),i&&o.subTo(s,o),e.subTo(h,e)):(n.subTo(r,n),i&&s.subTo(o,s),h.subTo(e,h))}return 0!=n.compareTo(BigInteger.ONE)?BigInteger.ZERO:h.compareTo(t)>=0?h.subtract(t):h.signum()<0?(h.addTo(t,h),h.signum()<0?h.add(t):h):h}function bnIsProbablePrime(t){var i,r=this.abs();if(1==r.t&&r[0]<=lowprimes[lowprimes.length-1]){for(i=0;in;)n*=lowprimes[o++];for(n=r.modInt(n);o>i;)if(n%lowprimes[i++]==0)return!1}return r.millerRabin(t)}function bnpMillerRabin(t){var i=this.subtract(BigInteger.ONE),r=i.getLowestSetBit();if(0>=r)return!1;var n=i.shiftRight(r);t=t+1>>1,t>lowprimes.length&&(t=lowprimes.length);for(var o=nbi(),e=0;t>e;++e){o.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);var s=o.modPow(n,this);if(0!=s.compareTo(BigInteger.ONE)&&0!=s.compareTo(i)){for(var h=1;h++>8&255,rng_pool[rng_pptr++]^=t>>16&255,rng_pool[rng_pptr++]^=t>>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_pptri;++i)this.S[i]=i;for(r=0,i=0;256>i;++i)r=r+this.S[i]+t[i%t.length]&255,n=this.S[i],this.S[i]=this.S[r],this.S[r]=n;this.i=0,this.j=0}function ARC4next(){var t;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,t=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=t,this.S[t+this.S[this.i]&255]}function prng_newstate(){return new Arcfour}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<=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;trng_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; var CryptoJS=CryptoJS||function(t,e){var r={},i=r.lib={},n=i.Base=function(){function t(){}return{extend:function(e){t.prototype=this;var r=new t;return e&&r.mixIn(e),r.hasOwnProperty("init")||(r.init=function(){r.$super.init.apply(this,arguments)}),r.init.prototype=r,r.$super=this,r},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),o=i.WordArray=n.extend({init:function(t,r){t=this.words=t||[],this.sigBytes=r!=e?r:4*t.length},toString:function(t){return(t||c).stringify(this)},concat:function(t){var e=this.words,r=t.words,i=this.sigBytes,n=t.sigBytes;if(this.clamp(),i%4)for(var o=0;n>o;o++){var s=r[o>>>2]>>>24-o%4*8&255;e[i+o>>>2]|=s<<24-(i+o)%4*8}else if(r.length>65535)for(var o=0;n>o;o+=4)e[i+o>>>2]=r[o>>>2];else for(var o=0;o>>2]&=4294967295<<32-r%4*8,e.length=t.ceil(r/4)},clone:function(){var t=n.clone.call(this);return t.words=this.words.slice(0),t},random:function(e){for(var r=[],i=0;e>i;i+=4)r.push(4294967296*t.random()|0);return new o.init(r,e)}}),s=r.enc={},c=s.Hex={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;r>n;n++){var o=e[n>>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;e>i;i+=2)r[i>>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new o.init(r,e/2)}},a=s.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;r>n;n++){var o=e[n>>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(o))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;e>i;i++)r[i>>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new o.init(r,e)}},f=s.Utf8={stringify:function(t){try{return decodeURIComponent(escape(a.stringify(t)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(t){return a.parse(unescape(encodeURIComponent(t)))}},h=i.BufferedBlockAlgorithm=n.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=f.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var r=this._data,i=r.words,n=r.sigBytes,s=this.blockSize,c=4*s,a=n/c;a=e?t.ceil(a):t.max((0|a)-this._minBufferSize,0);var f=a*s,h=t.min(4*f,n);if(f){for(var u=0;f>u;u+=s)this._doProcessBlock(i,u);var p=i.splice(0,f);r.sigBytes-=h}return new o.init(p,h)},clone:function(){var t=n.clone.call(this);return t._data=this._data.clone(),t},_minBufferSize:0}),u=(i.Hasher=h.extend({cfg:n.extend(),init:function(t){this.cfg=this.cfg.extend(t),this.reset()},reset:function(){h.reset.call(this),this._doReset()},update:function(t){return this._append(t),this._process(),this},finalize:function(t){t&&this._append(t);var e=this._doFinalize();return e},blockSize:16,_createHelper:function(t){return function(e,r){return new t.init(r).finalize(e)}},_createHmacHelper:function(t){return function(e,r){return new u.HMAC.init(t,r).finalize(e)}}}),r.algo={});return r}(Math);CryptoJS.lib.Cipher||function(t){var e=CryptoJS,r=e.lib,i=r.Base,n=r.WordArray,o=r.BufferedBlockAlgorithm,s=e.enc,c=(s.Utf8,s.Base64),a=e.algo,f=a.EvpKDF,h=r.Cipher=o.extend({cfg:i.extend(),createEncryptor:function(t,e){return this.create(this._ENC_XFORM_MODE,t,e)},createDecryptor:function(t,e){return this.create(this._DEC_XFORM_MODE,t,e)},init:function(t,e,r){this.cfg=this.cfg.extend(r),this._xformMode=t,this._key=e,this.reset()},reset:function(){o.reset.call(this),this._doReset()},process:function(t){return this._append(t),this._process()},finalize:function(t){t&&this._append(t);var e=this._doFinalize();return e},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function t(t){return"string"==typeof t?x:k}return function(e){return{encrypt:function(r,i,n){return t(i).encrypt(e,r,i,n)},decrypt:function(r,i,n){return t(i).decrypt(e,r,i,n)}}}}()}),u=(r.StreamCipher=h.extend({_doFinalize:function(){var t=this._process(!0);return t},blockSize:1}),e.mode={}),p=r.BlockCipherMode=i.extend({createEncryptor:function(t,e){return this.Encryptor.create(t,e)},createDecryptor:function(t,e){return this.Decryptor.create(t,e)},init:function(t,e){this._cipher=t,this._iv=e}}),l=u.CBC=function(){function e(e,r,i){var n=this._iv;if(n){var o=n;this._iv=t}else var o=this._prevBlock;for(var s=0;i>s;s++)e[r+s]^=o[s]}var r=p.extend();return r.Encryptor=r.extend({processBlock:function(t,r){var i=this._cipher,n=i.blockSize;e.call(this,t,r,n),i.encryptBlock(t,r),this._prevBlock=t.slice(r,r+n)}}),r.Decryptor=r.extend({processBlock:function(t,r){var i=this._cipher,n=i.blockSize,o=t.slice(r,r+n);i.decryptBlock(t,r),e.call(this,t,r,n),this._prevBlock=o}}),r}(),d=(u.IGE=function(){function e(t,e,r,i){for(var n=0;i>n;n++)t[r+n]^=e[n]}var r=p.extend();return r.Encryptor=r.extend({processBlock:function(r,i){var n=this._cipher,o=n.blockSize;this._ivp===t&&(this._ivp=this._iv.slice(0,o),this._iv2p=this._iv.slice(o,o+o));var s=r.slice(i,i+o);e(r,this._ivp,i,o),n.encryptBlock(r,i),e(r,this._iv2p,i,o),this._ivp=r.slice(i,i+o),this._iv2p=s}}),r.Decryptor=r.extend({processBlock:function(r,i){var n=this._cipher,o=n.blockSize;this._ivp===t&&(this._ivp=this._iv.slice(0,o),this._iv2p=this._iv.slice(o,2*o));var s=r.slice(i,i+o);e(r,this._iv2p,i,o),n.decryptBlock(r,i),e(r,this._ivp,i,o),this._ivp=s,this._iv2p=r.slice(i,i+o)}}),r}(),e.pad={}),v=d.Pkcs7={pad:function(t,e){for(var r=4*e,i=r-t.sigBytes%r,o=i<<24|i<<16|i<<8|i,s=[],c=0;i>c;c+=4)s.push(o);var a=n.create(s,i);t.concat(a)},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},y=(d.NoPadding={pad:function(){},unpad:function(){}},r.BlockCipher=h.extend({cfg:h.cfg.extend({mode:l,padding:v}),reset:function(){h.reset.call(this);var t=this.cfg,e=t.iv,r=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var i=r.createEncryptor;else{var i=r.createDecryptor;this._minBufferSize=1}this._mode=i.call(r,this,e&&e.words)},_doProcessBlock:function(t,e){this._mode.processBlock(t,e)},_doFinalize:function(){var t=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){t.pad(this._data,this.blockSize);var e=this._process(!0)}else{var e=this._process(!0);t.unpad(e)}return e},blockSize:4}),r.CipherParams=i.extend({init:function(t){this.mixIn(t)},toString:function(t){return(t||this.formatter).stringify(this)}})),_=e.format={},g=_.OpenSSL={stringify:function(t){var e=t.ciphertext,r=t.salt;if(r)var i=n.create([1398893684,1701076831]).concat(r).concat(e);else var i=e;return i.toString(c)},parse:function(t){var e=c.parse(t),r=e.words;if(1398893684==r[0]&&1701076831==r[1]){var i=n.create(r.slice(2,4));r.splice(0,4),e.sigBytes-=16}return y.create({ciphertext:e,salt:i})}},k=r.SerializableCipher=i.extend({cfg:i.extend({format:g}),encrypt:function(t,e,r,i){i=this.cfg.extend(i);var n=t.createEncryptor(r,i),o=n.finalize(e),s=n.cfg;return y.create({ciphertext:o,key:r,iv:s.iv,algorithm:t,mode:s.mode,padding:s.padding,blockSize:t.blockSize,formatter:i.format})},decrypt:function(t,e,r,i){i=this.cfg.extend(i),e=this._parse(e,i.format);var n=t.createDecryptor(r,i).finalize(e.ciphertext);return n},_parse:function(t,e){return"string"==typeof t?e.parse(t,this):t}}),B=e.kdf={},S=B.OpenSSL={execute:function(t,e,r,i){i||(i=n.random(8));var o=f.create({keySize:e+r}).compute(t,i),s=n.create(o.words.slice(e),4*r);return o.sigBytes=4*e,y.create({key:o,iv:s,salt:i})}},x=r.PasswordBasedCipher=k.extend({cfg:k.cfg.extend({kdf:S}),encrypt:function(t,e,r,i){i=this.cfg.extend(i);var n=i.kdf.execute(r,t.keySize,t.ivSize);i.iv=n.iv;var o=k.encrypt.call(this,t,e,n.key,i);return o.mixIn(n),o},decrypt:function(t,e,r,i){i=this.cfg.extend(i),e=this._parse(e,i.format);var n=i.kdf.execute(r,t.keySize,t.ivSize,e.salt);i.iv=n.iv;var o=k.decrypt.call(this,t,e,n.key,i);return o}})}(),function(){var t=CryptoJS,e=t.lib,r=e.BlockCipher,i=t.algo,n=[],o=[],s=[],c=[],a=[],f=[],h=[],u=[],p=[],l=[];!function(){for(var t=[],e=0;256>e;e++)t[e]=128>e?e<<1:e<<1^283;for(var r=0,i=0,e=0;256>e;e++){var d=i^i<<1^i<<2^i<<3^i<<4;d=d>>>8^255&d^99,n[r]=d,o[d]=r;var v=t[r],y=t[v],_=t[y],g=257*t[d]^16843008*d;s[r]=g<<24|g>>>8,c[r]=g<<16|g>>>16,a[r]=g<<8|g>>>24,f[r]=g;var g=16843009*_^65537*y^257*v^16843008*r;h[d]=g<<24|g>>>8,u[d]=g<<16|g>>>16,p[d]=g<<8|g>>>24,l[d]=g,r?(r=v^t[t[t[_^v]]],i^=t[t[i]]):r=i=1}}();var d=[0,1,2,4,8,16,32,64,128,27,54],v=i.AES=r.extend({_doReset:function(){for(var t=this._key,e=t.words,r=t.sigBytes/4,i=this._nRounds=r+6,o=4*(i+1),s=this._keySchedule=[],c=0;o>c;c++)if(r>c)s[c]=e[c];else{var a=s[c-1];c%r?r>6&&c%r==4&&(a=n[a>>>24]<<24|n[a>>>16&255]<<16|n[a>>>8&255]<<8|n[255&a]):(a=a<<8|a>>>24,a=n[a>>>24]<<24|n[a>>>16&255]<<16|n[a>>>8&255]<<8|n[255&a],a^=d[c/r|0]<<24),s[c]=s[c-r]^a}for(var f=this._invKeySchedule=[],v=0;o>v;v++){var c=o-v;if(v%4)var a=s[c];else var a=s[c-4];f[v]=4>v||4>=c?a:h[n[a>>>24]]^u[n[a>>>16&255]]^p[n[a>>>8&255]]^l[n[255&a]]}},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._keySchedule,s,c,a,f,n)},decryptBlock:function(t,e){var r=t[e+1];t[e+1]=t[e+3],t[e+3]=r,this._doCryptBlock(t,e,this._invKeySchedule,h,u,p,l,o);var r=t[e+1];t[e+1]=t[e+3],t[e+3]=r},_doCryptBlock:function(t,e,r,i,n,o,s,c){for(var a=this._nRounds,f=t[e]^r[0],h=t[e+1]^r[1],u=t[e+2]^r[2],p=t[e+3]^r[3],l=4,d=1;a>d;d++){var v=i[f>>>24]^n[h>>>16&255]^o[u>>>8&255]^s[255&p]^r[l++],y=i[h>>>24]^n[u>>>16&255]^o[p>>>8&255]^s[255&f]^r[l++],_=i[u>>>24]^n[p>>>16&255]^o[f>>>8&255]^s[255&h]^r[l++],g=i[p>>>24]^n[f>>>16&255]^o[h>>>8&255]^s[255&u]^r[l++];f=v,h=y,u=_,p=g}var v=(c[f>>>24]<<24|c[h>>>16&255]<<16|c[u>>>8&255]<<8|c[255&p])^r[l++],y=(c[h>>>24]<<24|c[u>>>16&255]<<16|c[p>>>8&255]<<8|c[255&f])^r[l++],_=(c[u>>>24]<<24|c[p>>>16&255]<<16|c[f>>>8&255]<<8|c[255&h])^r[l++],g=(c[p>>>24]<<24|c[f>>>16&255]<<16|c[h>>>8&255]<<8|c[255&u])^r[l++];t[e]=v,t[e+1]=y,t[e+2]=_,t[e+3]=g},keySize:8});t.AES=r._createHelper(v)}();var sha1;!function(t){function e(t){for(var e,r="",i=7;i>=0;--i)e=t>>>(i<<2)&15,r+=e.toString(16);return r}function r(t){for(var e,r=[],i=3;i>=0;--i)e=t>>8*i&255,r.push(e);return r}function i(t,e){return t<>>32-e}function n(t){t=t.replace(/[\u0080-\u07ff]/g,function(t){var e=t.charCodeAt(0);return String.fromCharCode(192|e>>6,128|63&e)}),t=t.replace(/[\u0080-\uffff]/g,function(t){var e=t.charCodeAt(0);return String.fromCharCode(224|e>>12,128|e>>6&63,128|63&e)});for(var e=t.length,r=new Uint8Array(e),i=0;e>i;++i)r[i]=t.charCodeAt(i);return r.buffer}function o(t){for(var e=t.length,r=new Uint8Array(e),i=0;e>i;++i)r[i]=t[i];return r.buffer}function s(t,s){var c;c=t instanceof ArrayBuffer?t:"[object Array]"==Object.prototype.toString.apply(t)?o(t):n(String(t));var h,u,p=1732584193,l=4023233417,d=2562383102,v=271733878,y=3285377520,_=c.byteLength,g=_<<3,k=g+65,B=Math.ceil(k/512)<<9,S=B>>>3,x=S>>>2,m=new f(x),C=m.bytes,w=new Uint32Array(80),z=new Uint8Array(c);for(h=0;_>h;++h)C[h]=z[h];for(C[_]=128,m.set(x-2,Math.floor(g/a)),m.set(x-1,4294967295&g),h=0;x>h;h+=16){for(u=0;16>u;++u)w[u]=m.get(h+u);for(;80>u;++u)w[u]=i(w[u-3]^w[u-8]^w[u-14]^w[u-16],1);var b,E,M,A=p,D=l,O=d,R=v,F=y;for(u=0;80>u;++u)20>u?(b=D&O|~D&R,E=1518500249):40>u?(b=D^O^R,E=1859775393):60>u?(b=D&O^D&R^O&R,E=2400959708):(b=D^O^R,E=3395469782),M=i(A,5)+b+F+E+w[u]&4294967295,F=R,R=O,O=i(D,30),D=A,A=M;p=p+A&4294967295,l=l+D&4294967295,d=d+O&4294967295,v=v+R&4294967295,y=y+F&4294967295}return s?r(p).concat(r(l),r(d),r(v),r(y)):e(p)+e(l)+e(d)+e(v)+e(y)}var c=Math.pow(2,24),a=Math.pow(2,32),f=function(){function t(t){this.bytes=new Uint8Array(t<<2)}return t.prototype.get=function(t){return t<<=2,this.bytes[t]*c+(this.bytes[t+1]<<16|this.bytes[t+2]<<8|this.bytes[t+3])},t.prototype.set=function(t,e){var r=Math.floor(e/c),i=e-r*c;t<<=2,this.bytes[t]=r,this.bytes[t+1]=i>>16,this.bytes[t+2]=i>>8&255,this.bytes[t+3]=255&i},t}();t.hash=s}(sha1||(sha1={})); (function(){"use strict";function t(t){throw t}function r(t,r){var e=t.split("."),i=c;!(e[0]in i)&&i.execScript&&i.execScript("var "+e[0]);for(var n;e.length&&(n=e.shift());)e.length||r===f?i=i[n]?i[n]:i[n]={}:i[n]=r}function e(t,r,e){var i,n="number"==typeof r?r:r=0,s="number"==typeof e?e:t.length;for(i=-1,n=7&s;n--;++r)i=i>>>8^g[255&(i^t[r])];for(n=s>>3;n--;r+=8)i=i>>>8^g[255&(i^t[r])],i=i>>>8^g[255&(i^t[r+1])],i=i>>>8^g[255&(i^t[r+2])],i=i>>>8^g[255&(i^t[r+3])],i=i>>>8^g[255&(i^t[r+4])],i=i>>>8^g[255&(i^t[r+5])],i=i>>>8^g[255&(i^t[r+6])],i=i>>>8^g[255&(i^t[r+7])];return(4294967295^i)>>>0}function i(){}function n(t){var r,e,i,n,s,a,h,o,u,f=t.length,c=0,p=Number.POSITIVE_INFINITY;for(o=0;f>o;++o)t[o]>c&&(c=t[o]),t[o]=i;){for(o=0;f>o;++o)if(t[o]===i){for(a=0,h=n,u=0;i>u;++u)a=a<<1|1&h,h>>=1;for(u=a;r>u;u+=s)e[u]=i<<16|o;++n}++i,n<<=1,s<<=1}return[e,c,p]}function s(r,e){switch(this.i=[],this.j=32768,this.d=this.f=this.c=this.n=0,this.input=l?new Uint8Array(r):r,this.o=!1,this.k=k,this.w=!1,(e||!(e={}))&&(e.index&&(this.c=e.index),e.bufferSize&&(this.j=e.bufferSize),e.bufferType&&(this.k=e.bufferType),e.resize&&(this.w=e.resize)),this.k){case m:this.a=32768,this.b=new(l?Uint8Array:Array)(32768+this.j+258);break;case k:this.a=0,this.b=new(l?Uint8Array:Array)(this.j),this.e=this.D,this.q=this.A,this.l=this.C;break;default:t(Error("invalid inflate mode"))}}function a(r,e){for(var i,n=r.f,s=r.d,a=r.input,h=r.c;e>s;)i=a[h++],i===f&&t(Error("input buffer is broken")),n|=i<>>e,r.d=s-e,r.c=h,i}function h(t,r){for(var e,i,n,s=t.f,a=t.d,h=t.input,o=t.c,u=r[0],c=r[1];c>a&&(e=h[o++],e!==f);)s|=e<>>16,t.f=s>>n,t.d=a-n,t.c=o,65535&i}function o(t){function r(t,r,e){var i,n,s,o;for(o=0;t>o;)switch(i=h(this,r)){case 16:for(s=3+a(this,2);s--;)e[o++]=n;break;case 17:for(s=3+a(this,3);s--;)e[o++]=0;n=0;break;case 18:for(s=11+a(this,7);s--;)e[o++]=0;n=0;break;default:n=e[o++]=i}return e}var e,i,s,o,u=a(t,5)+257,f=a(t,5)+1,c=a(t,4)+4,p=new(l?Uint8Array:Array)(N.length);for(o=0;c>o;++o)p[N[o]]=a(t,3);e=n(p),i=new(l?Uint8Array:Array)(u),s=new(l?Uint8Array:Array)(f),t.l(n(r.call(t,u,e,i)),n(r.call(t,f,e,s)))}function u(t){this.input=t,this.c=0,this.m=[],this.s=!1}var f=void 0,c=this,l="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array;new(l?Uint8Array:Array)(256);var p;for(p=0;256>p;++p)for(var y=p,b=7,y=y>>>1;y;y>>>=1)--b;var d=[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],g=l?new Uint32Array(d):d;i.prototype.getName=function(){return this.name},i.prototype.getData=function(){return this.data},i.prototype.G=function(){return this.H},r("Zlib.GunzipMember",i),r("Zlib.GunzipMember.prototype.getName",i.prototype.getName),r("Zlib.GunzipMember.prototype.getData",i.prototype.getData),r("Zlib.GunzipMember.prototype.getMtime",i.prototype.G);var v,A=[];for(v=0;288>v;v++)switch(!0){case 143>=v:A.push([v+48,8]);break;case 255>=v:A.push([v-144+400,9]);break;case 279>=v:A.push([v-256+0,7]);break;case 287>=v:A.push([v-280+192,8]);break;default:t("invalid literal: "+v)}var w=function(){function r(r){switch(!0){case 3===r:return[257,r-3,0];case 4===r:return[258,r-4,0];case 5===r:return[259,r-5,0];case 6===r:return[260,r-6,0];case 7===r:return[261,r-7,0];case 8===r:return[262,r-8,0];case 9===r:return[263,r-9,0];case 10===r:return[264,r-10,0];case 12>=r:return[265,r-11,1];case 14>=r:return[266,r-13,1];case 16>=r:return[267,r-15,1];case 18>=r:return[268,r-17,1];case 22>=r:return[269,r-19,2];case 26>=r:return[270,r-23,2];case 30>=r:return[271,r-27,2];case 34>=r:return[272,r-31,2];case 42>=r:return[273,r-35,3];case 50>=r:return[274,r-43,3];case 58>=r:return[275,r-51,3];case 66>=r:return[276,r-59,3];case 82>=r:return[277,r-67,4];case 98>=r:return[278,r-83,4];case 114>=r:return[279,r-99,4];case 130>=r:return[280,r-115,4];case 162>=r:return[281,r-131,5];case 194>=r:return[282,r-163,5];case 226>=r:return[283,r-195,5];case 257>=r:return[284,r-227,5];case 258===r:return[285,r-258,0];default:t("invalid length: "+r)}}var e,i,n=[];for(e=3;258>=e;e++)i=r(e),n[e]=i[2]<<24|i[1]<<16|i[0];return n}();l&&new Uint32Array(w);var m=0,k=1;s.prototype.g=function(){for(;!this.o;){var r=a(this,3);switch(1&r&&(this.o=!0),r>>>=1){case 0:var e=this.input,i=this.c,n=this.b,s=this.a,h=f,u=f,c=f,p=n.length,y=f;switch(this.d=this.f=0,h=e[i++],h===f&&t(Error("invalid uncompressed block header: LEN (first byte)")),u=h,h=e[i++],h===f&&t(Error("invalid uncompressed block header: LEN (second byte)")),u|=h<<8,h=e[i++],h===f&&t(Error("invalid uncompressed block header: NLEN (first byte)")),c=h,h=e[i++],h===f&&t(Error("invalid uncompressed block header: NLEN (second byte)")),c|=h<<8,u===~c&&t(Error("invalid uncompressed block header: length verify")),i+u>e.length&&t(Error("input buffer is broken")),this.k){case m:for(;s+u>n.length;){if(y=p-s,u-=y,l)n.set(e.subarray(i,i+y),s),s+=y,i+=y;else for(;y--;)n[s++]=e[i++];this.a=s,n=this.e(),s=this.a}break;case k:for(;s+u>n.length;)n=this.e({t:2});break;default:t(Error("invalid inflate mode"))}if(l)n.set(e.subarray(i,i+u),s),s+=u,i+=u;else for(;u--;)n[s++]=e[i++];this.c=i,this.a=s,this.b=n;break;case 1:this.l(q,F);break;case 2:o(this);break;default:t(Error("unknown BTYPE: "+r))}}return this.q()};var U,E,z=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],N=l?new Uint16Array(z):z,S=[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],G=l?new Uint16Array(S):S,C=[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],x=l?new Uint8Array(C):C,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],M=l?new Uint16Array(I):I,Z=[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],j=l?new Uint8Array(Z):Z,D=new(l?Uint8Array:Array)(288);for(U=0,E=D.length;E>U;++U)D[U]=143>=U?8:255>=U?9:279>=U?7:8;var L,T,q=n(D),B=new(l?Uint8Array:Array)(30);for(L=0,T=B.length;T>L;++L)B[L]=5;var F=n(B);s.prototype.l=function(t,r){var e=this.b,i=this.a;this.r=t;for(var n,s,o,u,f=e.length-258;256!==(n=h(this,t));)if(256>n)i>=f&&(this.a=i,e=this.e(),i=this.a),e[i++]=n;else for(s=n-257,u=G[s],0=f&&(this.a=i,e=this.e(),i=this.a);u--;)e[i]=e[i++-o];for(;8<=this.d;)this.d-=8,this.c--;this.a=i},s.prototype.C=function(t,r){var e=this.b,i=this.a;this.r=t;for(var n,s,o,u,f=e.length;256!==(n=h(this,t));)if(256>n)i>=f&&(e=this.e(),f=e.length),e[i++]=n;else for(s=n-257,u=G[s],0f&&(e=this.e(),f=e.length);u--;)e[i]=e[i++-o];for(;8<=this.d;)this.d-=8,this.c--;this.a=i},s.prototype.e=function(){var t,r,e=new(l?Uint8Array:Array)(this.a-32768),i=this.a-32768,n=this.b;if(l)e.set(n.subarray(32768,e.length));else for(t=0,r=e.length;r>t;++t)e[t]=n[t+32768];if(this.i.push(e),this.n+=e.length,l)n.set(n.subarray(i,i+32768));else for(t=0;32768>t;++t)n[t]=n[i+t];return this.a=32768,n},s.prototype.D=function(t){var r,e,i,n,s=this.input.length/this.c+1|0,a=this.input,h=this.b;return t&&("number"==typeof t.t&&(s=t.t),"number"==typeof t.z&&(s+=t.z)),2>s?(e=(a.length-this.c)/this.r[2],n=258*(e/2)|0,i=nr;++r)for(t=h[r],i=0,n=t.length;n>i;++i)o[s++]=t[i];for(r=32768,e=this.a;e>r;++r)o[s++]=a[r];return this.i=[],this.buffer=o},s.prototype.A=function(){var t,r=this.a;return l?this.w?(t=new Uint8Array(r),t.set(this.b.subarray(0,r))):t=this.b.subarray(0,r):(this.b.length>r&&(this.b.length=r),t=this.b),this.buffer=t},u.prototype.F=function(){return this.s||this.g(),this.m.slice()},u.prototype.g=function(){for(var r=this.input.length;this.c>>0,e(o,f,f)!==d&&t(Error("invalid CRC-32 checksum: 0x"+e(o,f,f).toString(16)+" / 0x"+d.toString(16))),n.L=a=(g[v++]|g[v++]<<8|g[v++]<<16|g[v++]<<24)>>>0,(4294967295&o.length)!==a&&t(Error("invalid input size: "+(4294967295&o.length)+" / "+a)),this.m.push(n),this.c=v}this.s=!0;var A,w,m,k=this.m,U=0,E=0;for(A=0,w=k.length;w>A;++A)E+=k[A].data.length;if(l)for(m=new Uint8Array(E),A=0;w>A;++A)m.set(k[A].data,U),U+=k[A].data.length;else{for(m=[],A=0;w>A;++A)m[A]=k[A].data;m=Array.prototype.concat.apply([],m)}return m},r("Zlib.Gunzip",u),r("Zlib.Gunzip.prototype.decompress",u.prototype.g),r("Zlib.Gunzip.prototype.getMembers",u.prototype.F)}).call(this); Config=window.Config||{},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"}],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"}],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"}],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"}],type:"MsgResendReq"},{id:"-630588590",predicate:"msgs_state_req",params:[{name:"msg_ids",type:"Vector"}],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"},{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:"1212668202",predicate:"inputMediaUploadedVideo",params:[{name:"file",type:"InputFile"},{name:"duration",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"}],type:"InputMedia"},{id:"-433544891",predicate:"inputMediaUploadedThumbVideo",params:[{name:"file",type:"InputFile"},{name:"thumb",type:"InputFile"},{name:"duration",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"}],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:"1912944108",predicate:"userSelf",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"phone",type:"string"},{name:"photo",type:"UserProfilePhoto"},{name:"status",type:"UserStatus"},{name:"inactive",type:"Bool"}],type:"User"},{id:"-218397927",predicate:"userContact",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"access_hash",type:"long"},{name:"phone",type:"string"},{name:"photo",type:"UserProfilePhoto"},{name:"status",type:"UserStatus"}],type:"User"},{id:"585682608",predicate:"userRequest",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"access_hash",type:"long"},{name:"phone",type:"string"},{name:"photo",type:"UserProfilePhoto"},{name:"status",type:"UserStatus"}],type:"User"},{id:"1377093789",predicate:"userForeign",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"access_hash",type:"long"},{name:"photo",type:"UserProfilePhoto"},{name:"status",type:"UserStatus"}],type:"User"},{id:"-1298475060",predicate:"userDeleted",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",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"},{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:"585853626",predicate:"message",params:[{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"to_id",type:"Peer"},{name:"out",type:"Bool"},{name:"unread",type:"Bool"},{name:"date",type:"int"},{name:"message",type:"string"},{name:"media",type:"MessageMedia"}],type:"Message"},{id:"99903492",predicate:"messageForwarded",params:[{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:"out",type:"Bool"},{name:"unread",type:"Bool"},{name:"date",type:"int"},{name:"message",type:"string"},{name:"media",type:"MessageMedia"}],type:"Message"},{id:"-1618124613",predicate:"messageService",params:[{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"to_id",type:"Peer"},{name:"out",type:"Bool"},{name:"unread",type:"Bool"},{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"}],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:"558533855",predicate:"dialog",params:[{name:"peer",type:"Peer"},{name:"top_message",type:"int"},{name:"unread_count",type:"int"}],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"}],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:"1510253727",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:"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"},{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:"-360210539",predicate:"contactFound",params:[{name:"user_id",type:"int"}],type:"ContactFound"},{id:"1038193057",predicate:"contactSuggested",params:[{name:"user_id",type:"int"},{name:"mutual_contacts",type:"int"}],type:"ContactSuggested"},{id:"-1434994573",predicate:"contactStatus",params:[{name:"user_id",type:"int"},{name:"expires",type:"int"}],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"},{name:"users",type:"Vector"}],type:"contacts.Contacts"},{id:"-1219778094",predicate:"contacts.contactsNotModified",params:[],type:"contacts.Contacts"},{id:"-775091636",predicate:"contacts.importedContacts",params:[{name:"imported",type:"Vector"},{name:"users",type:"Vector"}],type:"contacts.ImportedContacts"},{id:"471043349",predicate:"contacts.blocked",params:[{name:"blocked",type:"Vector"},{name:"users",type:"Vector"}],type:"contacts.Blocked"},{id:"-1878523231",predicate:"contacts.blockedSlice",params:[{name:"count",type:"int"},{name:"blocked",type:"Vector"},{name:"users",type:"Vector"}],type:"contacts.Blocked"},{id:"90570766",predicate:"contacts.found",params:[{name:"results",type:"Vector"},{name:"users",type:"Vector"}],type:"contacts.Found"},{id:"1447681221",predicate:"contacts.suggested",params:[{name:"results",type:"Vector"},{name:"users",type:"Vector"}],type:"contacts.Suggested"},{id:"364538944",predicate:"messages.dialogs",params:[{name:"dialogs",type:"Vector"},{name:"messages",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],type:"messages.Dialogs"},{id:"1910543603",predicate:"messages.dialogsSlice",params:[{name:"count",type:"int"},{name:"dialogs",type:"Vector"},{name:"messages",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],type:"messages.Dialogs"},{id:"-1938715001",predicate:"messages.messages",params:[{name:"messages",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],type:"messages.Messages"},{id:"189033187",predicate:"messages.messagesSlice",params:[{name:"count",type:"int"},{name:"messages",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],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"},{name:"users",type:"Vector"}],type:"messages.Message"},{id:"-1768654661",predicate:"messages.statedMessages",params:[{name:"messages",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"},{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"},{name:"users",type:"Vector"},{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"}],type:"messages.Chat"},{id:"-2125411368",predicate:"messages.chats",params:[{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],type:"messages.Chats"},{id:"-438840932",predicate:"messages.chatFull",params:[{name:"full_chat",type:"ChatFull"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],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:"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"},{name:"pts",type:"int"}],type:"Update"},{id:"-1456734682",predicate:"updateDeleteMessages",params:[{name:"messages",type:"Vector"},{name:"pts",type:"int"}],type:"Update"},{id:"-782376883",predicate:"updateRestoreMessages",params:[{name:"messages",type:"Vector"},{name:"pts",type:"int"}],type:"Update"},{id:"1806337288",predicate:"updateUserTyping",params:[{name:"user_id",type:"int"}],type:"Update"},{id:"1011273702",predicate:"updateChatUserTyping",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"int"}],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:"-635250259",predicate:"updateUserName",params:[{name:"user_id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",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"},{name:"new_encrypted_messages",type:"Vector"},{name:"other_updates",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"},{name:"state",type:"updates.State"}],type:"updates.Difference"},{id:"-1459938943",predicate:"updates.differenceSlice",params:[{name:"new_messages",type:"Vector"},{name:"new_encrypted_messages",type:"Vector"},{name:"other_updates",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"},{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"},{name:"users",type:"Vector"},{name:"chats",type:"Vector"},{name:"date",type:"int"},{name:"seq_start",type:"int"},{name:"seq",type:"int"}],type:"Updates"},{id:"1957577280",predicate:"updates",params:[{name:"updates",type:"Vector"},{name:"users",type:"Vector"},{name:"chats",type:"Vector"},{name:"date",type:"int"},{name:"seq",type:"int"}],type:"Updates"},{id:"-1916114267",predicate:"photos.photos",params:[{name:"photos",type:"Vector"},{name:"users",type:"Vector"}],type:"photos.Photos"},{id:"352657236",predicate:"photos.photosSlice",params:[{name:"count",type:"int"},{name:"photos",type:"Vector"},{name:"users",type:"Vector"}],type:"photos.Photos"},{id:"539045032",predicate:"photos.photo",params:[{name:"photo",type:"Photo"},{name:"users",type:"Vector"}],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"},{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"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"},{name:"links",type:"Vector"},{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"},{name:"users",type:"Vector"},{name:"links",type:"Vector"},{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"}],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"},{name:"users",type:"Vector"},{name:"seq",type:"int"}],type:"geochats.StatedMessage"},{id:"1224651367",predicate:"geochats.located",params:[{name:"results",type:"Vector"},{name:"messages",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],type:"geochats.Located"},{id:"-783127119",predicate:"geochats.messages",params:[{name:"messages",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],type:"geochats.Messages"},{id:"-1135057944",predicate:"geochats.messagesSlice",params:[{name:"count",type:"int"},{name:"messages",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],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:"-1717290801",predicate:"decryptedMessageLayer",params:[{name:"layer",type:"int"},{name:"message",type:"DecryptedMessage"}],type:"DecryptedMessageLayer"},{id:"528568095",predicate:"decryptedMessage",params:[{name:"random_id",type:"long"},{name:"random_bytes",type:"bytes"},{name:"message",type:"string"},{name:"media",type:"DecryptedMessageMedia"}],type:"DecryptedMessage"},{id:"-1438109059",predicate:"decryptedMessageService",params:[{name:"random_id",type:"long"},{name:"random_bytes",type:"bytes"},{name:"action",type:"DecryptedMessageAction"}],type:"DecryptedMessage"},{id:"144661578",predicate:"decryptedMessageMediaEmpty",params:[],type:"DecryptedMessageMedia"},{id:"846826124",predicate:"decryptedMessageMediaPhoto",params:[{name:"thumb",type:"bytes"},{name:"thumb_w",type:"int"},{name:"thumb_h",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"},{name:"size",type:"int"},{name:"key",type:"bytes"},{name:"iv",type:"bytes"}],type:"DecryptedMessageMedia"},{id:"1290694387",predicate:"decryptedMessageMediaVideo",params:[{name:"thumb",type:"bytes"},{name:"thumb_w",type:"int"},{name:"thumb_h",type:"int"},{name:"duration",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"},{name:"size",type:"int"},{name:"key",type:"bytes"},{name:"iv",type:"bytes"}],type:"DecryptedMessageMedia"},{id:"893913689",predicate:"decryptedMessageMediaGeoPoint",params:[{name:"lat",type:"double"},{name:"long",type:"double"}],type:"DecryptedMessageMedia"},{id:"1485441687",predicate:"decryptedMessageMediaContact",params:[{name:"phone_number",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"user_id",type:"int"}],type:"DecryptedMessageMedia"},{id:"-1586283796",predicate:"decryptedMessageActionSetMessageTTL",params:[{name:"ttl_seconds",type:"int"}],type:"DecryptedMessageAction"},{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"}],type:"Update"},{id:"1638323254",predicate:"inputMediaUploadedAudio",params:[{name:"file",type:"InputFile"},{name:"duration",type:"int"}],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:"-1332395189",predicate:"decryptedMessageMediaDocument",params:[{name:"thumb",type:"bytes"},{name:"thumb_w",type:"int"},{name:"thumb_h",type:"int"},{name:"file_name",type:"string"},{name:"mime_type",type:"string"},{name:"size",type:"int"},{name:"key",type:"bytes"},{name:"iv",type:"bytes"}],type:"DecryptedMessageMedia"},{id:"1619031439",predicate:"decryptedMessageMediaAudio",params:[{name:"duration",type:"int"},{name:"size",type:"int"},{name:"key",type:"bytes"},{name:"iv",type:"bytes"}],type:"DecryptedMessageMedia"},{id:"1483311320",predicate:"audioEmpty",params:[{name:"id",type:"long"}],type:"Audio"},{id:"1114908135",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:"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"}],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"},{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"},{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:"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"},{id:"227648840",method:"users.getUsers",params:[{name:"id",type:"Vector"}],type:"Vector"},{id:"-902781519",method:"users.getFullUser",params:[{name:"id",type:"InputUser"}],type:"UserFull"},{id:"-995929106",method:"contacts.getStatuses",params:[],type:"Vector"},{id:"583445000",method:"contacts.getContacts",params:[{name:"hash",type:"string"}],type:"contacts.Contacts"},{id:"-634342611",method:"contacts.importContacts",params:[{name:"contacts",type:"Vector"},{name:"replace",type:"Bool"}],type:"contacts.ImportedContacts"},{id:"301470424",method:"contacts.search",params:[{name:"q",type:"string"},{name:"limit",type:"int"}],type:"contacts.Found"},{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"}],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:"1109588596",method:"messages.getMessages",params:[{name:"id",type:"Vector"}],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:"-1336990448",method:"messages.readHistory",params:[{name:"peer",type:"InputPeer"},{name:"max_id",type:"int"},{name:"offset",type:"int"}],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"}],type:"Vector"},{id:"962567550",method:"messages.restoreMessages",params:[{name:"id",type:"Vector"}],type:"Vector"},{id:"682347368",method:"messages.receivedMessages",params:[{name:"max_id",type:"int"}],type:"Vector"},{id:"1905801705",method:"messages.setTyping",params:[{name:"peer",type:"InputPeer"},{name:"typing",type:"Bool"}],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"}],type:"messages.StatedMessages"},{id:"1013621127",method:"messages.getChats",params:[{name:"id",type:"Vector"}],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"},{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"}],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"},{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"},{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:"-576320196",method:"invokeWithLayer12",params:[{name:"query",type:"!X"}],type:"X"}]},Config.Schema.API.layer=12,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":["🌃",["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"]],"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"],"t;t+=2)r.push(parseInt(e.substr(t,2),16));return r}function bytesToBase64(e){for(var t,n="",r=e.length,o=0,s=0;r>s;s++)t=s%3,o|=e[s]<<(16>>>t&24),(2===t||r-s===1)&&(n+=String.fromCharCode(uint6ToBase64(o>>>18&63),uint6ToBase64(o>>>12&63),uint6ToBase64(o>>>6&63),uint6ToBase64(63&o)),o=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 bytesCmp(e,t){var n=e.length;if(n!=t.length)return!1;for(var r=0;n>r;r++)if(e[r]!=t[r])return!1;return!0}function bytesXor(e,t){for(var n=e.length,r=[],o=0;n>o;++o)r[o]=e[o]^t[o];return r}function bytesToWords(e){for(var t=e.length,n=[],r=0;t>r;r++)n[r>>>2]|=e[r]<<24-r%4*8;return new CryptoJS.lib.WordArray.init(n,t)}function bytesFromWords(e){for(var t=e.words,n=e.sigBytes,r=[],o=0;n>o;o++)r.push(t[o>>>2]>>>24-o%4*8&255);return r}function bytesFromBigInt(e,t){for(var n=e.toByteArray();!n[0]&&(!t||n.length>t);)n=n.slice(1);return n}function bytesToArrayBuffer(e){return new Uint8Array(e).buffer}function bytesFromArrayBuffer(e){for(var t=e.byteLength,n=new Uint8Array(e),r=[],o=0;t>o;++o)r[o]=n[o];return r}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 sha1Hash(e){var t=sha1.hash(e,!0);return t}function rsaEncrypt(e,t){var n=255-t.length;if(n>0){var r=new Array(n);(new SecureRandom).nextBytes(r),t=t.concat(r)}var o=new BigInteger(e.modulus,16),s=new BigInteger(e.exponent,16),i=new BigInteger(t),a=i.modPowInt(s,o),c=bytesFromBigInt(a,256);return c}function aesEncrypt(e,t,n){var r=16-e.length%16;if(r>0&&16>r){var o=new Array(r);(new SecureRandom).nextBytes(o),e=e.concat(o)}var s=CryptoJS.AES.encrypt(bytesToWords(e),bytesToWords(t),{iv:bytesToWords(n),padding:CryptoJS.pad.NoPadding,mode:CryptoJS.mode.IGE}).ciphertext,i=bytesFromWords(s);return i}function aesDecrypt(e,t,n){var r=CryptoJS.AES.decrypt({ciphertext:bytesToWords(e)},bytesToWords(t),{iv:bytesToWords(n),padding:CryptoJS.pad.NoPadding,mode:CryptoJS.mode.IGE}),o=bytesFromWords(r);return o}function gzipUncompress(e){var t=new Zlib.Gunzip(e).decompress();return t}function nextRandomInt(e){return Math.floor(Math.random()*e)}function pqPrimeFactorization(e){console.log("PQ start");for(var t,n=new BigInteger(e),r=0,o=0;3>o;o++){for(var s=(15&nextRandomInt(128))+17,i=bigint(nextRandomInt(1e9)+1),a=i.clone(),c=1<f;f++){++r;for(var h=i.clone(),u=i.clone(),l=bigint(s);!u.equals(BigInteger.ZERO);)u.and(BigInteger.ONE).equals(BigInteger.ZERO)||(l=l.add(h),l.compareTo(n)>0&&(l=l.subtract(n))),h=h.add(h),h.compareTo(n)>0&&(h=h.subtract(n)),u=u.shiftRight(1);i=l.clone();var d=i.compareTo(a)<0?a.subtract(i):i.subtract(a);if(t=d.gcd(n),!t.equals(BigInteger.ONE))break;0==(f&f-1)&&(a=i.clone())}if(t.compareTo(BigInteger.ONE)>0)break}var g,p,y=n.divide(t);return t.compareTo(y)>0?(g=y,p=t):(g=t,p=y),console.log("PQ finish",r+" iterations"),[bytesFromBigInt(g),bytesFromBigInt(p)]}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.buffer=e,this.intView=new Uint32Array(this.buffer),this.byteView=new Uint8Array(this.buffer),this.mtproto=t.mtproto||!1,this}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(){for(var e=[],t=0;t>>",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),r=new Float64Array(t);r[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 r=n.length;253>=r?this.byteView[this.offset++]=r:(this.byteView[this.offset++]=254,this.byteView[this.offset++]=255&r,this.byteView[this.offset++]=(65280&r)>>8,this.byteView[this.offset++]=(16711680&r)>>16);for(var o=0;r>o;o++)this.byteView[this.offset++]=n.charCodeAt(o);for(;this.offset%4;)this.byteView[this.offset++]=0},TLSerialization.prototype.storeBytes=function(e,t){this.debug&&console.log(">>>",bytesToHex(e),(t||"")+":bytes"),this.checkLength(e.length+8);var n=e.length;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);for(var r=0;n>r;r++)this.byteView[this.offset++]=e[r];for(;this.offset%4;)this.byteView[this.offset++]=0},TLSerialization.prototype.storeIntBytes=function(e,t,n){var r=e.length;if(t%32||8*r!=t)throw new Error("Invalid bits: "+t+", "+e.length);this.debug&&console.log(">>>",bytesToHex(e),(n||"")+":int"+t),this.checkLength(r);for(var o=0;r>o;o++)this.byteView[this.offset++]=e[o]},TLSerialization.prototype.storeRawBytes=function(e,t){var n=e.length;this.debug&&console.log(">>>",bytesToHex(e),t||""),this.checkLength(n);for(var r=0;n>r;r++)this.byteView[this.offset++]=e[r]},TLSerialization.prototype.storeMethod=function(e,t){var n,r=this.mtproto?Config.Schema.MTProto:Config.Schema.API,o=!1;for(n=0;n=4*this.intView.length)throw new Error("Nothing to fetch");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),r=new Float64Array(t);return n[0]=this.readInt((e||"")+":double[low]"),n[1]=this.readInt((e||"")+":double[high]"),r[0]},TLDeserialization.prototype.fetchLong=function(e){var t=this.readInt((e||"")+":long[low]"),n=this.readInt((e||"")+":long[high]"),r=bigint(n).shiftLeft(32).add(bigint(t)).toString();return r},TLDeserialization.prototype.fetchBool=function(e){var t=this.readInt((e||"")+":bool");if(2574415285==t)return!0;if(3162085175==t)return!1;throw new Error("Unknown Bool constructor "+t)},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="",r=0;t>r;r++)n+=String.fromCharCode(this.byteView[this.offset++]);for(;this.offset%4;)this.offset++;try{var o=decodeURIComponent(escape(n))}catch(s){var o=n}return this.debug&&console.log("<<<",o,(e||"")+":string"),o},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;for(var n=[],r=0;t>r;r++)n.push(this.byteView[this.offset++]);for(;this.offset%4;)this.offset++;return this.debug&&console.log("<<<",bytesToHex(n),(e||"")+":bytes"),n},TLDeserialization.prototype.fetchIntBytes=function(e,t){if(e%32)throw new Error("Invalid bits: "+e);for(var n=e/8,r=[],o=0;n>o;o++)r.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(r),(t||"")+":int"+e),r},TLDeserialization.prototype.fetchRawBytes=function(e,t){e===!1&&(e=this.readInt((t||"")+"_length"));for(var n=[],r=0;e>r;r++)n.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(n),t||""),n},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,t);case"int256":return this.fetchIntBytes(256,t);case"int512":return this.fetchIntBytes(512,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 r=this.readInt(t+"[count]"),o=[];if(r>0)for(var s=e.substr(7,e.length-8),i=0;r>i;i++)o.push(this.fetchObject(s,t+"["+i+"]"));return o}var a=this.mtproto?Config.Schema.MTProto:Config.Schema.API,c=!1,f=!1;if("%"==e.charAt(0)){var h=e.substr(1);for(i=0;i=97&&e.charAt(0)<=122){for(i=0;ii[0]||r[0]==i[0]&&r[1]>=i[1])&&(i=[r[0],r[1]+4]),r=i,longFromInts(i[0],i[1])}function n(t,n){var s=t-Math.floor((n||tsNow())/1e3),i=Math.abs(o-s)>10;return e.set({server_time_offset:s}),r=[0,0],o=s,console.log("Apply server time",t,n,s,i),i}var r=[0,0],o=0;return e.get("server_time_offset").then(function(e){e&&(o=e)}),{generateID:t,applyServerTime:n}}]).factory("MtpAuthorizer",["MtpDcConfigurator","MtpRsaKeysManager","MtpSecureRandom","MtpMessageIdGenerator","$http","$q","$timeout",function(e,t,n,r,o,s,i){function a(t,n){var s=n.byteLength,i=new Int32Array(n),a=new TLSerialization;a.storeLongP(0,0,"auth_key_id"),a.storeLong(r.generateID(),"msg_id"),a.storeInt(s,"request_length");var c=a.getBuffer(),f=new Int32Array(c),h=c.byteLength,u=new ArrayBuffer(h+s),l=new Int32Array(u);return l.set(f),l.set(i,f.length),delete o.defaults.headers.post["Content-Type"],delete o.defaults.headers.common.Accept,"ArrayBufferView"in window||(l=l.buffer),o.post("http://"+e.chooseServer(t)+"/apiw1",l,{responseType:"arraybuffer",transformRequest:null,transformResponse:function(e){{var t=new TLDeserialization(e,{mtproto:!0});t.fetchLong("auth_key_id"),t.fetchLong("msg_id"),t.fetchInt("msg_len")}return rng_seed_time(),t}})}function c(e){var n=e.deferred,r=new TLSerialization({mtproto:!0});r.storeMethod("req_pq",{nonce:e.nonce}),console.log("Send req_pq",bytesToHex(e.nonce)),a(e.dcID,r.getBuffer()).then(function(r){var o=r.data,s=o.fetchObject("ResPQ");if("resPQ"!=s._)throw new Error("resPQ response invalid: "+s._);if(!bytesCmp(e.nonce,s.nonce))throw new Error("resPQ nonce mismatch");if(e.serverNonce=s.server_nonce,e.pq=s.pq,e.fingerprints=s.server_public_key_fingerprints,console.log("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");if(console.log("PQ factorization start"),window.Worker){var i=new Worker("js/lib/pq_worker.js");i.onmessage=function(t){e.p=t.data[0],e.q=t.data[1],f(e)},i.onerror=function(e){console.log("Worker error",e,e.stack),n.reject(e)},i.postMessage(e.pq)}else{var a=pqPrimeFactorization(e.pq);e.p=a[0],e.q=a[1],f(e)}},function(e){n.reject(e)}),i(function(){t.prepare()})}function f(e){var t=e.deferred;e.newNonce=new Array(32),n.nextBytes(e.newNonce);var r=new TLSerialization({mtproto:!0});r.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 o=sha1Hash(r.getBuffer()).concat(r.getBytes()),s=new TLSerialization({mtproto:!0});s.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,o)}),console.log("Send req_DH_params"),a(e.dcID,s.getBuffer()).then(function(n){var r=n.data,o=r.fetchObject("Server_DH_Params","RESPONSE");if("server_DH_params_fail"!=o._&&"server_DH_params_ok"!=o._)return t.reject(new Error("Server_DH_Params response invalid: "+o._)),!1;if(!bytesCmp(e.nonce,o.nonce))return t.reject(new Error("Server_DH_Params nonce mismatch")),!1;if(!bytesCmp(e.serverNonce,o.server_nonce))return t.reject(new Error("Server_DH_Params server_nonce mismatch")),!1;if("server_DH_params_fail"==o._){var s=sha1Hash(e.newNonce).slice(-16);return bytesCmp(s,o.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{h(e,o.encrypted_answer)}catch(i){return t.reject(i),!1}u(e)},function(e){t.reject(e)})}function h(e,t){e.localTime=tsNow(),e.tmpAesKey=sha1Hash(e.newNonce.concat(e.serverNonce)).concat(sha1Hash(e.serverNonce.concat(e.newNonce)).slice(0,12)),e.tmpAesIv=sha1Hash(e.serverNonce.concat(e.newNonce)).slice(12).concat(sha1Hash([].concat(e.newNonce,e.newNonce)),e.newNonce.slice(0,4));var n=aesDecrypt(t,e.tmpAesKey,e.tmpAesIv),o=n.slice(0,20),s=n.slice(20),i=bytesToArrayBuffer(s),a=new TLDeserialization(i,{mtproto:!0}),c=a.fetchObject("Server_DH_inner_data");if("server_DH_inner_data"!=c._)throw new Error("server_DH_inner_data response invalid: "+constructor);if(!bytesCmp(e.nonce,c.nonce))throw new Error("server_DH_inner_data nonce mismatch");if(!bytesCmp(e.serverNonce,c.server_nonce))throw new Error("server_DH_inner_data serverNonce mismatch");console.log("Done decrypting answer"),e.g=c.g,e.dhPrime=c.dh_prime,e.gA=c.g_a,e.serverTime=c.server_time,e.retry=0;var f=a.getOffset();if(!bytesCmp(o,sha1Hash(s.slice(0,f))))throw new Error("server_DH_inner_data SHA1-hash mismatch");r.applyServerTime(e.serverTime,e.localTime)}function u(e){var t=e.deferred;e.b=new Array(256),n.nextBytes(e.b);var r=new BigInteger(e.b),o=new BigInteger(e.dhPrime),s=bytesFromBigInt(bigint(e.g).modPow(r,o)),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:s},"Client_DH_Inner_Data");var c=sha1Hash(i.getBuffer()).concat(i.getBytes()),f=aesEncrypt(c,e.tmpAesKey,e.tmpAesIv),h=new TLSerialization({mtproto:!0});h.storeMethod("set_client_DH_params",{nonce:e.nonce,server_nonce:e.serverNonce,encrypted_data:f}),console.log("Send set_client_DH_params"),a(e.dcID,h.getBuffer()).then(function(n){var r=n.data,o=r.fetchObject("Set_client_DH_params_answer");if("dh_gen_ok"!=o._&&"dh_gen_retry"!=o._&&"dh_gen_fail"!=o._)return t.reject(new Error("Set_client_DH_params_answer response invalid: "+o._)),!1;if(!bytesCmp(e.nonce,o.nonce))return t.reject(new Error("Set_client_DH_params_answer nonce mismatch")),!1;if(!bytesCmp(e.serverNonce,o.server_nonce))return t.reject(new Error("Set_client_DH_params_answer server_nonce mismatch")),!1;var s=new BigInteger(e.b),i=new BigInteger(e.dhPrime),a=bytesFromBigInt(new BigInteger(e.gA).modPow(s,i)),c=sha1Hash(a),f=c.slice(0,8),h=c.slice(-8);switch(console.log("Got Set_client_DH_params_answer",o._),o._){case"dh_gen_ok":var l=sha1Hash(e.newNonce.concat([1],f)).slice(-16);if(!bytesCmp(l,o.new_nonce_hash1))return t.reject(new Error("Set_client_DH_params_answer new_nonce_hash1 mismatch")),!1;var d=bytesXor(e.newNonce.slice(0,8),e.serverNonce.slice(0,8));e.authKeyID=h,e.authKey=a,e.serverSalt=d,t.resolve(e);break;case"dh_gen_retry":var g=sha1Hash(e.newNonce.concat([2],f)).slice(-16);return bytesCmp(g,o.new_nonce_hash2)?u(e):(t.reject(new Error("Set_client_DH_params_answer new_nonce_hash2 mismatch")),!1);case"dh_gen_fail":var p=sha1Hash(e.newNonce.concat([3],f)).slice(-16);return bytesCmp(p,o.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)})}function l(t){if(void 0!==d[t])return d[t];for(var n=[],r=0;16>r;r++)n.push(nextRandomInt(255));if(!e.chooseServer(t))return s.reject(new Error("No server found for dc "+t));var o={dcID:t,nonce:n,deferred:s.defer()};return i(function(){c(o)}),d[t]=o.deferred.promise}var d={};return{auth:l}}]).factory("MtpAesService",["$q",function(e){if(!window.Worker)return{encrypt:function(t,n,r){return e.when(aesEncrypt(t,n,r))},decrypt:function(t,n,r){return e.when(aesDecrypt(t,n,r))}};var t=new Worker("js/lib/aes_worker.js"),n=0,r={};return t.onmessage=function(e){var t=r[e.data.taskID];void 0!==t&&(t.resolve(e.data.result),delete r[e.data.taskID])},t.onerror=function(e){console.log("AES Worker error",e,e.stack)},{encrypt:function(o,s,i){var a=e.defer();return r[n]=a,t.postMessage({taskID:n,task:"encrypt",bytes:o,keyBytes:s,ivBytes:i}),n++,a.promise},decrypt:function(o,s,i){var a=e.defer();return r[n]=a,t.postMessage({taskID:n,task:"decrypt",encryptedBytes:o,keyBytes:s,ivBytes:i}),n++,a.promise}}}]).factory("MtpSha1Service",["$q",function(e){if(!window.Worker)return{hash:function(t){return e.when(sha1Hash(t))}};var t=new Worker("js/lib/sha1_worker.js"),n=0,r={};return t.onmessage=function(e){var t=r[e.data.taskID];void 0!==t&&(t.resolve(e.data.result),delete r[e.data.taskID])},t.onerror=function(e){console.log("SHA-1 Worker error",e,e.stack)},{hash:function(o){var s=e.defer();return r[n]=s,t.postMessage({taskID:n,bytes:o}),n++,s.promise}}}]).factory("MtpNetworkerFactory",["MtpDcConfigurator","MtpMessageIdGenerator","MtpSecureRandom","MtpSha1Service","MtpAesService","AppConfigManager","$http","$q","$timeout","$interval","$rootScope",function(e,t,n,r,o,s,i,a,c,f,h){function u(e,t,n,r){r=r||{},this.dcID=e,this.iii=d++,this.authKey=t,this.authKeyID=sha1Hash(t).slice(-8),this.serverSalt=n,this.upload=r.fileUpload||r.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=f(this.checkLongPoll.bind(this),1e4),this.checkLongPoll(),g||(g=!0,h.offline=!0,h.offlineConnecting=!0)}var l,d=0,g=!1;return h.retryOnline=function(){$(document.body).trigger("online")},u.prototype.updateSession=function(){console.log("Update session"),this.seqNo=0,this.sessionID=new Array(8),n.nextBytes(this.sessionID)},u.prototype.updateSentMessage=function(e){var n=this.sentMessages[e];if(!n)return!1;var r=this;if(n.container){var o=[];angular.forEach(n.inner,function(e){var t=r.updateSentMessage(e);t&&o.push(t.msg_id)}),n.inner=o}return n.msg_id=t.generateID(),n.seq_no=this.generateSeqNo(n.notContentRelated||n.container),this.sentMessages[n.msg_id]=n,delete r.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,r){var o=new TLSerialization({mtproto:!0});o.storeMethod(e,n);var s=t.generateID(),i=this.generateSeqNo(),a={msg_id:s,seq_no:i,body:o.getBytes()};return window._debugMode&&console.log("MT call",e,n,s,i),this.pushMessage(a,r)},u.prototype.wrapMtpMessage=function(e,n){n=n||{};var r=new TLSerialization({mtproto:!0});r.storeObject(e,"Object");var o=t.generateID(),s=this.generateSeqNo(n.notContentRelated),i={msg_id:o,seq_no:s,body:r.getBytes()};return window._debugMode&&console.log("MT message",e,o,s),this.pushMessage(i,n)},u.prototype.wrapApiCall=function(e,n,r){var o=new TLSerialization(r);this.connectionInited||(o.storeInt(3718647100,"invokeWithLayer12"),o.storeInt(1769565673,"initConnection"),o.storeInt(2496,"api_id"),o.storeString(navigator.userAgent||"Unknown UserAgent","device_model"),o.storeString(navigator.platform||"Unknown Platform","system_version"),o.storeString("0.1","app_version"),o.storeString(navigator.language||"en","lang_code")),r.afterMessageID&&(o.storeInt(3416209197,"invokeAfterMsg"),o.storeLong(r.afterMessageID,"msg_id")),o.storeMethod(e,n);var s=t.generateID(),i=this.generateSeqNo(),a={msg_id:s,seq_no:i,body:o.getBytes(),isAPI:!0};return window._debugMode?console.log("Api call",e,n,s,i,r):console.log("Api call",e,s,i),this.pushMessage(a,r)},u.prototype.checkLongPoll=function(){var e=this.cleanupSent();if(this.longPollPending&&tsNow()=a)&&((o=c.sentMessages[t])&&(s.push(o),i+=o.body.length+32),delete c.pendingMessages[t])}),s.length){var f=[];if(s.length>1){var h=new TLSerialization({mtproto:!0,startMaxLength:i+64});h.storeInt(1945237724,"CONTAINER[id]"),h.storeInt(s.length,"CONTAINER[count]");for(var u=[],n=0;ns;s++)this.processMessage(e.messages[s],n,r);break;case"bad_server_salt":console.log("Bad server salt",e);var i=this.sentMessages[e.bad_msg_id];if(!i||i.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("Bad msg notification",e);var i=this.sentMessages[e.bad_msg_id];if(!i||i.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))&&this.updateSession();var a=this.updateSentMessage(e.bad_msg_id);this.pushResend(a.msg_id),this.ackMessage(n)}break;case"message":this.serverMessages.push(e.msg_id),this.processMessage(e.body,e.msg_id,r);break;case"new_session_created":this.ackMessage(n),this.processMessageAck(e.first_msg_id),this.applyServerSalt(e.server_salt),this.onSessionCreate(r,n);break;case"msgs_ack":for(var s=0;s=w||!t||!t.length)return!1;var n=t.shift(),r=n.activeDelta||1;m[e]+=r;b++;n.cb().then(function(t){m[e]-=r,o(e),n.deferred.resolve(t)},function(t){m[e]-=r,o(e),n.deferred.reject(t)})}function s(){if(d)return t.when(d);if(n.requestFileSystem=n.requestFileSystem||n.webkitRequestFileSystem,!n.requestFileSystem)return t.reject({type:"FS_BROWSER_UNSUPPORTED",description:"requestFileSystem not present"});var e=t.defer();return n.requestFileSystem(n.TEMPORARY,5242880,function(t){d=t,e.resolve()},function(t){e.reject(t)}),e.promise}function i(e,n){var r=t.defer();return e.onwriteend=function(){r.resolve()},e.onerror=function(){r.reject()},e.write(new Blob([bytesToArrayBuffer(n)])),r.promise}function a(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=a(e);return v[t]||!1}function f(e,n){var r=a(e);if(p[r])return p[r];var o,c=t.defer(),f=function(e){c.reject(e),o&&o.truncate(0),f=angular.noop};return s().then(function(){d.root.getFile(r,{create:!1},function(e){c.resolve(v[r]=e.toURL())},function(){d.root.getFile(r,{create:!0},function(e){e.createWriter(function(t){o=t,i(t,n).then(function(){c.resolve(v[r]=e.toURL())},f)},f)},f)})},f),p[r]=c.promise}function h(n){var o=a(n),c=p[o]||y[o];if(c)return c;var f,h=t.defer(),u=function(e){h.reject(e),f&&f.truncate(0),u=angular.noop},l=function(){d.root.getFile(o,{create:!0},function(t){var s=r(n.dc_id,function(){return e.invokeApi("upload.getFile",{location:angular.extend({},n,{_:"inputFileLocation"}),offset:0,limit:0},{dcID:n.dc_id,fileDownload:!0,createNetworker:!0})});t.createWriter(function(e){f=e,s.then(function(n){i(e,n.bytes).then(function(){h.resolve(v[o]=t.toURL())},u)},u)},u)},u)};return s().then(function(){d.root.getFile(o,{create:!1},function(e){e.file(function(t){t.size?h.resolve(v[o]=e.toURL()):(console.log("Small file empty",t),l())},u)},l)},function(){r(n.dc_id,function(){return e.invokeApi("upload.getFile",{location:angular.extend({},n,{_:"inputFileLocation"}),offset:0,limit:0},{dcID:n.dc_id,fileDownload:!0,createNetworker:!0})}).then(function(e){h.resolve(v[o]="data:image/jpeg;base64,"+bytesToBase64(e.bytes))},u)}),y[o]=h.promise}function u(n,o,c,f,h){h=h||{},console.log("dload file",n,o,c);var u=a(o),l=p[u]||y[u];if(l)return l;var g,_=t.defer(),m=function(e){console.error(e),_.reject(e),g&&g.truncate(0),m=angular.noop},w=function(s){s.createWriter(function(a){g=a;for(var f,l=c>30400?524288:4096,d=t.when(),p=0;c>p;p+=l)f=t.defer(),function(t,f,d,g){return r(n,function(){return e.invokeApi("upload.getFile",{location:o,offset:f,limit:l},{dcID:n,fileDownload:!0,createNetworker:!0})},6).then(function(e){g.then(function(){return i(a,e.bytes).then(function(){d.resolve()},m).then(function(){t?_.resolve(v[u]=s.toURL(h.mime||"image/jpeg")):_.notify({done:f+l,total:c})})})})}(p+l>=c,p,f,d),d=f.promise},m)};return f?w(f):s().then(function(){d.root.getFile(u,{create:!1},function(e){e.file(function(t){console.log("check size",t.size,c),t.size>=c?_.resolve(v[u]=e.toURL()):(console.log("File bad size",t,c),d.root.getFile(u,{create:!0},w,m))},m)},function(){d.root.getFile(u,{create:!0},w,m)})},function(){for(var s,i=[],a=c>30400?524288:4096,f=t.when(),l=0;c>l;l+=a)s=t.defer(),function(t,s,f,l){return r(n,function(){return e.invokeApi("upload.getFile",{location:o,offset:s,limit:a},{dcID:n,fileDownload:!0,createNetworker:!0})},6).then(function(e){l.then(function(){try{if(i.push(bytesToArrayBuffer(e.bytes)),f.resolve(),t){try{var n=new Blob(i,{type:h.mime||"image/jpeg"})}catch(r){window.BlobBuilder=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder;var o=new BlobBuilder;angular.forEach(i,function(e){o.append(e)});var n=o.getBlob(h.mime||"image/jpeg")}window.URL=window.URL||window.webkitURL,_.resolve(v[u]=URL.createObjectURL(n))}else _.notify({done:s+a,total:c})}catch(r){m(r)}},m)})}(l+a>=c,l,s,f),f=s.promise}),y[u]=_.promise}function l(n){var r=n.size,o=r>102400?524288:4096,s=Math.ceil(r/o),i=0;if(s>1500)return t.reject({type:"FILE_TOO_BIG"});var a,c=[nextRandomInt(4294967295),nextRandomInt(4294967295)],f=t.defer(),h=function(e){console.log("error",e),f.reject(e),h=angular.noop},u=0,l={_:"inputFile",id:c,parts:s,name:n.name,md5_checksum:""},d=t.when();for(a=0;r>a;a+=o)!function(a,u){d=d.then(function(){var d=t.defer(),p=new FileReader,y=n.slice(a,a+o);return p.onloadend=function(t){if(t.target.readyState==FileReader.DONE){var n=g=g.then(function(){return e.invokeApi("upload.saveFilePart",{file_id:c,file_part:u,bytes:bytesFromArrayBuffer(t.target.result)},{startMaxLength:o+256,fileUpload:!0})},h);n.then(function(){i++,d.resolve(),i>=s?f.resolve(l):(console.log("Progress",i*o/r),f.notify({done:i*o,total:r}))},h)}},p.readAsArrayBuffer(y),d.promise})}(a,u++);return f.promise}var d=!1,g=t.when(),p={},y={},v={},_={},m={},w=5,b=0;return{getCachedFile:c,downloadFile:u,downloadSmallFile:h,saveSmallFile:f,uploadFile:l}}]); +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;nt;t+=2)r.push(parseInt(e.substr(t,2),16));return r}function bytesToBase64(e){for(var t,n="",r=e.length,o=0,s=0;r>s;s++)t=s%3,o|=e[s]<<(16>>>t&24),(2===t||r-s===1)&&(n+=String.fromCharCode(uint6ToBase64(o>>>18&63),uint6ToBase64(o>>>12&63),uint6ToBase64(o>>>6&63),uint6ToBase64(63&o)),o=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 bytesCmp(e,t){var n=e.length;if(n!=t.length)return!1;for(var r=0;n>r;r++)if(e[r]!=t[r])return!1;return!0}function bytesXor(e,t){for(var n=e.length,r=[],o=0;n>o;++o)r[o]=e[o]^t[o];return r}function bytesToWords(e){for(var t=e.length,n=[],r=0;t>r;r++)n[r>>>2]|=e[r]<<24-r%4*8;return new CryptoJS.lib.WordArray.init(n,t)}function bytesFromWords(e){for(var t=e.words,n=e.sigBytes,r=[],o=0;n>o;o++)r.push(t[o>>>2]>>>24-o%4*8&255);return r}function bytesFromBigInt(e,t){for(var n=e.toByteArray();!n[0]&&(!t||n.length>t);)n=n.slice(1);return n}function bytesToArrayBuffer(e){return new Uint8Array(e).buffer}function bytesFromArrayBuffer(e){for(var t=e.byteLength,n=new Uint8Array(e),r=[],o=0;t>o;++o)r[o]=n[o];return r}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 sha1Hash(e){var t=sha1.hash(e,!0);return t}function rsaEncrypt(e,t){var n=255-t.length;if(n>0){var r=new Array(n);(new SecureRandom).nextBytes(r),t=t.concat(r)}var o=new BigInteger(e.modulus,16),s=new BigInteger(e.exponent,16),i=new BigInteger(t),a=i.modPowInt(s,o),c=bytesFromBigInt(a,256);return c}function aesEncrypt(e,t,n){var r=16-e.length%16;if(r>0&&16>r){var o=new Array(r);(new SecureRandom).nextBytes(o),e=e.concat(o)}var s=CryptoJS.AES.encrypt(bytesToWords(e),bytesToWords(t),{iv:bytesToWords(n),padding:CryptoJS.pad.NoPadding,mode:CryptoJS.mode.IGE}).ciphertext,i=bytesFromWords(s);return i}function aesDecrypt(e,t,n){var r=CryptoJS.AES.decrypt({ciphertext:bytesToWords(e)},bytesToWords(t),{iv:bytesToWords(n),padding:CryptoJS.pad.NoPadding,mode:CryptoJS.mode.IGE}),o=bytesFromWords(r);return o}function gzipUncompress(e){var t=new Zlib.Gunzip(e).decompress();return t}function nextRandomInt(e){return Math.floor(Math.random()*e)}function pqPrimeFactorization(e){console.log("PQ start");for(var t,n=new BigInteger(e),r=0,o=0;3>o;o++){for(var s=(15&nextRandomInt(128))+17,i=bigint(nextRandomInt(1e9)+1),a=i.clone(),c=1<f;f++){++r;for(var h=i.clone(),u=i.clone(),d=bigint(s);!u.equals(BigInteger.ZERO);)u.and(BigInteger.ONE).equals(BigInteger.ZERO)||(d=d.add(h),d.compareTo(n)>0&&(d=d.subtract(n))),h=h.add(h),h.compareTo(n)>0&&(h=h.subtract(n)),u=u.shiftRight(1);i=d.clone();var l=i.compareTo(a)<0?a.subtract(i):i.subtract(a);if(t=l.gcd(n),!t.equals(BigInteger.ONE))break;0==(f&f-1)&&(a=i.clone())}if(t.compareTo(BigInteger.ONE)>0)break}var g,p,y=n.divide(t);return t.compareTo(y)>0?(g=y,p=t):(g=t,p=y),console.log("PQ finish",r+" iterations"),[bytesFromBigInt(g),bytesFromBigInt(p)]}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.buffer=e,this.intView=new Uint32Array(this.buffer),this.byteView=new Uint8Array(this.buffer),this.mtproto=t.mtproto||!1,this}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(){for(var e=[],t=0;t>>",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),r=new Float64Array(t);r[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 r=n.length;253>=r?this.byteView[this.offset++]=r:(this.byteView[this.offset++]=254,this.byteView[this.offset++]=255&r,this.byteView[this.offset++]=(65280&r)>>8,this.byteView[this.offset++]=(16711680&r)>>16);for(var o=0;r>o;o++)this.byteView[this.offset++]=n.charCodeAt(o);for(;this.offset%4;)this.byteView[this.offset++]=0},TLSerialization.prototype.storeBytes=function(e,t){this.debug&&console.log(">>>",bytesToHex(e),(t||"")+":bytes"),this.checkLength(e.length+8);var n=e.length;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);for(var r=0;n>r;r++)this.byteView[this.offset++]=e[r];for(;this.offset%4;)this.byteView[this.offset++]=0},TLSerialization.prototype.storeIntBytes=function(e,t,n){var r=e.length;if(t%32||8*r!=t)throw new Error("Invalid bits: "+t+", "+e.length);this.debug&&console.log(">>>",bytesToHex(e),(n||"")+":int"+t),this.checkLength(r);for(var o=0;r>o;o++)this.byteView[this.offset++]=e[o]},TLSerialization.prototype.storeRawBytes=function(e,t){var n=e.length;this.debug&&console.log(">>>",bytesToHex(e),t||""),this.checkLength(n);for(var r=0;n>r;r++)this.byteView[this.offset++]=e[r]},TLSerialization.prototype.storeMethod=function(e,t){var n,r=this.mtproto?Config.Schema.MTProto:Config.Schema.API,o=!1;for(n=0;n=4*this.intView.length)throw new Error("Nothing to fetch");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),r=new Float64Array(t);return n[0]=this.readInt((e||"")+":double[low]"),n[1]=this.readInt((e||"")+":double[high]"),r[0]},TLDeserialization.prototype.fetchLong=function(e){var t=this.readInt((e||"")+":long[low]"),n=this.readInt((e||"")+":long[high]"),r=bigint(n).shiftLeft(32).add(bigint(t)).toString();return r},TLDeserialization.prototype.fetchBool=function(e){var t=this.readInt((e||"")+":bool");if(2574415285==t)return!0;if(3162085175==t)return!1;throw new Error("Unknown Bool constructor "+t)},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="",r=0;t>r;r++)n+=String.fromCharCode(this.byteView[this.offset++]);for(;this.offset%4;)this.offset++;try{var o=decodeURIComponent(escape(n))}catch(s){var o=n}return this.debug&&console.log("<<<",o,(e||"")+":string"),o},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;for(var n=[],r=0;t>r;r++)n.push(this.byteView[this.offset++]);for(;this.offset%4;)this.offset++;return this.debug&&console.log("<<<",bytesToHex(n),(e||"")+":bytes"),n},TLDeserialization.prototype.fetchIntBytes=function(e,t){if(e%32)throw new Error("Invalid bits: "+e);for(var n=e/8,r=[],o=0;n>o;o++)r.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(r),(t||"")+":int"+e),r},TLDeserialization.prototype.fetchRawBytes=function(e,t){e===!1&&(e=this.readInt((t||"")+"_length"));for(var n=[],r=0;e>r;r++)n.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(n),t||""),n},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,t);case"int256":return this.fetchIntBytes(256,t);case"int512":return this.fetchIntBytes(512,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 r=this.readInt(t+"[count]"),o=[];if(r>0)for(var s=e.substr(7,e.length-8),i=0;r>i;i++)o.push(this.fetchObject(s,t+"["+i+"]"));return o}var a=this.mtproto?Config.Schema.MTProto:Config.Schema.API,c=!1,f=!1;if("%"==e.charAt(0)){var h=e.substr(1);for(i=0;i=97&&e.charAt(0)<=122){for(i=0;ii[0]||r[0]==i[0]&&r[1]>=i[1])&&(i=[r[0],r[1]+4]),r=i,longFromInts(i[0],i[1])}function n(t,n){var s=t-Math.floor((n||tsNow())/1e3),i=Math.abs(o-s)>10;return e.set({server_time_offset:s}),r=[0,0],o=s,console.log("Apply server time",t,n,s,i),i}var r=[0,0],o=0;return e.get("server_time_offset").then(function(e){e&&(o=e)}),{generateID:t,applyServerTime:n}}]).factory("MtpAuthorizer",["MtpDcConfigurator","MtpRsaKeysManager","MtpSecureRandom","MtpMessageIdGenerator","$http","$q","$timeout",function(e,t,n,r,o,s,i){function a(t,n){var s=n.byteLength,i=new Int32Array(n),a=new TLSerialization;a.storeLongP(0,0,"auth_key_id"),a.storeLong(r.generateID(),"msg_id"),a.storeInt(s,"request_length");var c=a.getBuffer(),f=new Int32Array(c),h=c.byteLength,u=new ArrayBuffer(h+s),d=new Int32Array(u);return d.set(f),d.set(i,f.length),delete o.defaults.headers.post["Content-Type"],delete o.defaults.headers.common.Accept,"ArrayBufferView"in window||(d=d.buffer),o.post("http://"+e.chooseServer(t)+"/apiw1",d,{responseType:"arraybuffer",transformRequest:null,transformResponse:function(e){{var t=new TLDeserialization(e,{mtproto:!0});t.fetchLong("auth_key_id"),t.fetchLong("msg_id"),t.fetchInt("msg_len")}return rng_seed_time(),t}})}function c(e){var n=e.deferred,r=new TLSerialization({mtproto:!0});r.storeMethod("req_pq",{nonce:e.nonce}),console.log(dT(),"Send req_pq",bytesToHex(e.nonce)),a(e.dcID,r.getBuffer()).then(function(n){var r=n.data,o=r.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");var s=pqPrimeFactorization(e.pq);e.p=s[0],e.q=s[1],f(e)},function(e){n.reject(e)}),i(function(){t.prepare()})}function f(e){var t=e.deferred;e.newNonce=new Array(32),n.nextBytes(e.newNonce);var r=new TLSerialization({mtproto:!0});r.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 o=sha1Hash(r.getBuffer()).concat(r.getBytes()),s=new TLSerialization({mtproto:!0});s.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,o)}),console.log(dT(),"Send req_DH_params"),a(e.dcID,s.getBuffer()).then(function(n){var r=n.data,o=r.fetchObject("Server_DH_Params","RESPONSE");if("server_DH_params_fail"!=o._&&"server_DH_params_ok"!=o._)return t.reject(new Error("Server_DH_Params response invalid: "+o._)),!1;if(!bytesCmp(e.nonce,o.nonce))return t.reject(new Error("Server_DH_Params nonce mismatch")),!1;if(!bytesCmp(e.serverNonce,o.server_nonce))return t.reject(new Error("Server_DH_Params server_nonce mismatch")),!1;if("server_DH_params_fail"==o._){var s=sha1Hash(e.newNonce).slice(-16);return bytesCmp(s,o.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{h(e,o.encrypted_answer)}catch(i){return t.reject(i),!1}u(e)},function(e){t.reject(e)})}function h(e,t){e.localTime=tsNow(),e.tmpAesKey=sha1Hash(e.newNonce.concat(e.serverNonce)).concat(sha1Hash(e.serverNonce.concat(e.newNonce)).slice(0,12)),e.tmpAesIv=sha1Hash(e.serverNonce.concat(e.newNonce)).slice(12).concat(sha1Hash([].concat(e.newNonce,e.newNonce)),e.newNonce.slice(0,4));var n=aesDecrypt(t,e.tmpAesKey,e.tmpAesIv),o=n.slice(0,20),s=n.slice(20),i=bytesToArrayBuffer(s),a=new TLDeserialization(i,{mtproto:!0}),c=a.fetchObject("Server_DH_inner_data");if("server_DH_inner_data"!=c._)throw new Error("server_DH_inner_data response invalid: "+constructor);if(!bytesCmp(e.nonce,c.nonce))throw new Error("server_DH_inner_data nonce mismatch");if(!bytesCmp(e.serverNonce,c.server_nonce))throw new Error("server_DH_inner_data serverNonce mismatch");console.log(dT(),"Done decrypting answer"),e.g=c.g,e.dhPrime=c.dh_prime,e.gA=c.g_a,e.serverTime=c.server_time,e.retry=0;var f=a.getOffset();if(!bytesCmp(o,sha1Hash(s.slice(0,f))))throw new Error("server_DH_inner_data SHA1-hash mismatch");r.applyServerTime(e.serverTime,e.localTime)}function u(e){var t=e.deferred;e.b=new Array(256),n.nextBytes(e.b);var r=new BigInteger(e.b),o=new BigInteger(e.dhPrime),s=bytesFromBigInt(bigint(e.g).modPow(r,o)),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:s},"Client_DH_Inner_Data");var c=sha1Hash(i.getBuffer()).concat(i.getBytes()),f=aesEncrypt(c,e.tmpAesKey,e.tmpAesIv),h=new TLSerialization({mtproto:!0});h.storeMethod("set_client_DH_params",{nonce:e.nonce,server_nonce:e.serverNonce,encrypted_data:f}),console.log(dT(),"Send set_client_DH_params"),a(e.dcID,h.getBuffer()).then(function(n){var r=n.data,o=r.fetchObject("Set_client_DH_params_answer");if("dh_gen_ok"!=o._&&"dh_gen_retry"!=o._&&"dh_gen_fail"!=o._)return t.reject(new Error("Set_client_DH_params_answer response invalid: "+o._)),!1;if(!bytesCmp(e.nonce,o.nonce))return t.reject(new Error("Set_client_DH_params_answer nonce mismatch")),!1;if(!bytesCmp(e.serverNonce,o.server_nonce))return t.reject(new Error("Set_client_DH_params_answer server_nonce mismatch")),!1;var s=new BigInteger(e.b),i=new BigInteger(e.dhPrime),a=bytesFromBigInt(new BigInteger(e.gA).modPow(s,i)),c=sha1Hash(a),f=c.slice(0,8),h=c.slice(-8);switch(console.log(dT(),"Got Set_client_DH_params_answer",o._),o._){case"dh_gen_ok":var d=sha1Hash(e.newNonce.concat([1],f)).slice(-16);if(!bytesCmp(d,o.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=h,e.authKey=a,e.serverSalt=l,t.resolve(e);break;case"dh_gen_retry":var g=sha1Hash(e.newNonce.concat([2],f)).slice(-16);return bytesCmp(g,o.new_nonce_hash2)?u(e):(t.reject(new Error("Set_client_DH_params_answer new_nonce_hash2 mismatch")),!1);case"dh_gen_fail":var p=sha1Hash(e.newNonce.concat([3],f)).slice(-16);return bytesCmp(p,o.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)})}function d(t){if(void 0!==l[t])return l[t];for(var n=[],r=0;16>r;r++)n.push(nextRandomInt(255));if(!e.chooseServer(t))return s.reject(new Error("No server found for dc "+t));var o={dcID:t,nonce:n,deferred:s.defer()};return i(function(){c(o)}),l[t]=o.deferred.promise}var l={};return{auth:d}}]).factory("MtpAesService",["$q",function(e){return{encrypt:function(t,n,r){return e.when(aesEncrypt(t,n,r))},decrypt:function(t,n,r){return e.when(aesDecrypt(t,n,r))}}}]).factory("MtpSha1Service",["$q",function(e){return{hash:function(t){var n=e.defer();return setTimeout(function(){n.resolve(sha1Hash(t))},0),n.promise}}}]).factory("MtpNetworkerFactory",["MtpDcConfigurator","MtpMessageIdGenerator","MtpSecureRandom","MtpSha1Service","MtpAesService","AppConfigManager","$http","$q","$timeout","$interval","$rootScope",function(e,t,n,r,o,s,i,a,c,f,h){function u(e,t,n,r){r=r||{},this.dcID=e,this.iii=l++,this.authKey=t,this.authKeyID=sha1Hash(t).slice(-8),this.serverSalt=n,this.upload=r.fileUpload||r.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=f(this.checkLongPoll.bind(this),1e4),this.checkLongPoll(),g||(g=!0,h.offline=!0,h.offlineConnecting=!0)}var d,l=0,g=!1;return h.retryOnline=function(){$(document.body).trigger("online")},u.prototype.updateSession=function(){console.log(dT(),"Update session"),this.seqNo=0,this.sessionID=new Array(8),n.nextBytes(this.sessionID)},u.prototype.updateSentMessage=function(e){var n=this.sentMessages[e];if(!n)return!1;var r=this;if(n.container){var o=[];angular.forEach(n.inner,function(e){var t=r.updateSentMessage(e);t&&o.push(t.msg_id)}),n.inner=o}return n.msg_id=t.generateID(),n.seq_no=this.generateSeqNo(n.notContentRelated||n.container),this.sentMessages[n.msg_id]=n,delete r.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,r){var o=new TLSerialization({mtproto:!0});o.storeMethod(e,n);var s=t.generateID(),i=this.generateSeqNo(),a={msg_id:s,seq_no:i,body:o.getBytes()};return window._debugMode&&console.log(dT(),"MT call",e,n,s,i),this.pushMessage(a,r)},u.prototype.wrapMtpMessage=function(e,n){n=n||{};var r=new TLSerialization({mtproto:!0});r.storeObject(e,"Object");var o=t.generateID(),s=this.generateSeqNo(n.notContentRelated),i={msg_id:o,seq_no:s,body:r.getBytes()};return window._debugMode&&console.log(dT(),"MT message",e,o,s),this.pushMessage(i,n)},u.prototype.wrapApiCall=function(e,n,r){var o=new TLSerialization(r);this.connectionInited||(o.storeInt(3718647100,"invokeWithLayer12"),o.storeInt(1769565673,"initConnection"),o.storeInt(2496,"api_id"),o.storeString(navigator.userAgent||"Unknown UserAgent","device_model"),o.storeString(navigator.platform||"Unknown Platform","system_version"),o.storeString("0.1","app_version"),o.storeString(navigator.language||"en","lang_code")),r.afterMessageID&&(o.storeInt(3416209197,"invokeAfterMsg"),o.storeLong(r.afterMessageID,"msg_id")),o.storeMethod(e,n);var s=t.generateID(),i=this.generateSeqNo(),a={msg_id:s,seq_no:i,body:o.getBytes(),isAPI:!0};return window._debugMode?console.log(dT(),"Api call",e,n,s,i,r):console.log(dT(),"Api call",e,s,i),this.pushMessage(a,r)},u.prototype.checkLongPoll=function(){var e=this.cleanupSent();if(this.longPollPending&&tsNow()=a)&&((o=h.sentMessages[t])&&(s.push(o),i+=o.body.length+32,o.isAPI?c=!0:o.longPoll&&(f=!0)),delete h.pendingMessages[t])}),c&&!f){var u=new TLSerialization({mtproto:!0});u.storeMethod("http_wait",{max_delay:0,wait_after:0,max_wait:25e3}),s.push({msg_id:t.generateID(),seq_no:this.generateSeqNo(),body:u.getBytes()})}if(s.length){var d=[];if(s.length>1){var l=new TLSerialization({mtproto:!0,startMaxLength:i+64});l.storeInt(1945237724,"CONTAINER[id]"),l.storeInt(s.length,"CONTAINER[count]");for(var g=[],n=0;ns;s++)this.processMessage(e.messages[s],n,r);break;case"bad_server_salt":console.log(dT(),"Bad server salt",e);var i=this.sentMessages[e.bad_msg_id];if(!i||i.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 i=this.sentMessages[e.bad_msg_id];if(!i||i.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))&&this.updateSession();var a=this.updateSentMessage(e.bad_msg_id);this.pushResend(a.msg_id),this.ackMessage(n)}break;case"message":this.serverMessages.push(e.msg_id),this.processMessage(e.body,e.msg_id,r);break;case"new_session_created":this.ackMessage(n),this.processMessageAck(e.first_msg_id),this.applyServerSalt(e.server_salt),this.onSessionCreate(r,n);break;case"msgs_ack":for(var s=0;s=w||!t||!t.length)return!1;var n=t.shift(),r=n.activeDelta||1;v[e]+=r;b++;n.cb().then(function(t){v[e]-=r,o(e),n.deferred.resolve(t)},function(t){v[e]-=r,o(e),n.deferred.reject(t)})}function s(){if(l)return t.when(l);if(n.requestFileSystem=n.requestFileSystem||n.webkitRequestFileSystem,!n.requestFileSystem)return t.reject({type:"FS_BROWSER_UNSUPPORTED",description:"requestFileSystem not present"});var e=t.defer();return n.requestFileSystem(n.TEMPORARY,5242880,function(t){l=t,e.resolve()},function(t){e.reject(t)}),e.promise}function i(e,n){var r=t.defer();return e.onwriteend=function(){r.resolve()},e.onerror=function(){r.reject()},e.write(new Blob([bytesToArrayBuffer(n)])),r.promise}function a(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=a(e);return _[t]||!1}function f(e,n){var r=a(e);if(p[r])return p[r];var o,c=t.defer(),f=function(e){c.reject(e),o&&o.truncate(0),f=angular.noop};return s().then(function(){l.root.getFile(r,{create:!1},function(e){c.resolve(_[r]=e.toURL())},function(){l.root.getFile(r,{create:!0},function(e){e.createWriter(function(t){o=t,i(t,n).then(function(){c.resolve(_[r]=e.toURL())},f)},f)},f)})},f),p[r]=c.promise}function h(n){var o=a(n),c=p[o]||y[o];if(c)return c;var f,h=t.defer(),u=function(e){h.reject(e),f&&f.truncate(0),u=angular.noop},d=function(){l.root.getFile(o,{create:!0},function(t){var s=r(n.dc_id,function(){return e.invokeApi("upload.getFile",{location:angular.extend({},n,{_:"inputFileLocation"}),offset:0,limit:0},{dcID:n.dc_id,fileDownload:!0,createNetworker:!0})});t.createWriter(function(e){f=e,s.then(function(n){i(e,n.bytes).then(function(){h.resolve(_[o]=t.toURL())},u)},u)},u)},u)};return s().then(function(){l.root.getFile(o,{create:!1},function(e){e.file(function(t){t.size?h.resolve(_[o]=e.toURL()):(console.log("Small file empty",t),d())},u)},d)},function(){r(n.dc_id,function(){return e.invokeApi("upload.getFile",{location:angular.extend({},n,{_:"inputFileLocation"}),offset:0,limit:0},{dcID:n.dc_id,fileDownload:!0,createNetworker:!0})}).then(function(e){h.resolve(_[o]="data:image/jpeg;base64,"+bytesToBase64(e.bytes))},u)}),y[o]=h.promise}function u(n,o,c,f,h){h=h||{},console.log(dT(),"Dload file",n,o,c);var u=a(o),d=p[u]||y[u];if(d)return d;var g,m=t.defer(),v=function(e){console.error(e),m.reject(e),g&&g.truncate(0),v=angular.noop},w=function(s){s.createWriter(function(a){g=a;for(var f,d=524288,l=t.when(),p=0;c>p;p+=d)f=t.defer(),function(t,f,l,g){return r(n,function(){return e.invokeApi("upload.getFile",{location:o,offset:f,limit:d},{dcID:n,fileDownload:!0,createNetworker:!0})},6).then(function(e){g.then(function(){return i(a,e.bytes).then(function(){l.resolve()},v).then(function(){t?m.resolve(_[u]=s.toURL(h.mime||"image/jpeg")):m.notify({done:f+d,total:c})})})})}(p+d>=c,p,f,l),l=f.promise},v)};return f?w(f):s().then(function(){l.root.getFile(u,{create:!1},function(e){e.file(function(t){t.size>=c?m.resolve(_[u]=e.toURL()):(console.log("File bad size",t,c),l.root.getFile(u,{create:!0},w,v))},v)},function(){l.root.getFile(u,{create:!0},w,v)})},function(){for(var s,i=[],a=c>30400?524288:4096,f=t.when(),d=0;c>d;d+=a)s=t.defer(),function(t,s,f,d){return r(n,function(){return e.invokeApi("upload.getFile",{location:o,offset:s,limit:a},{dcID:n,fileDownload:!0,createNetworker:!0})},6).then(function(e){d.then(function(){try{if(i.push(bytesToArrayBuffer(e.bytes)),f.resolve(),t){try{var n=new Blob(i,{type:h.mime||"image/jpeg"})}catch(r){window.BlobBuilder=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder;var o=new BlobBuilder;angular.forEach(i,function(e){o.append(e)});var n=o.getBlob(h.mime||"image/jpeg")}window.URL=window.URL||window.webkitURL,m.resolve(_[u]=URL.createObjectURL(n))}else m.notify({done:s+a,total:c})}catch(r){v(r)}},v)})}(d+a>=c,d,s,f),f=s.promise}),y[u]=m.promise}function d(n){var r=n.size,o=r>102400?524288:4096,s=Math.ceil(r/o),i=0;if(s>1500)return t.reject({type:"FILE_TOO_BIG"});var a,c=[nextRandomInt(4294967295),nextRandomInt(4294967295)],f=t.defer(),h=function(e){console.error("Error",e),f.reject(e),h=angular.noop},u=0,d={_:"inputFile",id:c,parts:s,name:n.name,md5_checksum:""},l=t.when();for(a=0;r>a;a+=o)!function(a,u){l=l.then(function(){var l=t.defer(),p=new FileReader,y=n.slice(a,a+o);return p.onloadend=function(t){if(t.target.readyState==FileReader.DONE){var n=g=g.then(function(){return e.invokeApi("upload.saveFilePart",{file_id:c,file_part:u,bytes:bytesFromArrayBuffer(t.target.result)},{startMaxLength:o+256,fileUpload:!0})},h);n.then(function(){i++,l.resolve(),i>=s?f.resolve(d):(console.log(dT(),"Progress",i*o/r),f.notify({done:i*o,total:r}))},h)}},p.readAsArrayBuffer(y),l.promise})}(a,u++);return f.promise}var l=!1,g=t.when(),p={},y={},_={},m={},v={},w=5,b=0;return{getCachedFile:c,downloadFile:u,downloadSmallFile:h,saveSmallFile:f,uploadFile:d}}]); 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;t0,window._debugMode=location.search.indexOf("debug=1")>0,window._osX=-1!=(navigator.platform||"").toLowerCase().indexOf("mac")||-1!=(navigator.userAgent||"").toLowerCase().indexOf("mac"),window._retina=window.devicePixelRatio>1,window._osX||$("body").addClass("non_osx"),$("body").addClass(window._retina?"is_2x":"is_1x"),$(window).on("load",function(){setTimeout(function(){window.scrollTo(0,1)},0)}),angular.module("myApp",["ngRoute","ngAnimate","ngSanitize","ui.bootstrap","pasvaz.bindonce","mtproto.services","myApp.filters","myApp.services","myApp.templates","myApp.directives","myApp.controllers"]).config(["$locationProvider","$routeProvider","$compileProvider",function(e,o,i){var t,n,r,a,s,l,m,p={},d={};for(n=0;n0?{_:"inputPeerForeign",user_id:t,access_hash:e.getUser(t).access_hash||0}:0>t?{_:"inputPeerChat",chat_id:-t}:void 0},getPeerSearchText:function(a){var o;if(a>0)o=e.getUserSearchText(a);else if(0>a){var n=t.getChat(-a);o=n.title||""}return o},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),a=e.substr(1).split("_");return t?a[0]:-a[0]||0},getPeer:function(a){return a>0?e.getUser(a):t.getChat(-a)},getPeerPhoto:function(a,o,n){return a>0?e.getUserPhoto(a,o):t.getChatPhoto(-a,n)}}}]).service("SearchIndexManager",function(){function e(){return{shortIndexes:{},fullTexts:{}}}function t(e){e=e.replace(n," ").replace(r,"").toLowerCase();for(var t in i)i.hasOwnProperty(t)&&(e=e.replace(i[t],t));return e}function a(e,a,o){if(void 0!==o.fullTexts[e])return!1;if(a=t(a),!a.length)return!1;var n=o.shortIndexes;o.fullTexts[e]=a,angular.forEach(a.split(" "),function(t){var a,o,r=Math.min(t.length,3);for(o=1;r>=o;o++)a=t.substr(0,o),void 0===n[a]?n[a]=[e]:n[a].push(e)})}function o(e,a){console.time("search");var o=a.shortIndexes,n=a.fullTexts;e=t(e);var r,i,s,d,c,u=e.split(" "),l=!1;for(i=0;ir.length)&&(l=r)}for(r={},s=0;s,<\s]+/g,r=/^\s+|\s$/g,i={a:/[áâäà]/g,e:/[éêëè]/g,i:/[íîïì]/g,o:/[óôöò]/g,u:/[úûüù]/g,c:/ç/g,ss:/ß/g};return{createIndex:e,indexObject:a,cleanSearchText:t,search:o}}).service("AppMessagesManager",["$q","$rootScope","$location","$filter","ApiUpdatesManager","AppUsersManager","AppChatsManager","AppPeersManager","AppPhotosManager","AppVideoManager","AppDocsManager","AppAudioManager","MtpApiManager","MtpApiFileManager","RichTextProcessor","NotificationsManager","SearchIndexManager",function(e,t,a,o,n,r,i,s,d,c,u,l,p,h,g,m,f){function _(t,a,o){var n=R;if(angular.isString(t)&&t.length){if(!o||G.query!==t){G.query=t;var d=f.search(t,B);G.dialogs=[],angular.forEach(R.dialogs,function(e){d[e.peerID]&&G.dialogs.push(e)}),G.count=G.dialogs.length}n=G}else G.query=!1;var c=0;if(a>0)for(c=0;cn.dialogs[c].top_message);c++);return null!==n.count&&n.dialogs.length==n.count||n.dialogs.length>=c+(o||1)?e.when({count:n.count,dialogs:n.dialogs.slice(c,c+(o||20))}):(o=o||20,p.invokeApi("messages.getDialogs",{offset:c,limit:o,max_id:a||0}).then(function(e){if(r.saveApiUsers(e.users),i.saveApiChats(e.chats),S(e.messages),a>0)for(c=0;cn.dialogs[c].top_message);c++);return n.count="messages.dialogsSlice"==e._?e.count:e.dialogs.length,n.dialogs.splice(c,n.dialogs.length-c),angular.forEach(e.dialogs,function(e){var t=s.getPeerID(e.peer),a=s.getPeerSearchText(t);f.indexObject(t,a,B),n.dialogs.push({peerID:t,top_message:e.top_message,unread_count:e.unread_count}),void 0===q[t]&&(q[t]={count:null,history:[e.top_message],pending:[]})}),{count:n.count,dialogs:n.dialogs.slice(c,c+o)}}))}function v(e,t,a,o){return p.invokeApi("messages.getHistory",{peer:e,offset:0,limit:a,max_id:t||0}).then(function(n){r.saveApiUsers(n.users),i.saveApiChats(n.chats),S(n.messages),o.count="messages.messagesSlice"==n._?n.count:n.messages.length;var s=0;if(t>0)for(s=0;so.history[s]);s++);return o.history.splice(s,o.history.length-s),angular.forEach(n.messages,function(e){o.history.push(e.id)}),a-=n.messages.length,a>0&&o.history.length1&&(c=Math.min(1e3,u[0].unread_count),o=c)}if(a>0)for(i=0;ir.history[i]);i++);return null!==r.count&&r.history.length==r.count||r.history.length>=i+(o||1)?e.when({count:r.count,history:d.concat(r.history.slice(i,i+(o||20))),unreadLimit:c}):(c&&(o=Math.max(20,c+2)),o=o||20,v(t,a,o,r).then(function(){if(i=0,a>0)for(i=0;ir.history[i]);i++);return{count:r.count,history:d.concat(r.history.slice(i,i+o)),unreadLimit:c}}))}function y(e,t,a,o,n){return p.invokeApi("messages.search",{peer:e,q:t||"",filter:a||{_:"inputMessagesFilterEmpty"},min_date:0,max_date:0,limit:n||20,max_id:o||0}).then(function(e){r.saveApiUsers(e.users),i.saveApiChats(e.chats),S(e.messages);var t="messages.messagesSlice"==e._?e.count:e.messages.length,a=[];return angular.forEach(e.messages,function(e){a.push(e.id)}),{count:t,history:a}})}function b(e){return p.invokeApi("messages.deleteMessages",{id:e}).then(function(e){return n.saveUpdate({_:"updateDeleteMessages",messages:e}),e})}function M(t,a,o){return n.saveSeq(a.seq)?a.offset?p.invokeApi(o,{peer:t,offset:a.offset,max_id:0}).then(function(e){return M(t,e,o)}):e.when():!1}function A(e){var a=s.getPeerID(e),o=q[a],n=F(a);if(!n[0]||!n[0].unread_count){if(!o||!o.history.length)return!1;var r,i,d=!1;for(u=o.history.length;u>=0;u--)if(r=o.history[u],i=T[r],i&&!i.out&&i.unread){d=!0;break}if(!d)return!1}var c=p.invokeApi("messages.readHistory",{peer:e,offset:0,max_id:0}).then(function(t){return M(e,t,"messages.readHistory")}).then(function(){n[0]&&(n[0].unread_count=0,t.$broadcast("dialog_unread",{peerID:a,count:0}))});if(o&&o.history.length){var r,i,u,a,n;for(u=0;u=0?(r="photo",i="photo."+a.type.split("/")[1]):"video/"==a.type.substr(0,6)?(r="video",i="video.mp4"):"audio/mpeg"==a.type||"audio/mp3"==a.type?(r="audio",i="audio.mp3"):(r="document",i="document."+a.type.split("/")[1]):(r="document",i="document."+a.type.split("/")[1]),a.name||(a.name=i),void 0===l&&(l=q[e]={count:null,history:[],pending:[]}),p.getUserID().then(function(o){var i={_:"messageMediaPending",type:r,file_name:a.name,size:a.size,progress:{percent:1,total:a.size}},m={_:"message",id:d,from_id:o,to_id:s.getOutputPeer(e),out:!0,unread:!0,date:tsNow()/1e3,message:"",media:i,random_id:u,pending:!0},f=function(e){var t=N[d];e?(m.error=!0,t&&(t.error=!0)):(delete m.error,t&&delete t.error)};m.send=function(){h.uploadFile(a).then(function(e){var t;switch(r){case"photo":t={_:"inputMediaUploadedPhoto",file:e};break;case"video":t={_:"inputMediaUploadedVideo",file:e,duration:0,w:0,h:0};break;case"audio":t={_:"inputMediaUploadedAudio",file:e,duration:0};break;case"document":default:t={_:"inputMediaUploadedDocument",file:e,file_name:a.name,mime_type:a.type}}p.invokeApi("messages.sendMedia",{peer:g,media:t,random_id:c}).then(function(e){n.saveSeq(e.seq)&&(n.saveUpdate({_:"updateMessageID",random_id:u,id:e.message.id}),m.date=e.message.date,m.id=e.message.id,m.media=e.message.media,n.saveUpdate({_:"updateNewMessage",message:m,pts:e.pts}))},function(){f(!0)})},function(){f(!0)},function(a){var o=N[d],n=Math.max(1,Math.floor(100*a.done/a.total));i.progress.done=a.done,i.progress.percent=n,o&&(o.media.progress.done=a.done,o.media.progress.percent=n,t.$broadcast("history_update",{peerID:e}))})},S([m]),l.pending.unshift(d),t.$broadcast("history_append",{peerID:e,messageID:d,my:!0}),m.send()}),j[u]=[e,d]}function $(e,a){var o=V--,r=[nextRandomInt(4294967295),nextRandomInt(4294967295)],i=bigint(r[0]).shiftLeft(32).add(bigint(r[1])).toString(),d=q[e],c=s.getInputPeerByID(e);void 0===d&&(d=q[e]={count:null,history:[],pending:[]}),p.getUserID().then(function(u){var l;switch(a._){case"inputMediaContact":l=angular.extend({},a,{_:"messageMediaContact",user_id:0})}var h={_:"message",id:o,from_id:u,to_id:s.getOutputPeer(e),out:!0,unread:!0,date:tsNow()/1e3,message:"",media:l,random_id:i,pending:!0},g=function(e){var t=N[o];e?(h.error=!0,t&&(t.error=!0)):(delete h.error,t&&delete t.error)};h.send=function(){p.invokeApi("messages.sendMedia",{peer:c,media:a,random_id:r}).then(function(e){n.saveSeq(e.seq)&&(n.saveUpdate({_:"updateMessageID",random_id:i,id:e.message.id}),h.date=e.message.date,h.id=e.message.id,h.media=e.message.media,n.saveUpdate({_:"updateNewMessage",message:h,pts:e.pts}))},function(){g(!0)})},S([h]),d.pending.unshift(o),t.$broadcast("history_append",{peerID:e,messageID:o,my:!0}),h.send()}),j[i]=[e,o]}function k(e,t){return p.invokeApi("messages.forwardMessages",{peer:s.getInputPeerByID(e),id:t}).then(function(e){r.saveApiUsers(e.users),i.saveApiChats(e.chats),n.saveSeq(e.seq)&&angular.forEach(e.messages,function(t){n.saveUpdate({_:"updateNewMessage",message:t,pts:e.pts})})})}function P(e,t){var a=j[e];if(a){var o,n=a[0],r=a[1],i=q[n],s=!1,d=!1;for(o=0;ot?t:e.out?t:e.from_id}function E(e,t){if(void 0!==z[e])return z[e];var a=angular.copy(T[e])||{id:e};return a.fromUser=r.getUser(a.from_id),(a.chatID=a.to_id.chat_id)?(a.peerID=-a.chatID,a.peerData=i.getChat(a.chatID),a.peerString=i.getChatString(a.chatID)):(a.peerID=a.out?a.to_id.user_id:a.from_id,a.peerData=r.getUser(a.peerID),a.peerString=r.getUserString(a.peerID)),a.peerPhoto=s.getPeerPhoto(a.peerID,"User","Group"),a.unreadCount=t,"messageService"==a._&&a.action.user_id&&(a.action.user=r.getUser(a.action.user_id)),a.message&&a.message.length&&(a.richMessage=g.wrapRichText(a.message.substr(0,64),{noLinks:!0,noLinebreaks:!0})),a.dateText=o("dateOrTime")(a.date),z[e]=a}function x(e){if(void 0!==N[e])return N[e];var t=angular.copy(T[e])||{id:e};if(t.fromUser=r.getUser(t.from_id),t.fromPhoto=r.getUserPhoto(t.from_id,"User"),"messageForwarded"==t._&&(t.fwdUser=r.getUser(t.fwd_from_id)),t.media){switch(t.media._){case"messageMediaPhoto":t.media.photo=d.wrapForHistory(t.media.photo.id);break;case"messageMediaVideo":t.media.video=c.wrapForHistory(t.media.video.id);break;case"messageMediaDocument":t.media.document=u.wrapForHistory(t.media.document.id);break;case"messageMediaAudio":t.media.audio=l.wrapForHistory(t.media.audio.id)}t.media.user_id&&(t.media.user=r.getUser(t.media.user_id),t.media.userPhoto=r.getUserPhoto(t.media.user_id,"User"))}else t.action&&("messageActionChatEditPhoto"==t.action._&&(t.action.photo=d.wrapForHistory(t.action.photo.id)),"messageActionChatEditTitle"==t.action._&&(t.action.rTitle=g.wrapRichText(t.action.title,{noLinks:!0,noLinebreaks:!0})||"DELETED"),t.action.user_id&&(t.action.user=r.getUser(t.action.user_id),t.action.userPhoto=r.getUserPhoto(t.action.user_id,"User")));return t.message&&t.message.length&&(t.richMessage=g.wrapRichText(t.message)),N[e]=t}function F(e){for(var t=0;t0?(c.title=(s.first_name||"")+(s.first_name&&s.last_name?" ":"")+(s.last_name||""),o=d,a=r.getUserString(n)):(c.title=(s.first_name||s.last_name||"Somebody")+" @ "+(i.getChat(-n).title||"Unknown chat"),o=i.getChatPhoto(-n,"Group"),a=i.getChatString(-n)),c.onclick=function(){t.$broadcast("history_focus",{peerString:a})},c.message=u,c.image=o.placeholder,c.key="msg"+e.id,o.location&&!o.location.empty?h.downloadSmallFile(o.location,o.size).then(function(t){c.image=t,e.unread&&m.notify(c)}):m.notify(c)}var T={},N={},z={},q={},R={count:null,dialogs:[]},j={},O={},H={},V=-1,B=f.createIndex(),G={query:!1};return m.start(),t.$on("apiUpdate",function(e,a){switch(a._){case"updateMessageID":O[a.id]=a.random_id;break;case"updateNewMessage":var o=a.message,n=C(o),r=q[n];if(void 0!==r){var i=q[n].history[0];if(o.id<=i)return!1}else r=q[n]={count:null,history:[],pending:[]};S([o]),null!==r.count&&r.count++,r.history.unshift(o.id);var d,c=O[o.id];c&&((d=P(c,o))&&t.$broadcast("history_update",{peerID:n}),delete O[o.id]),d||t.$broadcast("history_append",{peerID:n,messageID:o.id});var u,l=F(n);l.length?(u=l[0],R.dialogs.splice(l[1],1)):u={peerID:n,unread_count:0,top_message:!1},!o.out&&o.unread&&u.unread_count++,u.top_message=o.id,f.indexObject(n,s.getPeerSearchText(n),B),R.dialogs.unshift(u),t.$broadcast("dialogs_update",u),t.idle.isIDLE&&!o.out&&o.unread&&m.getPeerMuted(n).then(function(e){o.unread&&!e&&L(o)});break;case"updateReadMessages":var p,o,h,n,l,u,g={};for(h=0;hr&&(o=e,n=r)}),o}function s(e){var t=angular.copy(u[e])||{_:"photoEmpty"},a=260,o=260,n=i(t,a,o),r={placeholder:"img/placeholders/PhotoThumbConversation.gif",width:a,height:o};return n&&"photoSizeEmpty"!=n._?(n.w>n.h?r.height=parseInt(n.h*a/n.w):r.width=parseInt(n.w*o/n.h),r.location=n.location,r.size=n.size):(r.width=100,r.height=100),t.thumb=r,t}function d(e){var a=s(e),o=$(window).width()-36,r=$(t).height()-150,d=i(a,o,r),c={placeholder:"img/placeholders/PhotoThumbModal.gif"};return o>800&&(o-=200),c.width=o,c.height=r,d&&"photoSizeEmpty"!=d._&&(d.w/d.h>o/r?c.height=parseInt(d.h*o/d.w):(c.width=parseInt(d.w*r/d.h),c.width>o&&(c.height=parseInt(c.height*o/c.width),c.width=o)),c.width>=d.w&&c.height>=d.h&&(c.width=d.w,c.height=d.h),c.location=d.location,c.size=d.size),a.full=c,a.fromUser=n.getUser(a.user_id),a}function c(t){var o=a.$new(!0);o.photoID=t;e.open({templateUrl:"partials/photo_modal.html",controller:"PhotoModalController",scope:o,windowClass:"photo_modal_window"})}var u={};return a.openPhoto=c,{savePhoto:r,wrapForHistory:s,wrapForFull:d,openPhoto:c}}]).service("AppVideoManager",["$rootScope","$modal","$window","$timeout","MtpApiFileManager","AppUsersManager",function(e,t,a,o,n,r){function i(e){l[e.id]=e,e.thumb&&"photoCachedSize"==e.thumb._&&(n.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize")}function s(e){if(void 0!==p[e])return p[e];var t=angular.copy(l[e]),a=200,o=200,n=t.thumb,r={placeholder:"img/placeholders/VideoThumbConversation.gif",width:a,height:o};return n&&"photoSizeEmpty"!=n._&&(n.w>n.h?r.height=parseInt(n.h*a/n.w):r.width=parseInt(n.w*o/n.h),r.location=n.location,r.size=n.size),t.thumb=r,p[e]=t}function d(e){var t=s(e),o=Math.min($(window).width()-60,542),n=$(a).height()-150,i={placeholder:"img/placeholders/VideoThumbModal.gif",width:o,height:n};return t.w&&t.h?t.w>t.h?i.height=parseInt(t.h*o/t.w):(i.width=parseInt(t.w*n/t.h),i.width>o&&(i.height=parseInt(i.height*o/i.width),i.width=o)):i.height=i.width=Math.min(o,n),t.full=i,t.fromUser=r.getUser(t.user_id),t}function c(a){var o=e.$new(!0);o.videoID=a,o.progress={enabled:!1},o.player={};t.open({templateUrl:"partials/video_modal.html",controller:"VideoModalController",scope:o})}function u(t,a,r){function i(t){console.log("dl progress",t),d.progress.done=t.done,d.progress.percent=Math.max(1,Math.floor(100*t.done/t.total)),e.$broadcast("history_update")}var s=l[t],d=p[t]||s||{},c={_:"inputVideoFileLocation",id:t,access_hash:a||s.access_hash};d.progress={enabled:!0,percent:1,total:s.size};var u="mp4",h="video/mpeg4",g="video"+t+"."+u;window.chrome&&chrome.fileSystem&&chrome.fileSystem.chooseEntry?chrome.fileSystem.chooseEntry({type:"saveFile",suggestedName:g,accepts:[{mimeTypes:[h],extensions:[u]}]},function(e){n.downloadFile(s.dc_id,c,s.size,e,{mime:h}).then(function(){delete d.progress,console.log("file save done")},function(e){console.log("video download failed",e),d.progress.enabled=!1},i)}):n.downloadFile(s.dc_id,c,s.size,null,{mime:h}).then(function(e){if(delete d.progress,r)return void window.open(e,"_blank");var t=$("Download").css({position:"absolute",top:1,left:1}).attr("href",e).attr("target","_blank").attr("download",g).appendTo("body");t[0].dataset.downloadurl=[h,g,e].join(":"),t[0].click(),o(function(){t.remove()},100)},function(e){console.log("video download failed",e),d.progress.enabled=!1},i)}var l={},p={};return e.openVideo=c,e.downloadVideo=u,{saveVideo:i,wrapForHistory:s,wrapForFull:d,openVideo:c}}]).service("AppDocsManager",["$rootScope","$modal","$window","$timeout","MtpApiFileManager",function(e,t,a,o,n){function r(e){d[e.id]=e,e.thumb&&"photoCachedSize"==e.thumb._&&(n.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize")}function i(e){if(void 0!==c[e])return c[e];var t=angular.copy(d[e]),a=100,o=100,n=t.thumb,r={width:a,height:o};return n&&"photoSizeEmpty"!=n._?(n.w>n.h?r.height=parseInt(n.h*a/n.w):r.width=parseInt(n.w*o/n.h),r.location=n.location,r.size=n.size):r=!1,t.thumb=r,t.canDownload=!(window.chrome&&chrome.fileSystem&&chrome.fileSystem.chooseEntry),t.withPreview=t.canDownload&&t.mime_type.match(/^(image\/|application\/pdf)/),c[e]=t}function s(t,a,r){function i(t){console.log("dl progress",t),u.progress.done=t.done,u.progress.percent=Math.max(1,Math.floor(100*t.done/t.total)),e.$broadcast("history_update")}var s=d[t],u=c[t]||s||{},l={_:"inputDocumentFileLocation",id:t,access_hash:a||s.access_hash};if(u.progress={enabled:!0,percent:1,total:s.size},window.chrome&&chrome.fileSystem&&chrome.fileSystem.chooseEntry){var p=(s.file_name.split(".",2)||[])[1]||"";chrome.fileSystem.chooseEntry({type:"saveFile",suggestedName:s.file_name,accepts:[{mimeTypes:[s.mime_type],extensions:[p]}]},function(e){n.downloadFile(s.dc_id,l,s.size,e,{mime:s.mime_type}).then(function(){delete u.progress,console.log("file save done")},function(e){console.log("document download failed",e),u.progress.enabled=!1},i)})}else n.downloadFile(s.dc_id,l,s.size,null,{mime:s.mime_type}).then(function(e){if(delete u.progress,r)return void window.open(e,"_blank");var t=$("Download").css({position:"absolute",top:1,left:1}).attr("href",e).attr("target","_blank").attr("download",s.file_name).appendTo("body");t[0].dataset.downloadurl=[s.mime_type,s.file_name,e].join(":"),t[0].click(),o(function(){t.remove()},100)},function(e){console.log("document download failed",e),u.progress.enabled=!1},i)}var d={},c={};return e.downloadDoc=s,{saveDoc:r,wrapForHistory:i,downloadDoc:s}}]).service("AppAudioManager",["$rootScope","$modal","$window","$timeout","$sce","MtpApiFileManager",function(e,t,a,o,n,r){function i(e){c[e.id]=e}function s(e){if(void 0!==u[e])return u[e];var t=angular.copy(c[e]);return u[e]=t}function d(t,a){function i(t){console.log("dl progress",t),d.progress.done=t.done,d.progress.percent=Math.max(1,Math.floor(100*t.done/t.total)),e.$broadcast("history_update")}var s=c[t],d=u[t]||s||{},l={_:"inputAudioFileLocation",id:t,access_hash:a||s.access_hash};d.progress={enabled:!0,percent:1,total:s.size},r.downloadFile(s.dc_id,l,s.size,null,{mime:"audio/mpeg"}).then(function(t){delete d.progress,d.url=n.trustAsResourceUrl(t),d.autoplay=!0,o(function(){console.log("disable autoplay"),delete d.autoplay,e.$broadcast("history_update")},1e3)},function(e){console.log("document download failed",e),historyDoc.progress.enabled=!1},i)}var c={},u={};return e.openAudio=d,{saveAudio:i,wrapForHistory:s,openAudio:d}}]).service("ExternalResourcesManager",["$q","$http",function(e,t){function a(e){return void 0!==o[e]?o[e]:o[e]=t.get(e,{responseType:"blob",transformRequest:null}).then(function(e){return window.URL=window.URL||window.webkitURL,window.URL.createObjectURL(e.data)})}var o={};return{downloadImage:a}}]).service("ApiUpdatesManager",["$rootScope","MtpNetworkerFactory","AppUsersManager","AppChatsManager","AppPeersManager","MtpApiManager",function(e,t,a,o,n,r){function i(e){if(l.invalid)return!1;if(e.seq){if(!c(e.seq,e.seq_start))return!1;e.date&&(l.date=e.date)}switch(e._){case"updatesTooLong":s();break;case"updateShort":d(e.update);break;case"updatesCombined":case"updates":a.saveApiUsers(e.users),o.saveApiChats(e.chats);for(var t,i,u,t=0;tl.seq&&(console.warn("Seq hole",t,l.seq),s()),!1):(l.seq=e,!0):!0}function u(){t.setUpdatesProcessor(i),r.invokeApi("updates.getState").then(function(e){l.seq=e.seq,l.pts=e.pts,l.date=e.date,delete l.invalid})}var l={invalid:!0};return{saveUpdate:d,saveSeq:c,attach:u}}]).service("RichTextProcessor",["$sce","$sanitize",function(e,t){function a(e){return e.replace(/&/g,"&").replace(/([^\#-~| |!])/g,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(//g,">")}function o(e){for(var t,a,o,n,r=0;r-1)return a=Math.floor(t/n),o=t%n,{category:r,row:a,column:o};return console.error("emoji not found in spritesheet",e),null}function n(n,i){if(!n||!n.length)return"";i=i||{},n=n.replace(/\ufe0f/g,"",n);for(var p,h,g,m=n,f=[],_=!1;p=m.match(u);)f.push(a(m.substr(0,p.index))),p[1]?i.noLinks?f.push(a(p[0])):p[3]?f.push('',a(p[3]+p[4]),""):f.push('',a(p[2]+"://"+p[4]),""):p[5]?f.push(i.noLinebreaks?" ":"
"):p[6]&&((r=s[p[6]])&&(g=o(r))?(h=a(d[r][1][0]),_=!0,f.push('',":",h,":")):f.push(a(p[6]))),m=m.substr(p.index+p[0].length);if(f.push(a(m)),n=t(f.join("")),_&&(n=n.replace(//g,'')),!i.noLinks){var v=n.match(l),w=v&&v[1];w&&(n=n+'
')}return e.trustAs("html",n)}var r,i=[],s={},d=Config.Emoji,c=18;for(r in d)i.push(d[r][0]),s[d[r][0]]=r;var u=new RegExp("((?:(ftp|https?)://|(?:mailto:)?([A-Za-z0-9._%+-]+@))(\\S*\\.\\S*[^\\s.;,(){}<>\"']))|(\\n)|("+i.join("|")+")","i"),l=/(?:https?:\/\/)?(?:www\.)?youtu(?:|.be|be.com|.b)(?:\/v\/|\/watch\\?v=|e\/|\/watch(?:.+)v=)(.{11})(?:\&[^\s]*)?/;return{wrapRichText:n}}]).service("IdleManager",["$rootScope","$window","$timeout",function(e,t,a){function o(){i||(i=!0,$(t).on("blur focus keydown mousedown touchstart",n))}function n(o){"mousemove"==o.type&&$(t).off("mousemove",n);var i="blur"==o.type||"timeout"==o.type?!0:!1;a.cancel(r),i||(r=a(function(){n({type:"timeout"})},3e4)),e.idle.isIDLE!=i&&(e.$apply(function(){e.idle.isIDLE=i}),i&&"timeout"==o.type&&$(t).on("mousemove",n))}e.idle={isIDLE:!1};var r,i=!1;return{start:o}}]).service("StatusManager",["$timeout","$rootScope","MtpApiManager","IdleManager",function(e,t,a){function o(){d||(d=!0,t.$watch("idle.isIDLE",r),t.$watch("offline",r))}function n(e){var o=tsNow();if(!(e&&!s||!e&&5e4>o-s||t.offline))return s=e?0:o,a.invokeApi("account.updateStatus",{offline:e})}function r(){i&&e.cancel(i),t.idle.isIDLE?i=e(function(){n(!0)},5e3):(n(!1),i=e(r,6e4))}var i,s=0,d=!1;return{start:o}}]).service("NotificationsManager",["$rootScope","$window","$timeout","$interval","$q","MtpApiManager","AppPeersManager","IdleManager","AppConfigManager",function(e,t,a,o,n,r,i,s,d){function c(e){return void 0!==A[e]?A[e]:A[e]=r.invokeApi("account.getNotifySettings",{peer:{_:"inputNotifyPeer",peer:i.getInputPeerByID(e)}})}function u(e,t){var a=angular.copy(t);return a._="inputPeerNotifySettings",A[e]=n.when(t),r.invokeApi("account.updateNotifySettings",{peer:{_:"inputNotifyPeer",peer:i.getInputPeerByID(e)},settings:a})}function l(e){return c(e).then(function(e){return"peerNotifySettings"==e._&&1e3*e.mute_until>tsNow()})}function p(){if(!w)return!1;"granted"!==Notification.permission&&"denied"!==Notification.permission&&$(t).on("click",h);try{$(t).on("beforeunload",_)}catch(e){}}function h(){Notification.requestPermission(),$(t).off("click",h)}function g(t){return e.idle.isIDLE?(M++,w&&"granted"===Notification.permission?(d.get("notify_nosound").then(function(e){e||m()}),void d.get("notify_nodesktop").then(function(e){if(!e){var a=++b,o=t.key||"k"+a,n=new Notification(t.title,{icon:t.image||"",body:t.message||""});n.onclick=function(){n.close(),window.chrome&&chrome.app&&chrome.app.window&&chrome.app.window.current().focus(),window.focus(),_(),t.onclick&&t.onclick()},n.onclose=function(){delete y[o],_()},y[o]=n}})):!1):!1}function m(){var e="img/sound_a.wav";$("#notify_sound").html('')}function f(e){var t=y[e];if(t)try{t.close&&t.close()}catch(a){}}function _(){angular.forEach(y,function(e){try{e.close&&e.close()}catch(t){}}),y={}}var v,w="Notification"in window,y={},b=0,M=0,A={},D=$('link[rel="icon"]'),S=$(''),U=document.title;return e.$watch("idle.isIDLE",function(e){o.cancel(v),e?(U=document.title,v=o(function(){var e=tsNow();!M||e%2e3>1e3?(document.title=U,$('link[rel="icon"]').replaceWith(D)):(document.title=M>1?M+" notifications":"1 notification",$('link[rel="icon"]').replaceWith(S))},1e3)):(M=0,document.title=U,$('link[rel="icon"]').replaceWith(D),_())}),{start:p,notify:g,cancel:f,clear:_,getPeerSettings:c,getPeerMuted:l,savePeerSettings:u}}]).service("ErrorService",["$rootScope","$modal",function(e,t){function a(a,o){o=o||{};var n=e.$new();return angular.extend(n,a),t.open({templateUrl:"partials/error_modal.html",scope:n,windowClass:o.windowClass||"error_modal_window"})}function o(e,t){return a({title:e,description:t})}return{show:a,alert:o}}]).service("PeersSelectService",["$rootScope","$modal",function(e,t){function a(){var a=e.$new();return t.open({templateUrl:"partials/peer_select.html",controller:"PeerSelectController",scope:a,windowClass:"peer_select_window"}).result}return{selectPeer:a}}]).service("ContactsSelectService",["$rootScope","$modal",function(e,t){function a(a,o){o=o||{};var n=e.$new();return n.multiSelect=a,angular.extend(n,o),t.open({templateUrl:"partials/contacts_modal.html",controller:"ContactsModalController",scope:n,windowClass:"contacts_modal_window"}).result}return{selectContacts:function(e){return a(!0,e)},selectContact:function(e){return a(!1,e)}}}]); -"use strict";angular.module("myApp.controllers",[]).controller("AppWelcomeController",["$scope","$location","MtpApiManager",function(e,t,o){o.getUserID().then(function(o){o?t.url("/im"):e.showWelcome=!0})}]).controller("AppLoginController",["$scope","$location","$timeout","MtpApiManager","ErrorService",function(e,t,o,n,r){function a(e){n.setUserAuth(i.dcID,{expires:e.expires,id:e.user.id}),o.cancel(c),t.url("/im")}function s(){o.cancel(c),--e.callPending.remaining?c=o(s,1e3):(e.callPending.success=!1,n.invokeApi("auth.sendCall",{phone_number:e.credentials.phone_number,phone_code_hash:e.credentials.phone_code_hash},i).then(function(){e.callPending.success=!0}))}n.getUserID().then(function(e){return e?void t.url("/im"):void 0});var i={dcID:1,createNetworker:!0};e.credentials={},e.progress={},e.callPending={};var c;e.sendCode=function(){o.cancel(c),e.progress.enabled=!0,n.invokeApi("auth.checkPhone",{phone_number:e.credentials.phone_number},i).then(function(t){return e.progress.enabled=!1,t.phone_registered?(e.progress.enabled=!0,void n.invokeApi("auth.sendCode",{phone_number:e.credentials.phone_number,sms_type:0,api_id:2496,api_hash:"8da85b0d5bfe62527e5b244c209159c3"},i).then(function(t){e.progress.enabled=!1,e.credentials.phone_code_hash=t.phone_code_hash,e.credentials.phone_occupied=t.phone_registered,e.error={},e.callPending.remaining=t.send_call_timeout,s()},function(t){switch(e.progress.enabled=!1,console.log("sendCode error",t),t.type){case"PHONE_NUMBER_INVALID":e.error={field:"phone"}}})):(r.show({error:{code:400,type:"ACCOUNT_REQUIRED"},phone:e.credentials.phone_number}),!1)},function(t){switch(e.progress.enabled=!1,t.type){case"PHONE_NUMBER_INVALID":e.error={field:"phone"};break;default:r.alert("Unknown error occured","Please check your internet connection or install the latest version of Google Chrome browser.")}})},e.logIn=function(t){var o="auth.signIn",r={phone_number:e.credentials.phone_number,phone_code_hash:e.credentials.phone_code_hash,phone_code:e.credentials.phone_code};t&&(o="auth.signUp",angular.extend(r,{first_name:e.credentials.first_name,last_name:e.credentials.last_name})),e.progress.enabled=!0,n.invokeApi(o,r,i).then(a,function(t){if(e.progress.enabled=!1,400==t.code&&"PHONE_NUMBER_UNOCCUPIED"==t.type)return e.logIn(!0);if(400==t.code&&"PHONE_NUMBER_OCCUPIED"==t.type)return e.logIn(!1);switch(t.type){case"FIRSTNAME_INVALID":e.error={field:"first_name"};break;case"LASTNAME_INVALID":e.error={field:"last_name"};break;case"PHONE_CODE_INVALID":e.error={field:"phone_code"}}})}}]).controller("AppIMController",["$scope","$location","$routeParams","$modal","$rootScope","$modalStack","MtpApiManager","AppUsersManager","ContactsSelectService",function(e,t,o,n,r,a,s,i,c){function l(){e.curDialog={peer:o.p||!1}}e.$on("$routeUpdate",l),e.$on("history_focus",function(o,n){a.dismissAll(),n.peerString==e.curDialog.peer?e.$broadcast("ui_history_focus"):t.url("/im?p="+n.peerString)}),e.isLoggedIn=!0,e.openSettings=function(){n.open({templateUrl:"partials/settings_modal.html",controller:"SettingsModalController",scope:r.$new(),windowClass:"settings_modal_window"})},e.openContacts=function(){c.selectContact().then(function(t){e.dialogSelect(i.getUserString(t))})},e.openGroup=function(){c.selectContacts().then(function(t){if(1==t.length)e.dialogSelect(i.getUserString(t[0]));else if(t.length>1){var o=r.$new();o.userIDs=t,n.open({templateUrl:"partials/chat_create_modal.html",controller:"ChatCreateModalController",scope:o,windowClass:"contacts_modal_window"})}})},e.dialogSelect=function(e){r.$broadcast("history_focus",{peerString:e})},l()}]).controller("AppImDialogsController",["$scope","$location","MtpApiManager","AppUsersManager","AppChatsManager","AppMessagesManager","AppPeersManager",function(e,t,o,n,r,a){function s(){l=0,u=0,p=!1,d={},c=!1,a.getDialogs(e.search.query,u).then(function(t){e.dialogs=[],e.contacts=[],t.dialogs.length&&(l+=t.dialogs.length,u=t.dialogs[t.dialogs.length-1].top_message,p=null===t.count||l0?s=t:0>t&&(a=s+t),o=a;s>o;o++)n=e.history[o],r&&n.from_id==r.from_id&&n.date0){var t=[];angular.forEach(e.selectedMsgs,function(e,o){t.push(o)}),i.deleteMessages(t).then(function(){D()})}}function I(){if(e.selectedCount>0){var t=[];angular.forEach(e.selectedMsgs,function(e,o){t.push(o)}),u.selectPeer().then(function(e){var o=c.getPeerID(e);i.forwardMessages(o,t).then(function(){D(),n.$broadcast("history_focus",{peerString:e})})})}}function A(){e.selectActions?D():(e.selectActions=!0,e.$broadcast("ui_panel_update"))}function U(t){t&&(e.missedCount=0),e.mediaType=t||!1,e.history=[],m()}function P(){e.curDialog.peerID>0?n.openUser(e.curDialog.peerID):e.curDialog.peerID<0&&n.openChat(-e.curDialog.peerID)}e.$watch("curDialog.peer",h),l.attach(),p.start(),d.start(),e.history=[],e.mediaType=!1,e.selectedMsgs={},e.selectedCount=0,e.selectActions=!1,e.missedCount=0,e.typing={},e.state={},e.toggleMessage=C,e.selectedDelete=v,e.selectedForward=I,e.selectedCancel=D,e.selectedFlush=M,e.toggleEdit=A,e.toggleMedia=U,e.showPeerInfo=P;var b,S=0,w=!1,E=0,k={photos:"inputMessagesFilterPhotos",video:"inputMessagesFilterVideo",documents:"inputMessagesFilterDocument"},F=0,N={};e.$on("history_update",angular.noop),e.$on("history_append",function(t,r){if(r.peerID==e.curDialog.peerID){if(e.mediaType)return void(r.my?U():e.missedCount++);e.history.push(i.wrapForHistory(r.messageID)),f(-3),e.typing={},e.$broadcast("ui_history_append",{my:r.my}),r.my&&(e.historyUnread={}),S++,n.idle.isIDLE||o(function(){i.readHistory(e.curDialog.inputPeer)})}}),e.$on("history_delete",function(t,o){if(o.peerID==e.curDialog.peerID){for(var n=[],r=0;r0){var t=[];return angular.forEach(e.selectedContacts,function(e,o){t.push(o)}),o.close(t)}},e.importContact=function(){t.open({templateUrl:"partials/import_contact_modal.html",controller:"ImportContactModalController",windowClass:"import_contact_modal_window"}).result.then(function(t){t&&r(e.search&&e.search.query||"")})}}]).controller("PeerSelectController",["$scope","$modalInstance",function(e,t){e.dialogSelect=function(e){t.close(e)}}]).controller("ChatCreateModalController",["$scope","$modalInstance","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","ApiUpdatesManager",function(e,t,o,n,r,a,s){e.group={name:""},e.createGroup=function(){if(e.group.name){var t=[];return angular.forEach(e.userIDs,function(e){t.push({_:"inputUserContact",user_id:e})}),n.invokeApi("messages.createChat",{title:e.group.name,users:t}).then(function(e){r.saveApiUsers(e.users),a.saveApiChats(e.chats),s.saveSeq(e.seq)&&s.saveUpdate({_:"updateNewMessage",message:e.message,pts:e.pts});var t=a.getChatString(e.message.to_id.chat_id);o.$broadcast("history_focus",{peerString:t})})}},e.back=function(){t.dismiss()}}]).controller("ChatEditModalController",["$scope","$modalInstance","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","ApiUpdatesManager",function(e,t,o,n,r,a,s){var i=a.getChat(e.chatID);e.group={name:i.title},e.updateGroup=function(){return e.group.name?e.group.name==i.title?t.close():n.invokeApi("messages.editChatTitle",{chat_id:e.chatID,title:e.group.name}).then(function(t){r.saveApiUsers(t.users),a.saveApiChats(t.chats),s.saveSeq(t.seq)&&s.saveUpdate({_:"updateNewMessage",message:t.message,pts:t.pts});var n=a.getChatString(e.chatID);o.$broadcast("history_focus",{peerString:n})}):void 0}}]).controller("ImportContactModalController",["$scope","$modalInstance","$rootScope","AppUsersManager",function(e,t,o,n){void 0===e.importContact&&(e.importContact={}),e.doImport=function(){e.importContact&&e.importContact.phone&&(e.progress={enabled:!0},n.importContact(e.importContact.phone,e.importContact.first_name,e.importContact.last_name).then(function(e){t.close(e)})["finally"](function(){delete e.progress.enabled}))}}]); +"use strict";angular.module("myApp.services",[]).service("AppConfigManager",["$q",function(e){function t(){for(var t=Array.prototype.slice.call(arguments),o=[],a=1==t.length,d=!0,c=0;c0?{_:"inputPeerForeign",user_id:t,access_hash:e.getUser(t).access_hash||0}:0>t?{_:"inputPeerChat",chat_id:-t}:void 0},getPeerSearchText:function(o){var a;if(o>0)a=e.getUserSearchText(o);else if(0>o){var n=t.getChat(-o);a=n.title||""}return a},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),o=e.substr(1).split("_");return t?o[0]:-o[0]||0},getPeer:function(o){return o>0?e.getUser(o):t.getChat(-o)},getPeerPhoto:function(o,a,n){return o>0?e.getUserPhoto(o,a):t.getChatPhoto(-o,n)}}}]).service("SearchIndexManager",function(){function e(){return{shortIndexes:{},fullTexts:{}}}function t(e){e=e.replace(n," ").replace(r,"").toLowerCase();for(var t in i)i.hasOwnProperty(t)&&(e=e.replace(i[t],t));return e}function o(e,o,a){if(void 0!==a.fullTexts[e])return!1;if(o=t(o),!o.length)return!1;var n=a.shortIndexes;a.fullTexts[e]=o,angular.forEach(o.split(" "),function(t){var o,a,r=Math.min(t.length,3);for(a=1;r>=a;a++)o=t.substr(0,a),void 0===n[o]?n[o]=[e]:n[o].push(e)})}function a(e,o){console.time("search");var a=o.shortIndexes,n=o.fullTexts;e=t(e);var r,i,s,d,c,u=e.split(" "),l=!1;for(i=0;ir.length)&&(l=r)}for(r={},s=0;s,<\s]+/g,r=/^\s+|\s$/g,i={a:/[áâäà]/g,e:/[éêëè]/g,i:/[íîïì]/g,o:/[óôöò]/g,u:/[úûüù]/g,c:/ç/g,ss:/ß/g};return{createIndex:e,indexObject:o,cleanSearchText:t,search:a}}).service("AppMessagesManager",["$q","$rootScope","$location","$filter","ApiUpdatesManager","AppUsersManager","AppChatsManager","AppPeersManager","AppPhotosManager","AppVideoManager","AppDocsManager","AppAudioManager","MtpApiManager","MtpApiFileManager","RichTextProcessor","NotificationsManager","SearchIndexManager",function(e,t,o,a,n,r,i,s,d,c,u,l,p,h,g,m,f){function _(t,o,a){var n=R;if(angular.isString(t)&&t.length){if(!a||G.query!==t){G.query=t;var d=f.search(t,B);G.dialogs=[],angular.forEach(R.dialogs,function(e){d[e.peerID]&&G.dialogs.push(e)}),G.count=G.dialogs.length}n=G}else G.query=!1;var c=0;if(o>0)for(c=0;cn.dialogs[c].top_message);c++);return null!==n.count&&n.dialogs.length==n.count||n.dialogs.length>=c+(a||1)?e.when({count:n.count,dialogs:n.dialogs.slice(c,c+(a||20))}):(a=a||20,p.invokeApi("messages.getDialogs",{offset:c,limit:a,max_id:o||0}).then(function(e){if(r.saveApiUsers(e.users),i.saveApiChats(e.chats),D(e.messages),o>0)for(c=0;cn.dialogs[c].top_message);c++);return n.count="messages.dialogsSlice"==e._?e.count:e.dialogs.length,n.dialogs.splice(c,n.dialogs.length-c),angular.forEach(e.dialogs,function(e){var t=s.getPeerID(e.peer),o=s.getPeerSearchText(t);f.indexObject(t,o,B),n.dialogs.push({peerID:t,top_message:e.top_message,unread_count:e.unread_count}),void 0===q[t]&&(q[t]={count:null,history:[e.top_message],pending:[]})}),{count:n.count,dialogs:n.dialogs.slice(c,c+a)}}))}function v(e,t,o,a){return p.invokeApi("messages.getHistory",{peer:e,offset:0,limit:o,max_id:t||0}).then(function(n){r.saveApiUsers(n.users),i.saveApiChats(n.chats),D(n.messages),a.count="messages.messagesSlice"==n._?n.count:n.messages.length;var s=0;if(t>0)for(s=0;sa.history[s]);s++);return a.history.splice(s,a.history.length-s),angular.forEach(n.messages,function(e){a.history.push(e.id)}),o-=n.messages.length,o>0&&a.history.length1&&(c=Math.min(1e3,u[0].unread_count),a=c)}if(o>0)for(i=0;ir.history[i]);i++);return null!==r.count&&r.history.length==r.count||r.history.length>=i+(a||1)?e.when({count:r.count,history:d.concat(r.history.slice(i,i+(a||20))),unreadLimit:c}):(c&&(a=Math.max(20,c+2)),a=a||20,v(t,o,a,r).then(function(){if(i=0,o>0)for(i=0;ir.history[i]);i++);return{count:r.count,history:d.concat(r.history.slice(i,i+a)),unreadLimit:c}}))}function y(e,t,o,a,n){return p.invokeApi("messages.search",{peer:e,q:t||"",filter:o||{_:"inputMessagesFilterEmpty"},min_date:0,max_date:0,limit:n||20,max_id:a||0}).then(function(e){r.saveApiUsers(e.users),i.saveApiChats(e.chats),D(e.messages);var t="messages.messagesSlice"==e._?e.count:e.messages.length,o=[];return angular.forEach(e.messages,function(e){o.push(e.id)}),{count:t,history:o}})}function b(e){return p.invokeApi("messages.deleteMessages",{id:e}).then(function(e){return n.saveUpdate({_:"updateDeleteMessages",messages:e}),e})}function M(t,o,a){return n.saveSeq(o.seq)?o.offset?p.invokeApi(a,{peer:t,offset:o.offset,max_id:0}).then(function(e){return M(t,e,a)}):e.when():!1}function S(e){var o=s.getPeerID(e),a=q[o],n=F(o);if(!n[0]||!n[0].unread_count){if(!a||!a.history.length)return!1;var r,i,d=!1;for(u=a.history.length;u>=0;u--)if(r=a.history[u],i=T[r],i&&!i.out&&i.unread){d=!0;break}if(!d)return!1}var c=p.invokeApi("messages.readHistory",{peer:e,offset:0,max_id:0}).then(function(t){return M(e,t,"messages.readHistory")}).then(function(){n[0]&&(n[0].unread_count=0,t.$broadcast("dialog_unread",{peerID:o,count:0}))});if(a&&a.history.length){var r,i,u,o,n;for(u=0;u=0?(r="photo",i="photo."+o.type.split("/")[1]):"video/"==o.type.substr(0,6)?(r="video",i="video.mp4"):"audio/mpeg"==o.type||"audio/mp3"==o.type?(r="audio",i="audio.mp3"):(r="document",i="document."+o.type.split("/")[1]):(r="document",i="document."+o.type.split("/")[1]),o.name||(o.name=i),void 0===l&&(l=q[e]={count:null,history:[],pending:[]}),p.getUserID().then(function(a){var i={_:"messageMediaPending",type:r,file_name:o.name,size:o.size,progress:{percent:1,total:o.size}},m={_:"message",id:d,from_id:a,to_id:s.getOutputPeer(e),out:!0,unread:!0,date:tsNow()/1e3,message:"",media:i,random_id:u,pending:!0},f=function(e){var t=z[d];e?(m.error=!0,t&&(t.error=!0)):(delete m.error,t&&delete t.error)};m.send=function(){h.uploadFile(o).then(function(e){var t;switch(r){case"photo":t={_:"inputMediaUploadedPhoto",file:e};break;case"video":t={_:"inputMediaUploadedVideo",file:e,duration:0,w:0,h:0};break;case"audio":t={_:"inputMediaUploadedAudio",file:e,duration:0};break;case"document":default:t={_:"inputMediaUploadedDocument",file:e,file_name:o.name,mime_type:o.type}}p.invokeApi("messages.sendMedia",{peer:g,media:t,random_id:c}).then(function(e){n.saveSeq(e.seq)&&(n.saveUpdate({_:"updateMessageID",random_id:u,id:e.message.id}),m.date=e.message.date,m.id=e.message.id,m.media=e.message.media,n.saveUpdate({_:"updateNewMessage",message:m,pts:e.pts}))},function(){f(!0)})},function(){f(!0)},function(o){var a=z[d],n=Math.max(1,Math.floor(100*o.done/o.total));i.progress.done=o.done,i.progress.percent=n,a&&(a.media.progress.done=o.done,a.media.progress.percent=n,t.$broadcast("history_update",{peerID:e}))})},D([m]),l.pending.unshift(d),t.$broadcast("history_append",{peerID:e,messageID:d,my:!0}),m.send()}),j[u]=[e,d]}function I(e,o){var a=V--,r=[nextRandomInt(4294967295),nextRandomInt(4294967295)],i=bigint(r[0]).shiftLeft(32).add(bigint(r[1])).toString(),d=q[e],c=s.getInputPeerByID(e);void 0===d&&(d=q[e]={count:null,history:[],pending:[]}),p.getUserID().then(function(u){var l;switch(o._){case"inputMediaContact":l=angular.extend({},o,{_:"messageMediaContact",user_id:0})}var h={_:"message",id:a,from_id:u,to_id:s.getOutputPeer(e),out:!0,unread:!0,date:tsNow()/1e3,message:"",media:l,random_id:i,pending:!0},g=function(e){var t=z[a];e?(h.error=!0,t&&(t.error=!0)):(delete h.error,t&&delete t.error)};h.send=function(){p.invokeApi("messages.sendMedia",{peer:c,media:o,random_id:r}).then(function(e){n.saveSeq(e.seq)&&(n.saveUpdate({_:"updateMessageID",random_id:i,id:e.message.id}),h.date=e.message.date,h.id=e.message.id,h.media=e.message.media,n.saveUpdate({_:"updateNewMessage",message:h,pts:e.pts}))},function(){g(!0)})},D([h]),d.pending.unshift(a),t.$broadcast("history_append",{peerID:e,messageID:a,my:!0}),h.send()}),j[i]=[e,a]}function k(e,t){return p.invokeApi("messages.forwardMessages",{peer:s.getInputPeerByID(e),id:t}).then(function(e){r.saveApiUsers(e.users),i.saveApiChats(e.chats),n.saveSeq(e.seq)&&angular.forEach(e.messages,function(t){n.saveUpdate({_:"updateNewMessage",message:t,pts:e.pts})})})}function P(e,t){var o=j[e];if(o){var a,n=o[0],r=o[1],i=q[n],s=!1,d=!1;for(a=0;at?t:e.out?t:e.from_id}function E(e,t){if(void 0!==N[e])return N[e];var o=angular.copy(T[e])||{id:e};return o.fromUser=r.getUser(o.from_id),(o.chatID=o.to_id.chat_id)?(o.peerID=-o.chatID,o.peerData=i.getChat(o.chatID),o.peerString=i.getChatString(o.chatID)):(o.peerID=o.out?o.to_id.user_id:o.from_id,o.peerData=r.getUser(o.peerID),o.peerString=r.getUserString(o.peerID)),o.peerPhoto=s.getPeerPhoto(o.peerID,"User","Group"),o.unreadCount=t,"messageService"==o._&&o.action.user_id&&(o.action.user=r.getUser(o.action.user_id)),o.message&&o.message.length&&(o.richMessage=g.wrapRichText(o.message.substr(0,64),{noLinks:!0,noLinebreaks:!0})),o.dateText=a("dateOrTime")(o.date),N[e]=o}function x(e){if(void 0!==z[e])return z[e];var t=angular.copy(T[e])||{id:e};if(t.fromUser=r.getUser(t.from_id),t.fromPhoto=r.getUserPhoto(t.from_id,"User"),"messageForwarded"==t._&&(t.fwdUser=r.getUser(t.fwd_from_id)),t.media){switch(t.media._){case"messageMediaPhoto":t.media.photo=d.wrapForHistory(t.media.photo.id);break;case"messageMediaVideo":t.media.video=c.wrapForHistory(t.media.video.id);break;case"messageMediaDocument":t.media.document=u.wrapForHistory(t.media.document.id);break;case"messageMediaAudio":t.media.audio=l.wrapForHistory(t.media.audio.id)}t.media.user_id&&(t.media.user=r.getUser(t.media.user_id),t.media.userPhoto=r.getUserPhoto(t.media.user_id,"User"))}else t.action&&("messageActionChatEditPhoto"==t.action._&&(t.action.photo=d.wrapForHistory(t.action.photo.id)),"messageActionChatEditTitle"==t.action._&&(t.action.rTitle=g.wrapRichText(t.action.title,{noLinks:!0,noLinebreaks:!0})||"DELETED"),t.action.user_id&&(t.action.user=r.getUser(t.action.user_id),t.action.userPhoto=r.getUserPhoto(t.action.user_id,"User")));return t.message&&t.message.length&&(t.richMessage=g.wrapRichText(t.message)),z[e]=t}function F(e){for(var t=0;t0?(c.title=(s.first_name||"")+(s.first_name&&s.last_name?" ":"")+(s.last_name||""),a=d,o=r.getUserString(n)):(c.title=(s.first_name||s.last_name||"Somebody")+" @ "+(i.getChat(-n).title||"Unknown chat"),a=i.getChatPhoto(-n,"Group"),o=i.getChatString(-n)),c.onclick=function(){t.$broadcast("history_focus",{peerString:o})},c.message=u,c.image=a.placeholder,c.key="msg"+e.id,a.location&&!a.location.empty?h.downloadSmallFile(a.location,a.size).then(function(t){c.image=t,e.unread&&m.notify(c)}):m.notify(c)}var T={},z={},N={},q={},R={count:null,dialogs:[]},j={},O={},H={},V=-1,B=f.createIndex(),G={query:!1};return m.start(),t.$on("apiUpdate",function(e,o){switch(o._){case"updateMessageID":O[o.id]=o.random_id;break;case"updateNewMessage":var a=o.message,n=C(a),r=q[n];if(void 0!==r){var i=q[n].history[0];if(a.id<=i)return!1}else r=q[n]={count:null,history:[],pending:[]};D([a]),null!==r.count&&r.count++,r.history.unshift(a.id);var d,c=O[a.id];c&&((d=P(c,a))&&t.$broadcast("history_update",{peerID:n}),delete O[a.id]),d||t.$broadcast("history_append",{peerID:n,messageID:a.id});var u,l=F(n);l.length?(u=l[0],R.dialogs.splice(l[1],1)):u={peerID:n,unread_count:0,top_message:!1},!a.out&&a.unread&&u.unread_count++,u.top_message=a.id,f.indexObject(n,s.getPeerSearchText(n),B),R.dialogs.unshift(u),t.$broadcast("dialogs_update",u),t.idle.isIDLE&&!a.out&&a.unread&&m.getPeerMuted(n).then(function(e){a.unread&&!e&&L(a)});break;case"updateReadMessages":var p,a,h,n,l,u,g={};for(h=0;hr&&(a=e,n=r)}),a}function s(e){var t=angular.copy(l[e])||{_:"photoEmpty"},o=260,a=260,n=i(t,o,a),r={placeholder:"img/placeholders/PhotoThumbConversation.gif",width:o,height:a};return n&&"photoSizeEmpty"!=n._?(n.w>n.h?r.height=parseInt(n.h*o/n.w):r.width=parseInt(n.w*a/n.h),r.location=n.location,r.size=n.size):(r.width=100,r.height=100),t.thumb=r,t}function d(e){if(l[e]){var o=l[e],n=$(window).width()-36,r=$(t).height()-150,s=i(o,n,r);s&&!s.preloaded&&(s.preloaded=!0,s.size?a.downloadFile(s.location.dc_id,{_:"inputFileLocation",volume_id:s.location.volume_id,local_id:s.location.local_id,secret:s.location.secret},s.size):a.downloadSmallFile(s.location))}}function c(e){var o=s(e),a=$(window).width()-36,r=$(t).height()-150,d=i(o,a,r),c={placeholder:"img/placeholders/PhotoThumbModal.gif"};return a>800&&(a-=200),c.width=a,c.height=r,d&&"photoSizeEmpty"!=d._&&(d.w/d.h>a/r?c.height=parseInt(d.h*a/d.w):(c.width=parseInt(d.w*r/d.h),c.width>a&&(c.height=parseInt(c.height*a/c.width),c.width=a)),c.width>=d.w&&c.height>=d.h&&(c.width=d.w,c.height=d.h),c.location=d.location,c.size=d.size),o.full=c,o.fromUser=n.getUser(o.user_id),o}function u(t){var a=o.$new(!0);a.photoID=t;e.open({templateUrl:"partials/photo_modal.html",controller:"PhotoModalController",scope:a,windowClass:"photo_modal_window"})}var l={};return o.preloadPhoto=d,o.openPhoto=u,{savePhoto:r,preloadPhoto:d,wrapForHistory:s,wrapForFull:c,openPhoto:u}}]).service("AppVideoManager",["$rootScope","$modal","$window","$timeout","MtpApiFileManager","AppUsersManager",function(e,t,o,a,n,r){function i(e){l[e.id]=e,e.thumb&&"photoCachedSize"==e.thumb._&&(n.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize")}function s(e){if(void 0!==p[e])return p[e];var t=angular.copy(l[e]),o=200,a=200,n=t.thumb,r={placeholder:"img/placeholders/VideoThumbConversation.gif",width:o,height:a};return n&&"photoSizeEmpty"!=n._&&(n.w>n.h?r.height=parseInt(n.h*o/n.w):r.width=parseInt(n.w*a/n.h),r.location=n.location,r.size=n.size),t.thumb=r,p[e]=t}function d(e){var t=s(e),a=Math.min($(window).width()-60,542),n=$(o).height()-150,i={placeholder:"img/placeholders/VideoThumbModal.gif",width:a,height:n};return t.w&&t.h?t.w>t.h?i.height=parseInt(t.h*a/t.w):(i.width=parseInt(t.w*n/t.h),i.width>a&&(i.height=parseInt(i.height*a/i.width),i.width=a)):i.height=i.width=Math.min(a,n),t.full=i,t.fromUser=r.getUser(t.user_id),t}function c(o){var a=e.$new(!0);a.videoID=o,a.progress={enabled:!1},a.player={};t.open({templateUrl:"partials/video_modal.html",controller:"VideoModalController",scope:a})}function u(t,o,r){function i(t){console.log("dl progress",t),d.progress.done=t.done,d.progress.percent=Math.max(1,Math.floor(100*t.done/t.total)),e.$broadcast("history_update")}var s=l[t],d=p[t]||s||{},c={_:"inputVideoFileLocation",id:t,access_hash:o||s.access_hash};d.progress={enabled:!0,percent:1,total:s.size};var u="mp4",h="video/mpeg4",g="video"+t+"."+u;window.chrome&&chrome.fileSystem&&chrome.fileSystem.chooseEntry?chrome.fileSystem.chooseEntry({type:"saveFile",suggestedName:g,accepts:[{mimeTypes:[h],extensions:[u]}]},function(e){n.downloadFile(s.dc_id,c,s.size,e,{mime:h}).then(function(){delete d.progress,console.log("file save done")},function(e){console.log("video download failed",e),d.progress.enabled=!1},i)}):n.downloadFile(s.dc_id,c,s.size,null,{mime:h}).then(function(e){if(delete d.progress,r)return void window.open(e,"_blank");var t=$("Download").css({position:"absolute",top:1,left:1}).attr("href",e).attr("target","_blank").attr("download",g).appendTo("body");t[0].dataset.downloadurl=[h,g,e].join(":"),t[0].click(),a(function(){t.remove()},100)},function(e){console.log("video download failed",e),d.progress.enabled=!1},i)}var l={},p={};return e.openVideo=c,e.downloadVideo=u,{saveVideo:i,wrapForHistory:s,wrapForFull:d,openVideo:c}}]).service("AppDocsManager",["$rootScope","$modal","$window","$timeout","MtpApiFileManager",function(e,t,o,a,n){function r(e){d[e.id]=e,e.thumb&&"photoCachedSize"==e.thumb._&&(n.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize")}function i(e){if(void 0!==c[e])return c[e];var t=angular.copy(d[e]),o=100,a=100,n=t.thumb,r={width:o,height:a};return n&&"photoSizeEmpty"!=n._?(n.w>n.h?r.height=parseInt(n.h*o/n.w):r.width=parseInt(n.w*a/n.h),r.location=n.location,r.size=n.size):r=!1,t.thumb=r,t.canDownload=!(window.chrome&&chrome.fileSystem&&chrome.fileSystem.chooseEntry),t.withPreview=t.canDownload&&t.mime_type.match(/^(image\/|application\/pdf)/),c[e]=t}function s(t,o,r){function i(t){console.log("dl progress",t),u.progress.done=t.done,u.progress.percent=Math.max(1,Math.floor(100*t.done/t.total)),e.$broadcast("history_update")}var s=d[t],u=c[t]||s||{},l={_:"inputDocumentFileLocation",id:t,access_hash:o||s.access_hash};if(u.progress={enabled:!0,percent:1,total:s.size},window.chrome&&chrome.fileSystem&&chrome.fileSystem.chooseEntry){var p=(s.file_name.split(".",2)||[])[1]||"";chrome.fileSystem.chooseEntry({type:"saveFile",suggestedName:s.file_name,accepts:[{mimeTypes:[s.mime_type],extensions:[p]}]},function(e){n.downloadFile(s.dc_id,l,s.size,e,{mime:s.mime_type}).then(function(){delete u.progress,console.log("file save done")},function(e){console.log("document download failed",e),u.progress.enabled=!1},i)})}else n.downloadFile(s.dc_id,l,s.size,null,{mime:s.mime_type}).then(function(e){if(delete u.progress,r)return void window.open(e,"_blank");var t=$("Download").css({position:"absolute",top:1,left:1}).attr("href",e).attr("target","_blank").attr("download",s.file_name).appendTo("body");t[0].dataset.downloadurl=[s.mime_type,s.file_name,e].join(":"),t[0].click(),a(function(){t.remove()},100)},function(e){console.log("document download failed",e),u.progress.enabled=!1},i)}var d={},c={};return e.downloadDoc=s,{saveDoc:r,wrapForHistory:i,downloadDoc:s}}]).service("AppAudioManager",["$rootScope","$modal","$window","$timeout","$sce","MtpApiFileManager",function(e,t,o,a,n,r){function i(e){c[e.id]=e}function s(e){if(void 0!==u[e])return u[e];var t=angular.copy(c[e]);return u[e]=t}function d(t,o){function i(t){console.log("dl progress",t),d.progress.done=t.done,d.progress.percent=Math.max(1,Math.floor(100*t.done/t.total)),e.$broadcast("history_update")}var s=c[t],d=u[t]||s||{},l={_:"inputAudioFileLocation",id:t,access_hash:o||s.access_hash};d.progress={enabled:!0,percent:1,total:s.size},r.downloadFile(s.dc_id,l,s.size,null,{mime:"audio/mpeg"}).then(function(t){delete d.progress,d.url=n.trustAsResourceUrl(t),d.autoplay=!0,a(function(){console.log("disable autoplay"),delete d.autoplay,e.$broadcast("history_update")},1e3)},function(e){console.log("document download failed",e),historyDoc.progress.enabled=!1},i)}var c={},u={};return e.openAudio=d,{saveAudio:i,wrapForHistory:s,openAudio:d}}]).service("ExternalResourcesManager",["$q","$http",function(e,t){function o(e){return void 0!==a[e]?a[e]:a[e]=t.get(e,{responseType:"blob",transformRequest:null}).then(function(e){return window.URL=window.URL||window.webkitURL,window.URL.createObjectURL(e.data)})}var a={};return{downloadImage:o}}]).service("ApiUpdatesManager",["$rootScope","MtpNetworkerFactory","AppUsersManager","AppChatsManager","AppPeersManager","MtpApiManager",function(e,t,o,a,n,r){function i(e){if(l.invalid)return!1;if(e.seq){if(!c(e.seq,e.seq_start))return!1;e.date&&(l.date=e.date)}switch(e._){case"updatesTooLong":s();break;case"updateShort":d(e.update);break;case"updatesCombined":case"updates":o.saveApiUsers(e.users),a.saveApiChats(e.chats);for(var t,i,u,t=0;tl.seq&&(console.warn("Seq hole",t,l.seq),s()),!1):(l.seq=e,!0):!0}function u(){t.setUpdatesProcessor(i),r.invokeApi("updates.getState").then(function(e){l.seq=e.seq,l.pts=e.pts,l.date=e.date,delete l.invalid})}var l={invalid:!0};return{saveUpdate:d,saveSeq:c,attach:u}}]).service("RichTextProcessor",["$sce","$sanitize",function(e,t){function o(e){return e.replace(/&/g,"&").replace(/([^\#-~| |!])/g,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(//g,">")}function a(e){for(var t,o,a,n,r=0;r-1)return o=Math.floor(t/n),a=t%n,{category:r,row:o,column:a};return console.error("emoji not found in spritesheet",e),null}function n(n,i){if(!n||!n.length)return"";i=i||{},n=n.replace(/\ufe0f/g,"",n);for(var p,h,g,m=n,f=[],_=!1;p=m.match(u);)f.push(o(m.substr(0,p.index))),p[1]?i.noLinks?f.push(o(p[0])):p[3]?f.push('',o(p[3]+p[4]),""):f.push('',o(p[2]+"://"+p[4]),""):p[5]?f.push(i.noLinebreaks?" ":"
"):p[6]&&((r=s[p[6]])&&(g=a(r))?(h=o(d[r][1][0]),_=!0,f.push('',":",h,":")):f.push(o(p[6]))),m=m.substr(p.index+p[0].length);if(f.push(o(m)),n=t(f.join("")),_&&(n=n.replace(//g,'')),!i.noLinks){var v=n.match(l),w=v&&v[1];w&&(n=n+'
')}return e.trustAs("html",n)}var r,i=[],s={},d=Config.Emoji,c=18;for(r in d)i.push(d[r][0]),s[d[r][0]]=r;var u=new RegExp("((?:(ftp|https?)://|(?:mailto:)?([A-Za-z0-9._%+-]+@))(\\S*\\.\\S*[^\\s.;,(){}<>\"']))|(\\n)|("+i.join("|")+")","i"),l=/(?:https?:\/\/)?(?:www\.)?youtu(?:|.be|be.com|.b)(?:\/v\/|\/watch\\?v=|e\/|\/watch(?:.+)v=)(.{11})(?:\&[^\s]*)?/;return{wrapRichText:n}}]).service("IdleManager",["$rootScope","$window","$timeout",function(e,t,o){function a(){i||(i=!0,$(t).on("blur focus keydown mousedown touchstart",n))}function n(a){"mousemove"==a.type&&$(t).off("mousemove",n);var i="blur"==a.type||"timeout"==a.type?!0:!1;o.cancel(r),i||(r=o(function(){n({type:"timeout"})},3e4)),e.idle.isIDLE!=i&&(e.$apply(function(){e.idle.isIDLE=i}),i&&"timeout"==a.type&&$(t).on("mousemove",n))}e.idle={isIDLE:!1};var r,i=!1;return{start:a}}]).service("StatusManager",["$timeout","$rootScope","MtpApiManager","IdleManager",function(e,t,o){function a(){d||(d=!0,t.$watch("idle.isIDLE",r),t.$watch("offline",r))}function n(e){var a=tsNow();if(!(e&&!s||!e&&5e4>a-s||t.offline))return s=e?0:a,o.invokeApi("account.updateStatus",{offline:e})}function r(){i&&e.cancel(i),t.idle.isIDLE?i=e(function(){n(!0)},5e3):(n(!1),i=e(r,6e4))}var i,s=0,d=!1;return{start:a}}]).service("NotificationsManager",["$rootScope","$window","$timeout","$interval","$q","MtpApiManager","AppPeersManager","IdleManager","AppConfigManager",function(e,t,o,a,n,r,i,s,d){function c(e){return void 0!==S[e]?S[e]:S[e]=r.invokeApi("account.getNotifySettings",{peer:{_:"inputNotifyPeer",peer:i.getInputPeerByID(e)}})}function u(e,t){var o=angular.copy(t);return o._="inputPeerNotifySettings",S[e]=n.when(t),r.invokeApi("account.updateNotifySettings",{peer:{_:"inputNotifyPeer",peer:i.getInputPeerByID(e)},settings:o})}function l(e){return c(e).then(function(e){return"peerNotifySettings"==e._&&1e3*e.mute_until>tsNow()})}function p(){if(!w)return!1;"granted"!==Notification.permission&&"denied"!==Notification.permission&&$(t).on("click",h);try{$(t).on("beforeunload",_)}catch(e){}}function h(){Notification.requestPermission(),$(t).off("click",h)}function g(t){return e.idle.isIDLE?(M++,w&&"granted"===Notification.permission?(d.get("notify_nosound").then(function(e){e||m()}),void d.get("notify_nodesktop").then(function(e){if(!e){var o=++b,a=t.key||"k"+o,n=new Notification(t.title,{icon:t.image||"",body:t.message||""});n.onclick=function(){n.close(),window.chrome&&chrome.app&&chrome.app.window&&chrome.app.window.current().focus(),window.focus(),_(),t.onclick&&t.onclick()},n.onclose=function(){delete y[a],_()},y[a]=n}})):!1):!1}function m(){var e="img/sound_a.wav";$("#notify_sound").html('')}function f(e){var t=y[e];if(t)try{t.close&&t.close()}catch(o){}}function _(){angular.forEach(y,function(e){try{e.close&&e.close()}catch(t){}}),y={}}var v,w="Notification"in window,y={},b=0,M=0,S={},A=$('link[rel="icon"]'),D=$(''),U=document.title;return e.$watch("idle.isIDLE",function(e){a.cancel(v),e?(U=document.title,v=a(function(){var e=tsNow();!M||e%2e3>1e3?(document.title=U,$('link[rel="icon"]').replaceWith(A)):(document.title=M>1?M+" notifications":"1 notification",$('link[rel="icon"]').replaceWith(D))},1e3)):(M=0,document.title=U,$('link[rel="icon"]').replaceWith(A),_())}),{start:p,notify:g,cancel:f,clear:_,getPeerSettings:c,getPeerMuted:l,savePeerSettings:u}}]).service("ErrorService",["$rootScope","$modal",function(e,t){function o(o,a){a=a||{};var n=e.$new();return angular.extend(n,o),t.open({templateUrl:"partials/error_modal.html",scope:n,windowClass:a.windowClass||"error_modal_window"})}function a(e,t){return o({title:e,description:t})}return{show:o,alert:a}}]).service("PeersSelectService",["$rootScope","$modal",function(e,t){function o(){var o=e.$new();return t.open({templateUrl:"partials/peer_select.html",controller:"PeerSelectController",scope:o,windowClass:"peer_select_window"}).result}return{selectPeer:o}}]).service("ContactsSelectService",["$rootScope","$modal",function(e,t){function o(o,a){a=a||{};var n=e.$new();return n.multiSelect=o,angular.extend(n,a),t.open({templateUrl:"partials/contacts_modal.html",controller:"ContactsModalController",scope:n,windowClass:"contacts_modal_window"}).result}return{selectContacts:function(e){return o(!0,e)},selectContact:function(e){return o(!1,e)}}}]); +"use strict";angular.module("myApp.controllers",[]).controller("AppWelcomeController",["$scope","$location","MtpApiManager",function(e,t,o){o.getUserID().then(function(o){o?t.url("/im"):e.showWelcome=!0})}]).controller("AppLoginController",["$scope","$location","$timeout","MtpApiManager","ErrorService",function(e,t,o,n,r){function a(e){n.setUserAuth(i.dcID,{expires:e.expires,id:e.user.id}),o.cancel(c),t.url("/im")}function s(){o.cancel(c),--e.callPending.remaining?c=o(s,1e3):(e.callPending.success=!1,n.invokeApi("auth.sendCall",{phone_number:e.credentials.phone_number,phone_code_hash:e.credentials.phone_code_hash},i).then(function(){e.callPending.success=!0}))}n.getUserID().then(function(e){return e?void t.url("/im"):void 0});var i={dcID:1,createNetworker:!0};e.credentials={},e.progress={},e.callPending={};var c;e.sendCode=function(){o.cancel(c),e.progress.enabled=!0,n.invokeApi("auth.checkPhone",{phone_number:e.credentials.phone_number},i).then(function(t){return e.progress.enabled=!1,t.phone_registered?(e.progress.enabled=!0,void n.invokeApi("auth.sendCode",{phone_number:e.credentials.phone_number,sms_type:0,api_id:2496,api_hash:"8da85b0d5bfe62527e5b244c209159c3"},i).then(function(t){e.progress.enabled=!1,e.credentials.phone_code_hash=t.phone_code_hash,e.credentials.phone_occupied=t.phone_registered,e.error={},e.callPending.remaining=t.send_call_timeout,s()},function(t){switch(e.progress.enabled=!1,console.log("sendCode error",t),t.type){case"PHONE_NUMBER_INVALID":e.error={field:"phone"}}})):(r.show({error:{code:400,type:"ACCOUNT_REQUIRED"},phone:e.credentials.phone_number}),!1)},function(t){switch(e.progress.enabled=!1,t.type){case"PHONE_NUMBER_INVALID":e.error={field:"phone"};break;default:r.alert("Unknown error occured","Please check your internet connection or install the latest version of Google Chrome browser.")}})},e.logIn=function(t){var o="auth.signIn",r={phone_number:e.credentials.phone_number,phone_code_hash:e.credentials.phone_code_hash,phone_code:e.credentials.phone_code};t&&(o="auth.signUp",angular.extend(r,{first_name:e.credentials.first_name,last_name:e.credentials.last_name})),e.progress.enabled=!0,n.invokeApi(o,r,i).then(a,function(t){if(e.progress.enabled=!1,400==t.code&&"PHONE_NUMBER_UNOCCUPIED"==t.type)return e.logIn(!0);if(400==t.code&&"PHONE_NUMBER_OCCUPIED"==t.type)return e.logIn(!1);switch(t.type){case"FIRSTNAME_INVALID":e.error={field:"first_name"};break;case"LASTNAME_INVALID":e.error={field:"last_name"};break;case"PHONE_CODE_INVALID":e.error={field:"phone_code"}}})}}]).controller("AppIMController",["$scope","$location","$routeParams","$modal","$rootScope","$modalStack","MtpApiManager","AppUsersManager","ContactsSelectService",function(e,t,o,n,r,a,s,i,c){function l(){e.curDialog={peer:o.p||!1}}e.$on("$routeUpdate",l),e.$on("history_focus",function(o,n){a.dismissAll(),n.peerString==e.curDialog.peer?e.$broadcast("ui_history_focus"):t.url("/im?p="+n.peerString)}),e.isLoggedIn=!0,e.openSettings=function(){n.open({templateUrl:"partials/settings_modal.html",controller:"SettingsModalController",scope:r.$new(),windowClass:"settings_modal_window"})},e.openContacts=function(){c.selectContact().then(function(t){e.dialogSelect(i.getUserString(t))})},e.openGroup=function(){c.selectContacts().then(function(t){if(1==t.length)e.dialogSelect(i.getUserString(t[0]));else if(t.length>1){var o=r.$new();o.userIDs=t,n.open({templateUrl:"partials/chat_create_modal.html",controller:"ChatCreateModalController",scope:o,windowClass:"contacts_modal_window"})}})},e.dialogSelect=function(e){r.$broadcast("history_focus",{peerString:e})},l()}]).controller("AppImDialogsController",["$scope","$location","MtpApiManager","AppUsersManager","AppChatsManager","AppMessagesManager","AppPeersManager",function(e,t,o,n,r,a){function s(){l=0,u=0,p=!1,d={},c=!1,a.getDialogs(e.search.query,u).then(function(t){e.dialogs=[],e.contacts=[],t.dialogs.length&&(l+=t.dialogs.length,u=t.dialogs[t.dialogs.length-1].top_message,p=null===t.count||l0?s=t:0>t&&(a=s+t),o=a;s>o;o++)n=e.history[o],r&&n.from_id==r.from_id&&n.date0){var t=[];angular.forEach(e.selectedMsgs,function(e,o){t.push(o)}),i.deleteMessages(t).then(function(){D()})}}function I(){if(e.selectedCount>0){var t=[];angular.forEach(e.selectedMsgs,function(e,o){t.push(o)}),u.selectPeer().then(function(e){var o=c.getPeerID(e);i.forwardMessages(o,t).then(function(){D(),n.$broadcast("history_focus",{peerString:e})})})}}function A(){e.selectActions?D():(e.selectActions=!0,e.$broadcast("ui_panel_update"))}function U(t){t&&(e.missedCount=0),e.mediaType=t||!1,e.history=[],m()}function P(){e.curDialog.peerID>0?n.openUser(e.curDialog.peerID):e.curDialog.peerID<0&&n.openChat(-e.curDialog.peerID)}e.$watch("curDialog.peer",h),l.attach(),p.start(),d.start(),e.history=[],e.mediaType=!1,e.selectedMsgs={},e.selectedCount=0,e.selectActions=!1,e.missedCount=0,e.typing={},e.state={},e.toggleMessage=C,e.selectedDelete=v,e.selectedForward=I,e.selectedCancel=D,e.selectedFlush=M,e.toggleEdit=A,e.toggleMedia=U,e.showPeerInfo=P;var b,S=0,w=!1,E=0,k={photos:"inputMessagesFilterPhotos",video:"inputMessagesFilterVideo",documents:"inputMessagesFilterDocument"},F=0,N={};e.$on("history_update",angular.noop),e.$on("history_append",function(t,r){if(r.peerID==e.curDialog.peerID){if(e.mediaType)return void(r.my?U():e.missedCount++);e.history.push(i.wrapForHistory(r.messageID)),f(-3),e.typing={},e.$broadcast("ui_history_append",{my:r.my}),r.my&&(e.historyUnread={}),S++,n.idle.isIDLE||o(function(){i.readHistory(e.curDialog.inputPeer)})}}),e.$on("history_delete",function(t,o){if(o.peerID==e.curDialog.peerID){for(var n=[],r=0;r0){var t=[];return angular.forEach(e.selectedContacts,function(e,o){t.push(o)}),o.close(t)}},e.importContact=function(){t.open({templateUrl:"partials/import_contact_modal.html",controller:"ImportContactModalController",windowClass:"import_contact_modal_window"}).result.then(function(t){t&&r(e.search&&e.search.query||"")})}}]).controller("PeerSelectController",["$scope","$modalInstance",function(e,t){e.dialogSelect=function(e){t.close(e)}}]).controller("ChatCreateModalController",["$scope","$modalInstance","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","ApiUpdatesManager",function(e,t,o,n,r,a,s){e.group={name:""},e.createGroup=function(){if(e.group.name){var t=[];return angular.forEach(e.userIDs,function(e){t.push({_:"inputUserContact",user_id:e})}),n.invokeApi("messages.createChat",{title:e.group.name,users:t}).then(function(e){r.saveApiUsers(e.users),a.saveApiChats(e.chats),s.saveSeq(e.seq)&&s.saveUpdate({_:"updateNewMessage",message:e.message,pts:e.pts});var t=a.getChatString(e.message.to_id.chat_id);o.$broadcast("history_focus",{peerString:t})})}},e.back=function(){t.dismiss()}}]).controller("ChatEditModalController",["$scope","$modalInstance","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","ApiUpdatesManager",function(e,t,o,n,r,a,s){var i=a.getChat(e.chatID);e.group={name:i.title},e.updateGroup=function(){return e.group.name?e.group.name==i.title?t.close():n.invokeApi("messages.editChatTitle",{chat_id:e.chatID,title:e.group.name}).then(function(t){r.saveApiUsers(t.users),a.saveApiChats(t.chats),s.saveSeq(t.seq)&&s.saveUpdate({_:"updateNewMessage",message:t.message,pts:t.pts});var n=a.getChatString(e.chatID);o.$broadcast("history_focus",{peerString:n})}):void 0}}]).controller("ImportContactModalController",["$scope","$modalInstance","$rootScope","AppUsersManager",function(e,t,o,n){void 0===e.importContact&&(e.importContact={}),e.doImport=function(){e.importContact&&e.importContact.phone&&(e.progress={enabled:!0},n.importContact(e.importContact.phone,e.importContact.first_name,e.importContact.last_name).then(function(e){t.close(e)})["finally"](function(){delete e.progress.enabled}))}}]); "use strict";angular.module("myApp.filters",[]).filter("userName",[function(){return function(t){return t&&(t.first_name||t.last_name)?t.first_name+" "+t.last_name:"DELETED"}}]).filter("userFirstName",[function(){return function(t){return t&&(t.first_name||t.last_name)?t.first_name||t.last_name:"DELETED"}}]).filter("userStatus",["$filter",function(t){return function(r){return r&&r.status&&"userStatusEmpty"!=r.status._?"userStatusOnline"==r.status._?"online":"last seen "+t("relativeTime")(r.status.was_online):"offline"}}]).filter("chatTitle",[function(){return function(t){return t&&t.title?t.title:"DELETED"}}]).filter("dateOrTime",["$filter",function(t){var r={};return function(e){if(r[e])return r[e];var n=1e3*e,u=Math.abs(tsNow()-n),i="HH:mm";return u>5184e5?i="shortDate":u>432e5&&(i="EEE"),r[e]=t("date")(n,i)}}]).filter("duration",[function(){return function(t){var r=t%60,e=Math.floor((t-r)/60);return 10>r&&(r="0"+r),e+":"+r}}]).filter("phoneNumber",[function(){return function(t){var r=" ";return t=(t||"").replace(/\D/g,""),"7"==t.charAt(0)&&11==t.length?"+"+t.charAt(0)+r+"("+t.substr(1,3)+")"+r+t.substr(4,3)+"-"+t.substr(7,2)+"-"+t.substr(9,2):"+"+t}}]).filter("formatSize",[function(){return function(t){return t?1024>t?t+" b":1048576>t?Math.round(t/1024*10)/10+" Kb":Math.round(t/1048576*100)/100+" Mb":"0"}}]).filter("formatSizeProgress",["$filter",function(t){return function(r){var e=t("formatSize")(r.done),n=e.split(" "),u=t("formatSize")(r.total),i=u.split(" ");return i[1]===n[1]?n[0]+" of "+i[0]+" "+(n[1]||""):e+" of "+u}}]).filter("nl2br",[function(){return function(t){return t.replace(/\n/g,"
")}}]).filter("richText",["$filter",function(t){return function(r){return t("linky")(r,"_blank").replace(/\n| /g,"
")}}]).filter("relativeTime",["$filter",function(t){return function(r){var e=1e3*r,n=Math.abs(tsNow()-e);return 6e4>n?"just now":3e6>n?Math.ceil(n/6e4)+" minutes ago":1e7>n?Math.ceil(n/36e5)+" hours ago":t("dateOrTime")(r)}}]); -angular.module("myApp.templates",[]).run(["$templateCache",function(n){n.put("partials/chat_create_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/chat_edit_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/chat_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/contacts_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/dialog.html",'\n\n
\n
\n \n \n
\n\n
\n \n
\n\n
\n\n
\n \n \n \n \n
\n\n
\n \n You{{((dialogMessage.out || dialogMessage.peerID < 0) && (dialogMessage.message.length || dialogMessage.media && dialogMessage.media._ != \'messageMediaEmpty\')) ? \':\' : \'\'}}\n \n\n \n Photo\n Video\n Document\n Audio\n Location\n Contact\n \n\n \n created the group \n changed group name\n changed group photo\n removed group photo\n\n \n \n returned to group\n \n \n invited \n \n \n\n \n \n left group\n \n \n kicked \n \n \n \n\n \n
\n\n
\n
\n'),n.put("partials/edit_contact_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/error_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/head.html",'
\n \n
'),n.put("partials/im.html",'
\n\n
\n\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n\n
\n
\n Please select a chat to start messaging\n
\n
\n Loading history\n
\n\n
\n
\n\n
\n\n
\n
\n\n Info\n Edit\n\n \n \n Show all messages\n +{{missedCount}}\n \n\n
\n

Photos

\n

Videos

\n

Documents

\n\n

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

\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n
\n No messages here yet...\n
\n
\n
\n
\n
\n\n
\n
\n is typing\n
\n
\n\n
\n\n
\n\n
\n\n
\n\n \n\n
\n\n
\n\n
\n
\n \n \n
\n
\n \n
\n
\n
Drop photos here to send
\n \n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n
\n\n \n
\n
\n\n
\n\n
\n\n
\n\n
\n
\n\n
\n\n
\n\n\n
\n\n\n\n
\n\n'),n.put("partials/import_contact_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/login.html",'
\n\n\n\n'),n.put("partials/message.html",'
\n \n \n
\n\n
\n\n\n
\n\n
\n
\n\n \n\n \n \n created the group «{{historyMessage.action.title}}»\n \n \n changed group name to «»\n \n \n changed group photo\n \n \n removed group photo\n \n \n \n invited \n \n \n returned to group\n \n \n \n \n kicked \n \n \n left group\n \n \n\n \n unsupported action {{historyMessage.action}}\n \n \n\n
\n\n \n \n \n\n
\n\n
\n
\n \n
\n\n \n \n \n\n \n\n \n \n \n
\n \n
\n\n
\n\n \n \n\n
\n Forwarded message from , {{historyMessage.fwd_date | dateOrTime}}\n
\n\n
\n\n \n \n \n\n
\n \n {{historyMessage.media.video.duration | duration}}\n \n \n \n\n
\n
\n Video\n \n {{historyMessage.media.video.size | formatSize}}\n \n \n {{historyMessage.media.video.progress | formatSizeProgress}}\n \n
\n \n
\n
\n
\n \n {{historyMessage.media.video.progress.percent}}% Complete (success)\n \n
\n
\n
\n
\n
\n\n
\n \n \n
\n \n
\n
\n\n
\n
\n \n {{historyMessage.media.document.file_name}}\n \n \n {{historyMessage.media.document.size | formatSize}}\n \n \n {{historyMessage.media.document.progress | formatSizeProgress}}\n \n
\n
\n Download\n Open\n
\n
\n
\n
\n \n {{historyMessage.media.document.progress.percent}}% Complete (success)\n \n
\n
\n
\n
\n
\n\n\n
\n \n \n \n \n\n
\n
\n \n Voice message\n \n \n {{historyMessage.media.audio.duration | duration}}\n \n \n {{historyMessage.media.audio.progress | formatSizeProgress}}\n \n
\n
\n Play\n
\n
\n
\n
\n \n {{historyMessage.media.audio.progress.percent}}% Complete (success)\n \n
\n
\n
\n
\n \n
\n
\n
\n\n \n \n \n\n
\n \n \n \n
\n {{historyMessage.media.first_name}} {{historyMessage.media.last_name}}\n
\n
\n {{historyMessage.media.phone_number}}\n
\n
\n\n
\n \n
\n
\n \n {{historyMessage.media.file_name}}\n \n \n {{historyMessage.media.progress | formatSizeProgress}}\n \n
\n
\n
\n
\n \n {{historyMessage.media.progress.percent}}% Complete (success)\n \n
\n
\n
\n
\n
\n\n\n
\n\n
\n
\n\n
\n
\n\n
\n\n'),n.put("partials/peer_select.html",'
\n\n \n\n \n\n
'),n.put("partials/photo_modal.html",'
\n\n \n\n
'),n.put("partials/settings_modal.html",'
\n\n \n\n \n
\n'),n.put("partials/user_modal.html",'
\n\n \n\n\n \n\n
'),n.put("partials/video_modal.html",'
\n\n \n\n
'),n.put("partials/welcome.html",'
\n\n\n
\n\n \n\n
\n
\n

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

\n

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

\n

Visit telegram.org to learn more.

\n
\n Start Messaging\n
\n\n
\n') +angular.module("myApp.templates",[]).run(["$templateCache",function(n){n.put("partials/chat_create_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/chat_edit_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/chat_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/contacts_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/dialog.html",'\n\n
\n
\n \n \n
\n\n
\n \n
\n\n
\n\n
\n \n \n \n \n
\n\n
\n \n You{{((dialogMessage.out || dialogMessage.peerID < 0) && (dialogMessage.message.length || dialogMessage.media && dialogMessage.media._ != \'messageMediaEmpty\')) ? \':\' : \'\'}}\n \n\n \n Photo\n Video\n Document\n Audio\n Location\n Contact\n \n\n \n created the group \n changed group name\n changed group photo\n removed group photo\n\n \n \n returned to group\n \n \n invited \n \n \n\n \n \n left group\n \n \n kicked \n \n \n \n\n \n
\n\n
\n
\n'),n.put("partials/edit_contact_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/error_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/head.html",'
\n \n
'),n.put("partials/im.html",'
\n\n
\n\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n\n
\n
\n Please select a chat to start messaging\n
\n
\n Loading history\n
\n\n
\n
\n\n
\n\n
\n
\n\n Info\n Edit\n\n \n \n Show all messages\n +{{missedCount}}\n \n\n
\n

Photos

\n

Videos

\n

Documents

\n\n

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

\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n
\n No messages here yet...\n
\n
\n
\n
\n
\n\n
\n
\n is typing\n
\n
\n\n
\n\n
\n\n
\n\n
\n\n \n\n
\n\n
\n\n
\n
\n \n \n
\n
\n \n
\n
\n
Drop photos here to send
\n \n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n
\n\n \n
\n
\n\n
\n\n
\n\n
\n\n
\n
\n\n
\n\n
\n\n\n
\n\n\n\n
\n\n'),n.put("partials/import_contact_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/login.html",'
\n\n\n\n'),n.put("partials/message.html",'
\n \n \n
\n\n
\n\n\n
\n\n
\n
\n\n \n\n \n \n created the group «{{historyMessage.action.title}}»\n \n \n changed group name to «»\n \n \n changed group photo\n \n \n removed group photo\n \n \n \n invited \n \n \n returned to group\n \n \n \n \n kicked \n \n \n left group\n \n \n\n \n unsupported action {{historyMessage.action}}\n \n \n\n
\n\n \n \n \n\n
\n\n
\n
\n \n
\n\n \n \n \n\n \n\n \n \n \n
\n \n
\n\n
\n\n \n \n\n
\n Forwarded message from , {{historyMessage.fwd_date | dateOrTime}}\n
\n\n
\n\n \n \n \n\n
\n \n {{historyMessage.media.video.duration | duration}}\n \n \n \n\n
\n
\n Video\n \n {{historyMessage.media.video.size | formatSize}}\n \n \n {{historyMessage.media.video.progress | formatSizeProgress}}\n \n
\n \n
\n
\n
\n \n {{historyMessage.media.video.progress.percent}}% Complete (success)\n \n
\n
\n
\n
\n
\n\n
\n \n \n
\n \n
\n
\n\n
\n
\n \n {{historyMessage.media.document.file_name}}\n \n \n {{historyMessage.media.document.size | formatSize}}\n \n \n {{historyMessage.media.document.progress | formatSizeProgress}}\n \n
\n
\n Download\n Open\n
\n
\n
\n
\n \n {{historyMessage.media.document.progress.percent}}% Complete (success)\n \n
\n
\n
\n
\n
\n\n\n
\n \n \n \n \n\n
\n
\n \n Voice message\n \n \n {{historyMessage.media.audio.duration | duration}}\n \n \n {{historyMessage.media.audio.progress | formatSizeProgress}}\n \n
\n
\n Play\n
\n
\n
\n
\n \n {{historyMessage.media.audio.progress.percent}}% Complete (success)\n \n
\n
\n
\n
\n \n
\n
\n
\n\n \n \n \n\n
\n \n \n \n
\n {{historyMessage.media.first_name}} {{historyMessage.media.last_name}}\n
\n
\n {{historyMessage.media.phone_number}}\n
\n
\n\n
\n \n
\n
\n \n {{historyMessage.media.file_name}}\n \n \n {{historyMessage.media.progress | formatSizeProgress}}\n \n
\n
\n
\n
\n \n {{historyMessage.media.progress.percent}}% Complete (success)\n \n
\n
\n
\n
\n
\n\n\n
\n\n
\n
\n\n
\n
\n\n
\n\n'),n.put("partials/peer_select.html",'
\n\n \n\n \n\n
'),n.put("partials/photo_modal.html",'
\n\n \n\n
'),n.put("partials/settings_modal.html",'
\n\n \n\n \n
\n'),n.put("partials/user_modal.html",'
\n\n \n\n\n \n\n
'),n.put("partials/video_modal.html",'
\n\n \n\n
'),n.put("partials/welcome.html",'
\n\n\n
\n\n \n\n
\n
\n

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

\n

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

\n

Visit telegram.org to learn more.

\n
\n Start Messaging\n
\n\n
\n') }]); "use strict";angular.module("myApp.directives",["myApp.filters"]).directive("myDialog",function(){return{restrict:"AE",scope:!0,translude:!1,templateUrl:"partials/dialog.html"}}).directive("myMessage",function(){return{restrict:"AE",scope:!0,translude:!1,templateUrl:"partials/message.html"}}).directive("myDialogsList",["$window","$timeout",function(e,o){function t(t,i,n){function r(){return n.modal?($(i).css({height:$(e).height()-200}),void u()):(l&&l.offsetHeight||(l=$(".tg_page_head")[0]),c&&c.offsetHeight||(c=$(".im_page_footer")[0]),$(i).css({height:$(e).height()-c.offsetHeight-(l?l.offsetHeight:44)-72}),void u())}var a=$(".im_dialogs_wrap",i)[0],s=$(".im_dialogs_scrollable_wrap",i)[0],l=$(".tg_page_head")[0],c=$(".im_page_footer")[0],d=!1;onContentLoaded(function(){$(a).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0})});var u=function(){onContentLoaded(function(){$(a).nanoScroller()})};t.$on("ui_dialogs_prepend",u),t.$on("ui_dialogs_append",function(){onContentLoaded(function(){u(),d=!1,o(function(){$(s).trigger("scroll")})})}),t.$on("ui_dialogs_change",function(){onContentLoaded(function(){u(),d=!1,o(function(){$(s).trigger("scroll")})})}),$(s).on("scroll",function(){!d&&s.scrollTop>=s.scrollHeight-s.clientHeight-300&&(t.$emit("dialogs_need_more"),d=!0)}),$(e).on("resize",r),r(),setTimeout(r,1e3)}return{link:t}}]).directive("myContactsList",["$window","$timeout",function(e){function o(o,t){function i(){$(t).css({height:$(e).height()-(r&&r.offsetHeight||0)-(n&&n.offsetHeight||0)-200}),$(a).nanoScroller()}var n=$(".contacts_modal_search")[0],r=$(".contacts_modal_panel")[0],a=$(".contacts_wrap",t)[0];onContentLoaded(function(){$(a).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0}),i()}),$(e).on("resize",i),o.$on("contacts_change",function(){onContentLoaded(i)})}return{link:o}}]).directive("myHistory",["$window","$timeout",function(e,o){function t(t,i){function n(o){if(i.is(":visible")&&$(i[0].parentNode).is(":visible")){$(g).is(":visible")&&$(g).css({height:$(m).height()}),h&&h.offsetHeight||(h=$(".tg_page_head")[0]),p&&p.offsetHeight||(p=$(".im_page_footer")[0]);var t=$(e).height()-u.offsetHeight-f.offsetHeight-(h?h.offsetHeight:44)-p.offsetHeight;$(a).css({height:t}),$(l).css({minHeight:t-44}),r(),o!==!0&&(H&&onContentLoaded(function(){c.scrollTop=c.scrollHeight,y()}),y(100))}}function r(){$(s).css({marginTop:0}),s.offsetHeight>0&&s.offsetHeight<=c.offsetHeight&&$(s).css({marginTop:c.offsetHeight-s.offsetHeight-20-44+"px"}),$(a).nanoScroller()}var a=$(".im_history_wrap",i)[0],s=$(".im_history_messages",i)[0],l=$(".im_history",i)[0],c=$(".im_history_scrollable_wrap",i)[0],d=$(".im_history_scrollable",i)[0],u=$(".im_history_panel_wrap",i)[0],f=$(".im_bottom_panel_wrap",i)[0],g=$(".im_send_form_wrap",i)[0],h=$(".tg_page_head")[0],p=$(".im_page_footer")[0],m=$(".im_send_form",i)[0],_=!1;onContentLoaded(function(){c.scrollTop=c.scrollHeight,$(a).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0})});var v,y=function(e){o(function(){$(c).hasClass("im_history_to_bottom")||$(a).nanoScroller()},e||0)},b=!1,w=["transform","webkitTransform","MozTransform","msTransform","OTransform"];for(v=0;v=c.scrollHeight-c.clientHeight,!_&&c.scrollTop<=300&&(_=!0,t.$emit("history_need_more"))))}),$(e).on("resize",n),n(),onContentLoaded(n)}return{link:t}}]).directive("mySendForm",["$timeout","AppConfigManager",function(e,o){function t(t,i){function n(){if(v){e.cancel(y);var o=$("
").text(t.draftMessage.text||"").html();o=o.replace(/\n/g,"
"),$(v).html(o),a()}}function r(){v&&($(v).trigger("change"),a())}function a(){var e=v.offsetHeight;T!=e&&(T=e,t.$emit("ui_editor_resize"))}function s(){onContentLoaded(function(){_.focus()})}function l(e){var o,i=e&&e.target;if(i&&(o=i.src)&&0===o.indexOf("data")){i.parentNode.removeChild(i),o=o.substr(5).split(";");for(var n=o[0],r=atob(o[1].split(",")[1]),a=new Uint8Array(r.length),s=0;se-C||(C=e,t.$emit("ui_typing"))});var T=v.offsetHeight;$("body").on("dragenter dragleave dragover drop",d),$(document).on("paste",c),v&&$(v).on("DOMNodeInserted",l),t.$on("ui_peer_change",s),t.$on("ui_history_focus",s),t.$on("ui_history_change",s),t.$on("ui_message_send",s),t.$on("ui_peer_draft",n),t.$on("ui_message_before_send",r),t.$on("$destroy",function(){$("body").off("dragenter dragleave dragover drop",d),$(document).off("paste",c),v&&$(v).off("DOMNodeInserted",l)}),s()}return{link:t,scope:{draftMessage:"="}}}]).directive("myLoadThumb",["MtpApiFileManager",function(e){function o(o,t){var i=0,n=e.getCachedFile(o.thumb&&o.thumb.location&&!o.thumb.location.empty&&o.thumb.location);n&&t.attr("src",n),o.$watchCollection("thumb.location",function(n){var r=++i;if(!n||n.empty)return void t.attr("src",o.thumb&&o.thumb.placeholder||"img/blank.gif");var a=e.getCachedFile(n);return a?void t.attr("src",a):(t.attr("src")||t.attr("src",o.thumb.placeholder||"img/blank.gif"),void e.downloadSmallFile(o.thumb.location,o.thumb.size).then(function(e){r==i&&t.attr("src",e)},function(e){console.log("Download image failed",e,o.thumb.location),r==i&&t.attr("src",o.thumb.placeholder||"img/blank.gif")}))})}return{link:o,scope:{thumb:"="}}}]).directive("myLoadFullPhoto",["MtpApiFileManager",function(e){function o(o,t){var i=$("img",t);if(i.attr("src",e.getCachedFile(o.thumbLocation)||"img/blank.gif").addClass("thumb_blurred").addClass("thumb_blur_animation"),o.fullPhoto.location){var n;if(o.fullPhoto.size){var r={_:"inputFileLocation",volume_id:o.fullPhoto.location.volume_id,local_id:o.fullPhoto.location.local_id,secret:o.fullPhoto.location.secret};n=e.downloadFile(o.fullPhoto.location.dc_id,r,o.fullPhoto.size)}else n=e.downloadSmallFile(o.fullPhoto.location);o.progress={enabled:!0,percent:1},n.then(function(e){o.progress.enabled=!1,i.attr("src",e).removeClass("thumb_blurred")},function(e){console.log("Download image failed",e,o.fullPhoto.location),o.progress.enabled=!1,o.error=e&&"FS_BROWSER_UNSUPPORTED"==e.type?{html:'Your browser doesn\'t support LocalFileSystem feature which is needed to display this image.
Please, install Google Chrome or use mobile app instead.'}:{text:"Download failed",error:e}},function(e){o.progress.percent=Math.max(1,Math.floor(100*e.done/e.total))})}}return{link:o,transclude:!0,template:'
{{progress.percent}}% Complete (success)
{{error.text}}
',scope:{fullPhoto:"=",thumbLocation:"="}}}]).directive("myLoadVideo",["$sce","MtpApiFileManager",function(e,o){function t(t){t.progress={enabled:!0,percent:1},t.player={};var i,n={_:"inputVideoFileLocation",id:t.video.id,access_hash:t.video.access_hash},r=!1;if(navigator.plugins)for(i=0;i=0&&(r=!0);o.downloadFile(t.video.dc_id,n,t.video.size,null,{mime:"video/mp4"}).then(function(o){t.progress.enabled=!1,t.player.hasQuicktime=r,t.player.quicktime=!1,t.player.src=e.trustAsResourceUrl(o)},function(e){console.log("Download video failed",e,t.video),t.progress.enabled=!1,t.player.src="",t.error=e&&"FS_BROWSER_UNSUPPORTED"==e.type?{html:'Your browser doesn\'t support LocalFileSystem feature which is needed to play this video.
Please, install Google Chrome or use mobile app instead.'}:{text:"Video download failed",error:e}},function(e){t.progress.percent=Math.max(1,Math.floor(100*e.done/e.total))})}return{link:t,transclude:!0,template:'
{{progress.percent}}% Complete (success)
{{error.text}}
',scope:{video:"="}}}]).directive("myMapPoint",["ExternalResourcesManager",function(e){function o(o,t){var i="AIzaSyC32ij28dCa0YzEV_HqbWfIwTZQql-RNS0",n="https://maps.googleapis.com/maps/api/staticmap?sensor=false¢er="+o.point.lat+","+o.point["long"]+"&zoom=13&size=200x100&scale=2&key="+i;e.downloadImage(n).then(function(e){t.append('')}),t.attr("href","https://maps.google.com/?q="+o.point.lat+","+o.point["long"]),t.attr("target","_blank")}return{link:o,scope:{point:"="}}}]).directive("myLoadingDots",["$interval",function(e){function o(o,t){var i=e(function(){var e=tsNow(),o=3;200>=e%1e3?o=0:400>=e%1e3?o=1:600>=e%1e3&&(o=2);var i="...",n=i.substr(0,o+1)+(2>o?''+i.substr(o+1)+"":"");t.html(n)},200);o.$on("$destroy",function(){e.cancel(i)})}return{link:o}}]).directive("myAudioAutoplay",function(){function e(e,o){e.$watch("audio.autoplay",function(e){e?(o.autoplay=!0,o[0].play()):o.autoplay=!1})}return{link:e,scope:{audio:"="}}}).directive("myFocused",function(){return{link:function(e,o){setTimeout(function(){o[0].focus()},100)}}}).directive("myFileUpload",function(){function e(e,o){o.on("change",function(){var o=this;e.$apply(function(){e.photo.file=o.files[0],setTimeout(function(){try{o.value=""}catch(e){}},1e3)})})}return{link:e}}).directive("myModalWidth",function(){function e(e,o,t){t.$observe("myModalWidth",function(e){$(o[0].parentNode.parentNode).css({width:parseInt(e)+36})})}return{link:e}}).directive("myModalPosition",["$window","$timeout",function(e,o){function t(t,i){var n=function(){var e=i[0].parentNode.offsetHeight,t=i[0].parentNode.parentNode.parentNode.offsetHeight;t>e?$(i[0].parentNode).css("marginTop",(t-e)/2):$(i[0].parentNode).css("marginTop",""),o(function(){$(i[0].parentNode).addClass("modal-content-animated")},300)};onContentLoaded(n),$(e).on("resize",n),t.$on("ui_height",function(){onContentLoaded(n)})}return{link:t}}]).directive("myVerticalPosition",["$window","$timeout",function(e){function o(o,t,i){var n=function(){var o=t[0].offsetHeight,n=$(e).height(),r=i.myVerticalPosition&&parseFloat(i.myVerticalPosition)||.5,a=n>o?parseInt((n-o)*r):"";t.css({marginTop:a,marginBottom:a})};onContentLoaded(n),$(e).on("resize",n),o.$on("ui_height",function(){onContentLoaded(n)})}return{link:o}}]); \ No newline at end of file diff --git a/js/lib/mtproto.js b/js/lib/mtproto.js index 9c8a1d96..a9f34537 100644 --- a/js/lib/mtproto.js +++ b/js/lib/mtproto.js @@ -1101,7 +1101,7 @@ factory('MtpAuthorizer', function (MtpDcConfigurator, MtpRsaKeysManager, MtpSecu request.storeMethod('req_pq', {nonce: auth.nonce}); - console.log('Send req_pq', bytesToHex(auth.nonce)); + console.log(dT(), 'Send req_pq', bytesToHex(auth.nonce)); mtpSendPlainRequest(auth.dcID, request.getBuffer()).then(function (result) { var deserializer = result.data; var response = deserializer.fetchObject('ResPQ'); @@ -1118,7 +1118,7 @@ factory('MtpAuthorizer', function (MtpDcConfigurator, MtpRsaKeysManager, MtpSecu auth.pq = response.pq; auth.fingerprints = response.server_public_key_fingerprints; - console.log('Got ResPQ', bytesToHex(auth.serverNonce), bytesToHex(auth.pq), auth.fingerprints); + console.log(dT(), 'Got ResPQ', bytesToHex(auth.serverNonce), bytesToHex(auth.pq), auth.fingerprints); auth.publicKey = MtpRsaKeysManager.select(auth.fingerprints); @@ -1126,8 +1126,8 @@ factory('MtpAuthorizer', function (MtpDcConfigurator, MtpRsaKeysManager, MtpSecu throw new Error('No public key found'); } - console.log('PQ factorization start'); - if (!!window.Worker) { + console.log(dT(), 'PQ factorization start'); + if (!!window.Worker && false) { var worker = new Worker('js/lib/pq_worker.js'); worker.onmessage = function (e) { @@ -1185,7 +1185,7 @@ factory('MtpAuthorizer', function (MtpDcConfigurator, MtpRsaKeysManager, MtpSecu encrypted_data: rsaEncrypt(auth.publicKey, dataWithHash) }); - console.log('Send req_DH_params'); + console.log(dT(), 'Send req_DH_params'); mtpSendPlainRequest(auth.dcID, request.getBuffer()).then(function (result) { var deserializer = result.data; var response = deserializer.fetchObject('Server_DH_Params', 'RESPONSE'); @@ -1255,7 +1255,7 @@ factory('MtpAuthorizer', function (MtpDcConfigurator, MtpRsaKeysManager, MtpSecu throw new Error('server_DH_inner_data serverNonce mismatch'); } - console.log('Done decrypting answer'); + console.log(dT(), 'Done decrypting answer'); auth.g = response.g; auth.dhPrime = response.dh_prime; auth.gA = response.g_a; @@ -1302,7 +1302,7 @@ factory('MtpAuthorizer', function (MtpDcConfigurator, MtpRsaKeysManager, MtpSecu encrypted_data: encryptedData }); - console.log('Send set_client_DH_params'); + console.log(dT(), 'Send set_client_DH_params'); mtpSendPlainRequest(auth.dcID, request.getBuffer()).then(function (result) { var deserializer = result.data; var response = deserializer.fetchObject('Set_client_DH_params_answer'); @@ -1330,7 +1330,7 @@ factory('MtpAuthorizer', function (MtpDcConfigurator, MtpRsaKeysManager, MtpSecu authKeyAux = authKeyHash.slice(0, 8), authKeyID = authKeyHash.slice(-8); - console.log('Got Set_client_DH_params_answer', response._); + console.log(dT(), 'Got Set_client_DH_params_answer', response._); switch (response._) { case 'dh_gen_ok': var newNonceHash1 = sha1Hash(auth.newNonce.concat([1], authKeyAux)).slice(-16); @@ -1411,7 +1411,7 @@ factory('MtpAuthorizer', function (MtpDcConfigurator, MtpRsaKeysManager, MtpSecu }). factory('MtpAesService', function ($q) { - if (!window.Worker/* || true*/) { + if (!window.Worker || true) { return { encrypt: function (bytes, keyBytes, ivBytes) { return $q.when(aesEncrypt(bytes, keyBytes, ivBytes)); @@ -1466,10 +1466,16 @@ factory('MtpAesService', function ($q) { factory('MtpSha1Service', function ($q) { - if (!window.Worker/* || true*/) { + if (!window.Worker || true) { return { hash: function (bytes) { - return $q.when(sha1Hash(bytes)); + var deferred = $q.defer(); + + setTimeout(function () { + deferred.resolve(sha1Hash(bytes)); + }, 0); + + return deferred.promise; } }; } @@ -1556,7 +1562,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato }; MtpNetworker.prototype.updateSession = function () { - console.log('Update session'); + console.log(dT(), 'Update session'); this.seqNo = 0; this.sessionID = new Array(8); MtpSecureRandom.nextBytes(this.sessionID); @@ -1620,7 +1626,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato }; if (window._debugMode) { - console.log('MT call', method, params, messageID, seqNo); + console.log(dT(), 'MT call', method, params, messageID, seqNo); } return this.pushMessage(message, options); @@ -1641,7 +1647,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato }; if (window._debugMode) { - console.log('MT message', object, messageID, seqNo); + console.log(dT(), 'MT message', object, messageID, seqNo); } return this.pushMessage(message, options); @@ -1677,9 +1683,9 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato }; if (window._debugMode) { - console.log('Api call', method, params, messageID, seqNo, options); + console.log(dT(), 'Api call', method, params, messageID, seqNo, options); } else { - console.log('Api call', method, messageID, seqNo); + console.log(dT(), 'Api call', method, messageID, seqNo); } return this.pushMessage(message, options); @@ -1713,7 +1719,8 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato wait_after: 0, max_wait: maxWait }, { - noResponse: true + noResponse: true, + longPoll: true }).then(function () { delete self.longPollPending; $timeout(self.checkLongPoll.bind(self), 0); @@ -1777,7 +1784,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato MtpNetworker.prototype.checkConnection = function(event) { $rootScope.offlineConnecting = true; - console.log('check connection', event); + console.log(dT(), 'Check connection', event); $timeout.cancel(this.checkConnectionPromise); var serializer = new TLSerialization({mtproto: true}), @@ -1796,7 +1803,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato delete $rootScope.offlineConnecting; self.toggleOffline(false); }, function () { - console.log('delay ', self.checkConnectionPeriod * 1000); + console.log(dT(), 'Delay ', self.checkConnectionPeriod * 1000); self.checkConnectionPromise = $timeout(self.checkConnection.bind(self), parseInt(self.checkConnectionPeriod * 1000)); self.checkConnectionPeriod = Math.min(60, self.checkConnectionPeriod * 1.5); $timeout(function () { @@ -1847,7 +1854,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato MtpNetworker.prototype.performSheduledRequest = function() { // console.trace('sheduled', this.dcID, this.iii); if (this.offline) { - console.log('cancel sheduled'); + console.log(dT(), 'Cancel sheduled'); return false; } delete this.nextReq; @@ -1873,6 +1880,8 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato message, messagesByteLen = 0, currentTime = tsNow(), + hasApiCall = false, + hasHttpWait = false, self = this; angular.forEach(this.pendingMessages, function (value, messageID) { @@ -1880,6 +1889,12 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato if (message = self.sentMessages[messageID]) { messages.push(message); messagesByteLen += message.body.length + 32; + if (message.isAPI) { + hasApiCall = true; + } + else if (message.longPoll) { + hasHttpWait = true; + } } else { // console.log(message, messageID); } @@ -1887,6 +1902,16 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato } }); + if (hasApiCall && !hasHttpWait) { + var serializer = new TLSerialization({mtproto: true}); + serializer.storeMethod('http_wait', {max_delay: 0, wait_after: 0, max_wait: 25000}); + messages.push({ + msg_id: MtpMessageIdGenerator.generateID(), + seq_no: this.generateSeqNo(), + body: serializer.getBytes() + }); + } + if (!messages.length) { // console.log('no sheduled messages'); return; @@ -1923,7 +1948,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato this.sentMessages[message.msg_id] = containerSentMessage; if (window._debugMode) { - console.log('Container', innerMessages, message.msg_id, message.seq_no); + console.log(dT(), 'Container', innerMessages, message.msg_id, message.seq_no); } } else { if (message.noResponse) { @@ -1939,7 +1964,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato self.toggleOffline(false); self.parseResponse(result.data).then(function (response) { if (window._debugMode) { - console.log('Server response', self.dcID, response); + console.log(dT(), 'Server response', self.dcID, response); } self.processMessage(response.response, response.messageID, response.sessionID); @@ -1992,8 +2017,10 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato var msgKey = bytesHash.slice(-16); return self.getMsgKeyIv(msgKey, true).then(function (keyIv) { // console.log('keyIv', keyIv); + // console.time('Aes encrypt ' + bytes.length + ' bytes'); return MtpAesService.encrypt(bytes, keyIv[0], keyIv[1]).then(function (encryptedBytes) { // console.log('encryptedBytes', encryptedBytes); + // console.timeEnd('Aes encrypt ' + bytes.length + ' bytes'); return { bytes: encryptedBytes, msgKey: msgKey @@ -2005,13 +2032,17 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato MtpNetworker.prototype.getDecryptedMessage = function (msgKey, encryptedData) { return this.getMsgKeyIv(msgKey, false).then(function (keyIv) { - return MtpAesService.decrypt(encryptedData, keyIv[0], keyIv[1]); + // console.time('Aes decrypt ' + encryptedData.length + ' bytes'); + return MtpAesService.decrypt(encryptedData, keyIv[0], keyIv[1])/*.then(function (a) { + console.timeEnd('Aes decrypt ' + encryptedData.length + ' bytes'); + return a; + })*/; }); }; MtpNetworker.prototype.sendEncryptedRequest = function (message) { var self = this; - // console.log('send encrypted', message); + // console.log(dT(), 'Send encrypted'/*, message*/); // console.trace(); var data = new TLSerialization({startMaxLength: message.body.length + 64}); @@ -2025,7 +2056,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato data.storeRawBytes(message.body, 'message_data'); return this.getEncryptedMessage(data.getBytes()).then(function (encryptedResult) { - // console.log('got enc result', encryptedResult); + // console.log(dT(), 'Got encrypted out message'/*, encryptedResult*/); var request = new TLSerialization({startMaxLength: encryptedResult.bytes.length + 256}); request.storeIntBytes(self.authKeyID, 64, 'auth_key_id'); request.storeIntBytes(encryptedResult.msgKey, 128, 'msg_key'); @@ -2047,6 +2078,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato }; MtpNetworker.prototype.parseResponse = function (responseBuffer) { + // console.log(dT(), 'Start parsing response'); var self = this; var deserializer = new TLDeserialization(responseBuffer); @@ -2126,7 +2158,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato }; MtpNetworker.prototype.onSessionCreate = function (sessionID, messageID) { - console.log('New session created', bytesToHex(sessionID)); + console.log(dT(), 'New session created', bytesToHex(sessionID)); }; MtpNetworker.prototype.ackMessage = function (msgID) { @@ -2136,7 +2168,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato }; MtpNetworker.prototype.reqResendMessage = function (msgID) { - console.log('req resend', msgID); + console.log(dT(), 'Req resend', msgID); this.pendingResends.push(msgID); this.sheduleRequest(100); }; @@ -2206,7 +2238,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato break; case 'bad_server_salt': - console.log('Bad server salt', message); + console.log(dT(), 'Bad server salt', message); var sentMessage = this.sentMessages[message.bad_msg_id]; if (!sentMessage || sentMessage.seq_no != message.bad_msg_seqno) { console.log(message.bad_msg_id, message.bad_msg_seqno); @@ -2219,7 +2251,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato break; case 'bad_msg_notification': - console.log('Bad msg notification', message); + console.log(dT(), 'Bad msg notification', message); var sentMessage = this.sentMessages[message.bad_msg_id]; if (!sentMessage || sentMessage.seq_no != message.bad_msg_seqno) { console.log(message.bad_msg_id, message.bad_msg_seqno); @@ -2278,16 +2310,16 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato var deferred = sentMessage.deferred; if (message.result._ == 'rpc_error') { var error = this.processError(message.result); - console.log('rpc error', error) + console.log(dT(), 'Rpc error', error) if (deferred) { deferred.reject(error) } } else { if (deferred) { if (window._debugMode) { - console.log('rpc response', message.result); + console.log(dT(), 'Rpc response', message.result); } else { - console.log('rpc response', message.result._); + console.log(dT(), 'Rpc response', message.result._); } sentMessage.deferred.resolve(message.result); } @@ -2435,7 +2467,7 @@ factory('MtpApiManager', function (AppConfigManager, MtpAuthorizer, MtpNetworker // }, 1000); }, function (error) { - console.log('error', error.code, error.type, baseDcID, dcID); + console.error(dT(), 'Error', error.code, error.type, baseDcID, dcID); if (error.code == 401 && baseDcID && dcID != baseDcID) { if (cachedExportPromise[dcID] === undefined) { var exportDeferred = $q.defer(); @@ -2756,7 +2788,7 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { function downloadFile (dcID, location, size, fileEntry, options) { options = options || {}; - console.log('dload file', dcID, location, size); + console.log(dT(), 'Dload file', dcID, location, size); var fileName = getFileName(location), cachedPromise = cachedSavePromises[fileName] || cachedDownloadPromises[fileName]; @@ -2776,10 +2808,10 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { saveToFileEntry = function (fileEntry) { fileEntry.createWriter(function (fileWriter) { cacheFileWriter = fileWriter; + // console.time(fileName + ' ' + (size / 1024)); - // var limit = size > 102400 ? 65536 : 4096; - var limit = size > 30400 ? 524288 : 4096; - // var limit = size > 30400 ? 20480 : 4096; + var limit = 524288; + // var limit = size > 16384 ? 524288 : 51200; var writeFilePromise = $q.when(), writeFileDeferred; for (var offset = 0; offset < size; offset += limit) { @@ -2811,6 +2843,7 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { }, errorHandler).then(function () { if (isFinal) { + // console.timeEnd(fileName + ' ' + (size / 1024)); deferred.resolve(cachedDownloads[fileName] = fileEntry.toURL(options.mime || 'image/jpeg')); } else { // console.log('notify', {done: offset + limit, total: size}); @@ -2838,8 +2871,8 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { requestFS().then(function () { cachedFS.root.getFile(fileName, {create: false}, function(fileEntry) { fileEntry.file(function(file) { - console.log('check size', file.size, size); - if (file.size >= size) { + // console.log(dT(), 'Check size', file.size, size); + if (file.size >= size/* && false*/) { deferred.resolve(cachedDownloads[fileName] = fileEntry.toURL()); } else { console.log('File bad size', file, size); @@ -2912,7 +2945,7 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { } function writeFile (file) { - console.log('write file', file); + console.log(dT(), 'Write file', file); var fileName = getTempFileName(file); var deferred = $q.defer(), @@ -2954,7 +2987,7 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { var fileID = [nextRandomInt(0xFFFFFFFF), nextRandomInt(0xFFFFFFFF)], deferred = $q.defer(), errorHandler = function (error) { - console.log('error', error); + console.error('Error', error); deferred.reject(error); errorHandler = angular.noop; }, @@ -3000,7 +3033,7 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { if (doneParts >= totalParts) { deferred.resolve(resultInputFile); } else { - console.log('Progress', doneParts * partSize / fileSize); + console.log(dT(), 'Progress', doneParts * partSize / fileSize); deferred.notify({done: doneParts * partSize, total: fileSize}); } }, errorHandler);