function QiniuJsSDK(){this.detectIEVersion=function(){for(var a=4,b=document.createElement("div"),c=b.getElementsByTagName("i");b.innerHTML="",c[0];)a++;return a>4&&a},this.isImage=function(a){var b,c="",d=["png","jpg","jpeg","gif","bmp"],e=/\.([a-zA-Z0-9]+)(\?|\@|$)/;if(!a||!e.test(a))return!1;b=e.exec(a),c=b[1].toLowerCase();for(var f=0,g=d.length;g>f;f++)if(c===d[f])return!0;return!1},this.getFileExtension=function(a){var b,c=a.split(".");return b=1===c.length||""===c[0]&&2===c.length?"":c.pop().toLowerCase()},this.utf8_encode=function(a){if(null===a||"undefined"==typeof a)return"";var b,c,d=a+"",e="",f=0;b=c=0,f=d.length;for(var g=0;f>g;g++){var h=d.charCodeAt(g),i=null;if(128>h)c++;else if(h>127&&2048>h)i=String.fromCharCode(h>>6|192,63&h|128);else if(63488&h^!0)i=String.fromCharCode(h>>12|224,h>>6&63|128,63&h|128);else{if(64512&h^!0)throw new RangeError("Unmatched trail surrogate at "+g);var j=d.charCodeAt(++g);if(64512&j^!0)throw new RangeError("Unmatched lead surrogate at "+(g-1));h=((1023&h)<<10)+(1023&j)+65536,i=String.fromCharCode(h>>18|240,h>>12&63|128,h>>6&63|128,63&h|128)}null!==i&&(c>b&&(e+=d.slice(b,c)),e+=i,b=c=g+1)}return c>b&&(e+=d.slice(b,f)),e},this.base64_encode=function(a){var b,c,d,e,f,g,h,i,j="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",k=0,l=0,m="",n=[];if(!a)return a;a=this.utf8_encode(a+"");do b=a.charCodeAt(k++),c=a.charCodeAt(k++),d=a.charCodeAt(k++),i=b<<16|c<<8|d,e=i>>18&63,f=i>>12&63,g=i>>6&63,h=63&i,n[l++]=j.charAt(e)+j.charAt(f)+j.charAt(g)+j.charAt(h);while(k=f&&b.chunk_size&&b.runtimes.indexOf("flash")>=0?b.chunk_size=0:g?b.chunk_size=0:(c=20,d=4<d&&(b.chunk_size=d))};h();var i=function(){if(b.uptoken)a.token=b.uptoken;else{var c=a.createAjax();c.open("GET",a.uptoken_url,!0),c.setRequestHeader("If-Modified-Since","0"),c.onreadystatechange=function(){if(4===c.readyState&&200===c.status){var b=a.parseJSON(c.responseText);a.token=b.uptoken}},c.send()}},j=function(c,d,e){var f="",g=!1;if(!b.save_key)if(g=c.getOption&&c.getOption("unique_names"),g=g||c.settings&&c.settings.unique_names){var h=a.getFileExtension(d.name);f=h?d.id+"."+h:d.id}else f="function"==typeof e?e(c,d):d.name;return f};plupload.extend(c,b,{url:"https://up.qbox.me",multipart_params:{token:""}});var k=new plupload.Uploader(c);return k.bind("Init",function(){i()}),k.init(),k.bind("FilesAdded",function(a,b){var c=a.getOption&&a.getOption("auto_start");c=c||a.settings&&a.settings.auto_start,c&&plupload.each(b,function(){a.start()}),a.refresh()}),k.bind("BeforeUpload",function(c,d){d.speed=d.speed||0,f="";var e=function(c,d,e){g.startTime=(new Date).getTime();var f;f=b.save_key?{token:a.token}:{key:j(c,d,e),token:a.token};var h=b.x_vars;if(void 0!==h&&"object"==typeof h)for(var i in h)h.hasOwnProperty(i)&&("function"==typeof h[i]?f["x:"+i]=h[i](c,d):"object"!=typeof h[i]&&(f["x:"+i]=h[i]));c.setOption({url:"https://up.qbox.me/",multipart:!0,chunk_size:void 0,multipart_params:f})},h=c.getOption&&c.getOption("chunk_size");if(h=h||c.settings&&c.settings.chunk_size,"html5"===k.runtime&&h)if(d.sizem-n&&100!==i.percent&&d.size===i.total?(d.percent=i.percent,d.loaded=i.offset,f=i.ctx,g.isResumeUpload=!0,g.resumeFilesize=i.offset,i.offset+l>d.size&&(l=d.size-i.offset)):localStorage.removeItem(d.name)}g.startTime=(new Date).getTime(),c.setOption({url:"https://up.qbox.me/mkblk/"+l,multipart:!1,chunk_size:h,required_features:"chunks",headers:{Authorization:"UpToken "+a.token},multipart_params:{}})}else e(c,d,a.key_handler)}),k.bind("UploadProgress",function(a,b){g.currentTime=(new Date).getTime();var c=g.currentTime-g.startTime,d=b.loaded||0;g.isResumeUpload&&(d=b.loaded-g.resumeFilesize),b.speed=(d/c*1e3).toFixed(0)||0}),k.bind("ChunkUploaded",function(b,c,d){var e=a.parseJSON(d.response);f=f?f+","+e.ctx:e.ctx;var g=d.total-d.offset,h=b.getOption&&b.getOption("chunk_size");h=h||b.settings&&b.settings.chunk_size,h>g&&b.setOption({url:"https://up.qbox.me/mkblk/"+g}),localStorage.setItem(c.name,JSON.stringify({ctx:f,percent:c.percent,total:d.total,offset:d.offset,time:(new Date).getTime()}))}),k.bind("Error",function(b){return function(c,d){var e="",f=d.file;if(f){switch(d.code){case plupload.FAILED:e="上传失败。请稍后再试。";break;case plupload.FILE_SIZE_ERROR:var g=c.getOption&&c.getOption("max_file_size");g=g||c.settings&&c.settings.max_file_size,e="浏览器最大可上传"+g+"。更大文件请使用命令行工具。";break;case plupload.FILE_EXTENSION_ERROR:e="文件验证失败。请稍后重试。";break;case plupload.HTTP_ERROR:if(""===d.response){e=d.message||"未知网络错误。";break}var h=a.parseJSON(d.response),i=h.error;switch(d.status){case 400:e="请求报文格式错误。";break;case 401:e="客户端认证授权失败。请重试或提交反馈。";break;case 405:e="客户端请求错误。请重试或提交反馈。";break;case 579:e="资源上传成功,但回调失败。";break;case 599:e="网络连接异常。请重试或提交反馈。";break;case 614:e="文件已存在。";try{h=a.parseJSON(h.error),i=h.error||"file exists"}catch(j){i=h.error||"file exists"}break;case 631:e="指定空间不存在。";break;case 701:e="上传数据块校验出错。请重试或提交反馈。";break;default:e="未知错误。"}e=e+"("+d.status+":"+i+")";break;case plupload.SECURITY_ERROR:e="安全配置错误。请联系网站管理员。";break;case plupload.GENERIC_ERROR:e="上传失败。请稍后再试。";break;case plupload.IO_ERROR:e="上传失败。请稍后再试。";break;case plupload.INIT_ERROR:e="网站配置错误。请联系网站管理员。",k.destroy();break;default:e=d.message+d.details}b&&b(c,d,e)}c.refresh()}}(d)),k.bind("FileUploaded",function(c){return function(d,e,g){var h=function(d,e,f){if(b.downtoken_url){var g=a.createAjax();g.open("POST",b.downtoken_url,!0),g.setRequestHeader("Content-type","application/x-www-form-urlencoded"),g.onreadystatechange=function(){if(4===g.readyState)if(200===g.status){var b;try{b=a.parseJSON(g.responseText)}catch(h){throw"invalid json format"}var i={};plupload.extend(i,a.parseJSON(f),b),c&&c(d,e,JSON.stringify(i))}else k.trigger("Error",{status:g.status,response:g.responseText,file:e,code:plupload.HTTP_ERROR})},g.send("key="+a.parseJSON(f).key+"&domain="+b.domain)}else c&&c(d,e,f)},i=a.parseJSON(g.response);if(f=f?f:i.ctx){var l="";b.save_key||(l=j(d,e,a.key_handler),l=l?"/key/"+a.URLSafeBase64Encode(l):"");var m=b.x_vars,n="",o="";if(void 0!==m&&"object"==typeof m)for(var p in m)m.hasOwnProperty(p)&&("function"==typeof m[p]?n=a.URLSafeBase64Encode(m[p](d,e)):"object"!=typeof m[p]&&(n=a.URLSafeBase64Encode(m[p])),o+="/x:"+p+"/"+n);var q="https://up.qbox.me/mkfile/"+e.size+l+o,r=a.createAjax();r.open("POST",q,!0),r.setRequestHeader("Content-Type","text/plain;charset=UTF-8"),r.setRequestHeader("Authorization","UpToken "+a.token),r.onreadystatechange=function(){if(4===r.readyState)if(localStorage.removeItem(e.name),200===r.status){var a=r.responseText;h(d,e,a)}else k.trigger("Error",{status:r.status,response:r.responseText,file:e,code:-200})},r.send(f)}else h(d,e,g.response)}}(e)),k},this.getUrl=function(a){if(!a)return!1;a=encodeURI(a);var b=this.domain;return"/"!==b.slice(b.length-1)&&(b+="/"),b+a},this.imageView2=function(a,b){var c=a.mode||"",d=a.w||"",e=a.h||"",f=a.q||"",g=a.format||"";if(!c)return!1;if(!d&&!e)return!1;var h="imageView2/"+c;return h+=d?"/w/"+d:"",h+=e?"/h/"+e:"",h+=f?"/q/"+f:"",h+=g?"/format/"+g:"",b&&(h=this.getUrl(b)+"?"+h),h},this.imageMogr2=function(a,b){var c=a["auto-orient"]||"",d=a.thumbnail||"",e=a.strip||"",f=a.gravity||"",g=a.crop||"",h=a.quality||"",i=a.rotate||"",j=a.format||"",k=a.blur||"",l="imageMogr2";return l+=c?"/auto-orient":"",l+=d?"/thumbnail/"+d:"",l+=e?"/strip":"",l+=f?"/gravity/"+f:"",l+=h?"/quality/"+h:"",l+=g?"/crop/"+g:"",l+=i?"/rotate/"+i:"",l+=j?"/format/"+j:"",l+=k?"/blur/"+k:"",b&&(l=this.getUrl(b)+"?"+l),l},this.watermark=function(a,b){var c=a.mode;if(!c)return!1;var d="watermark/"+c;if(1===c){var e=a.image||"";if(!e)return!1;d+=e?"/image/"+this.URLSafeBase64Encode(e):""}else{if(2!==c)return!1;var f=a.text?a.text:"",g=a.font?a.font:"",h=a.fontsize?a.fontsize:"",i=a.fill?a.fill:"";if(!f)return!1;d+=f?"/text/"+this.URLSafeBase64Encode(f):"",d+=g?"/font/"+this.URLSafeBase64Encode(g):"",d+=h?"/fontsize/"+h:"",d+=i?"/fill/"+this.URLSafeBase64Encode(i):""}var j=a.dissolve||"",k=a.gravity||"",l=a.dx||"",m=a.dy||"";return d+=j?"/dissolve/"+j:"",d+=k?"/gravity/"+k:"",d+=l?"/dx/"+l:"",d+=m?"/dy/"+m:"",b&&(d=this.getUrl(b)+"?"+d),d},this.imageInfo=function(a){if(!a)return!1;var b,c=this.getUrl(a)+"?imageInfo",d=this.createAjax(),e=this;return d.open("GET",c,!1),d.onreadystatechange=function(){4===d.readyState&&200===d.status&&(b=e.parseJSON(d.responseText))},d.send(),b},this.exif=function(a){if(!a)return!1;var b,c=this.getUrl(a)+"?exif",d=this.createAjax(),e=this;return d.open("GET",c,!1),d.onreadystatechange=function(){4===d.readyState&&200===d.status&&(b=e.parseJSON(d.responseText))},d.send(),b},this.get=function(a,b){return!(!b||!a)&&("exif"===a?this.exif(b):"imageInfo"===a&&this.imageInfo(b))},this.pipeline=function(a,b){var c,d,e="[object Array]"===Object.prototype.toString.call(a),f="";if(e){for(var g=0,h=a.length;h>g;g++){if(c=a[g],!c.fop)return!1;switch(c.fop){case"watermark":f+=this.watermark(c)+"|";break;case"imageView2":f+=this.imageView2(c)+"|";break;case"imageMogr2":f+=this.imageMogr2(c)+"|";break;default:d=!0}if(d)return!1}if(b){f=this.getUrl(b)+"?"+f;var i=f.length;"|"===f.slice(i-1)&&(f=f.slice(0,i-1))}return f}return!1}}var Qiniu=new QiniuJsSDK;!function(a,b){"use strict";function c(a,b){for(var c,d=[],f=0;f0&&c(f,function(c,f){c!==e&&(a(d[f])===a(c)&&~g(a(c),["array","object"])?b(d[f],c):d[f]=c)})}),d},c=function(a,b){var c,d,e,f;if(a){try{c=a.length}catch(g){c=f}if(c===f){for(d in a)if(a.hasOwnProperty(d)&&b(a[d],d)===!1)return}else for(e=0;c>e;e++)if(b(a[e],e)===!1)return}},d=function(b){var c;if(!b||"object"!==a(b))return!0;for(c in b)return!1;return!0},e=function(b,c){function d(e){"function"===a(b[e])&&b[e](function(a){++ec;c++)if(b[c]===a)return c}return-1},h=function(b,c){var d=[];"array"!==a(b)&&(b=[b]),"array"!==a(c)&&(c=[c]);for(var e in b)-1===g(b[e],c)&&d.push(b[e]);return!!d.length&&d},i=function(a,b){var d=[];return c(a,function(a){-1!==g(a,b)&&d.push(a)}),d.length?d:null},j=function(a){var b,c=[];for(b=0;bc;c++)d+=Math.floor(65535*Math.random()).toString(32);return(b||"o_")+d+(a++).toString(32)}}(),l=function(a){return a?String.prototype.trim?String.prototype.trim.call(a):a.toString().replace(/^\s*/,"").replace(/\s*$/,""):a},m=function(a){if("string"!=typeof a)return a;var b,c={t:1099511627776,g:1073741824,m:1048576,k:1024};return a=/^([0-9]+)([mgk]?)$/.exec(a.toLowerCase().replace(/[^0-9mkg]/g,"")),b=a[2],a=+a[1],c.hasOwnProperty(b)&&(a*=c[b]),a};return{guid:k,typeOf:a,extend:b,each:c,isEmptyObj:d,inSeries:e,inParallel:f,inArray:g,arrayDiff:h,arrayIntersect:i,toArray:j,trim:l,parseSizeStr:m}}),d(i,[h],function(a){var b={};return{addI18n:function(c){return a.extend(b,c)},translate:function(a){return b[a]||a},_:function(a){return this.translate(a)},sprintf:function(b){var c=[].slice.call(arguments,1);return b.replace(/%[a-z]/g,function(){var b=c.shift();return"undefined"!==a.typeOf(b)?b:""})}}}),d(j,[h,i],function(a,b){var c="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",d={mimes:{},extensions:{},addMimeType:function(a){var b,c,d,e=a.split(/,/);for(b=0;bd;d++)if(a[d]!=b[d]){if(a[d]=i(a[d]),b[d]=i(b[d]),a[d]b[d]){f=1;break}}if(!c)return f;switch(c){case">":case"gt":return f>0;case">=":case"ge":return f>=0;case"<=":case"le":return 0>=f;case"==":case"=":case"eq":return 0===f;case"<>":case"!=":case"ne":return 0!==f;case"":case"<":case"lt":return 0>f;default:return null}}var c=function(a){var b="",c="?",d="function",e="undefined",f="object",g="major",h="name",i="version",j={has:function(a,b){return-1!==b.toLowerCase().indexOf(a.toLowerCase())},lowerize:function(a){return a.toLowerCase()}},k={rgx:function(){for(var b,c,g,h,i,j,k,l=0,m=arguments;l0?2==i.length?b[i[0]]=typeof i[1]==d?i[1].call(this,k):i[1]:3==i.length?b[i[0]]=typeof i[1]!==d||i[1].exec&&i[1].test?k?k.replace(i[1],i[2]):a:k?i[1].call(this,k,i[2]):a:4==i.length&&(b[i[0]]=k?i[3].call(this,k.replace(i[1],i[2])):a):b[i]=k?k:a;break}if(j)break}return b},str:function(b,d){for(var e in d)if(typeof d[e]===f&&d[e].length>0){for(var g=0;g=9)},use_data_uri_of:function(a){return b.use_data_uri&&33e3>a||b.use_data_uri_over32kb()},use_fileinput:function(){var a=document.createElement("input");return a.setAttribute("type","file"),!a.disabled}};return function(c){var d=[].slice.call(arguments);return d.shift(),"function"===a.typeOf(b[c])?b[c].apply(this,d):!!b[c]}}(),e={can:d,browser:c.browser.name,version:parseFloat(c.browser.major),os:c.os.name,osVersion:c.os.version,verComp:b,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return e.OS=e.os,e}),d(l,[k],function(a){var b=function(a){return"string"!=typeof a?a:document.getElementById(a)},c=function(a,b){if(!a.className)return!1;var c=new RegExp("(^|\\s+)"+b+"(\\s+|$)");return c.test(a.className)},d=function(a,b){c(a,b)||(a.className=a.className?a.className.replace(/\s+$/,"")+" "+b:b)},e=function(a,b){if(a.className){var c=new RegExp("(^|\\s+)"+b+"(\\s+|$)");a.className=a.className.replace(c,function(a,b,c){return" "===b&&" "===c?" ":""})}},f=function(a,b){return a.currentStyle?a.currentStyle[b]:window.getComputedStyle?window.getComputedStyle(a,null)[b]:void 0},g=function(b,c){function d(a){var b,c,d=0,e=0;return a&&(c=a.getBoundingClientRect(),b="CSS1Compat"===j.compatMode?j.documentElement:j.body,d=c.left+b.scrollLeft,e=c.top+b.scrollTop),{x:d,y:e}}var e,f,g,h=0,i=0,j=document;if(b=b,c=c||j.body,b&&b.getBoundingClientRect&&"IE"===a.browser&&(!j.documentMode||j.documentMode<8))return f=d(b),g=d(c),{x:f.x-g.x,y:f.y-g.y};for(e=b;e&&e!=c&&e.nodeType;)h+=e.offsetLeft||0,i+=e.offsetTop||0,e=e.offsetParent;for(e=b.parentNode;e&&e!=c&&e.nodeType;)h-=e.scrollLeft||0,i-=e.scrollTop||0,e=e.parentNode;return{x:h,y:i}},h=function(a){return{w:a.offsetWidth||a.clientWidth,h:a.offsetHeight||a.clientHeight}};return{get:b,hasClass:c,addClass:d,removeClass:e,getStyle:f,getPos:g,getSize:h}}),d(m,[h],function(a){function b(a,b){var c;for(c in a)if(a[c]===b)return c;return null}return{RuntimeError:function(){function c(a){this.code=a,this.name=b(d,a),this.message=this.name+": RuntimeError "+this.code}var d={NOT_INIT_ERR:1,NOT_SUPPORTED_ERR:9,JS_ERR:4};return a.extend(c,d),c.prototype=Error.prototype,c}(),OperationNotAllowedException:function(){function b(a){this.code=a,this.name="OperationNotAllowedException"}return a.extend(b,{NOT_ALLOWED_ERR:1}),b.prototype=Error.prototype,b}(),ImageError:function(){function c(a){this.code=a,this.name=b(d,a),this.message=this.name+": ImageError "+this.code}var d={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2};return a.extend(c,d),c.prototype=Error.prototype,c}(),FileException:function(){function c(a){this.code=a,this.name=b(d,a),this.message=this.name+": FileException "+this.code}var d={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8};return a.extend(c,d),c.prototype=Error.prototype,c}(),DOMException:function(){function c(a){this.code=a,this.name=b(d,a),this.message=this.name+": DOMException "+this.code}var d={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};return a.extend(c,d),c.prototype=Error.prototype,c}(),EventException:function(){function b(a){this.code=a,this.name="EventException"}return a.extend(b,{UNSPECIFIED_EVENT_TYPE_ERR:0}),b.prototype=Error.prototype,b}()}}),d(n,[m,h],function(a,b){function c(){var c={};b.extend(this,{uid:null,init:function(){this.uid||(this.uid=b.guid("uid_"))},addEventListener:function(a,d,e,f){var g,h=this;return a=b.trim(a),/\s/.test(a)?void b.each(a.split(/\s+/),function(a){h.addEventListener(a,d,e,f)}):(a=a.toLowerCase(),e=parseInt(e,10)||0,g=c[this.uid]&&c[this.uid][a]||[],g.push({fn:d,priority:e,scope:f||this}),c[this.uid]||(c[this.uid]={}),void(c[this.uid][a]=g))},hasEventListener:function(a){return a?!(!c[this.uid]||!c[this.uid][a]):!!c[this.uid]},removeEventListener:function(a,d){a=a.toLowerCase();var e,f=c[this.uid]&&c[this.uid][a];if(f){if(d){for(e=f.length-1;e>=0;e--)if(f[e].fn===d){f.splice(e,1);break}}else f=[];f.length||(delete c[this.uid][a],b.isEmptyObj(c[this.uid])&&delete c[this.uid])}},removeAllEventListeners:function(){c[this.uid]&&delete c[this.uid]},dispatchEvent:function(d){var e,f,g,h,i,j={},k=!0;if("string"!==b.typeOf(d)){if(h=d,"string"!==b.typeOf(h.type))throw new a.EventException(a.EventException.UNSPECIFIED_EVENT_TYPE_ERR);d=h.type,h.total!==i&&h.loaded!==i&&(j.total=h.total,j.loaded=h.loaded),j.async=h.async||!1}if(-1!==d.indexOf("::")?function(a){e=a[0],d=a[1]}(d.split("::")):e=this.uid,d=d.toLowerCase(),f=c[e]&&c[e][d]){f.sort(function(a,b){return b.priority-a.priority}),g=[].slice.call(arguments),g.shift(),j.type=d,g.unshift(j);var l=[];b.each(f,function(a){g[0].target=a.scope,j.async?l.push(function(b){setTimeout(function(){b(a.fn.apply(a.scope,g)===!1)},1)}):l.push(function(b){b(a.fn.apply(a.scope,g)===!1)})}),l.length&&b.inSeries(l,function(a){k=!a})}return k},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},convertEventPropsToHandlers:function(a){var c;"array"!==b.typeOf(a)&&(a=[a]);for(var d=0;d>16,e=255&k>>8,f=255&k,p[n++]=64==i?String.fromCharCode(d):64==j?String.fromCharCode(d,e):String.fromCharCode(d,e,f);while(m>18,h=63&k>>12,i=63&k>>6,j=63&k,p[n++]=l.charAt(g)+l.charAt(h)+l.charAt(i)+l.charAt(j);while(mg;g++)f+=String.fromCharCode(e[g]);return f}}b.call(this),a.extend(this,{uid:a.guid("uid_"),readAsBinaryString:function(a){return d.call(this,"readAsBinaryString",a)},readAsDataURL:function(a){return d.call(this,"readAsDataURL",a)},readAsText:function(a){return d.call(this,"readAsText",a)}})}}),d(z,[m,h,r],function(a,b,c){function d(){var a,d=[];b.extend(this,{append:function(e,f){var g=this,h=b.typeOf(f);f instanceof c?a={name:e,value:f}:"array"===h?(e+="[]",b.each(f,function(a){g.append(e,a)})):"object"===h?b.each(f,function(a,b){g.append(e+"["+b+"]",a)}):"null"===h||"undefined"===h||"number"===h&&isNaN(f)?g.append(e,"false"):d.push({name:e,value:f.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return a&&a.value||null},getBlobName:function(){return a&&a.name||null},each:function(c){b.each(d,function(a){c(a.value,a.name)}),a&&c(a.value,a.name)},destroy:function(){a=null,d=[]}})}return d}),d(A,[h,m,n,o,x,p,v,r,y,z,k,j],function(a,b,c,d,e,f,g,h,i,j,k,l){function m(){this.uid=a.guid("uid_")}function n(){function c(a,b){return A.hasOwnProperty(a)?1===arguments.length?k.can("define_property")?A[a]:z[a]:void(k.can("define_property")?A[a]=b:z[a]=b):void 0}function i(b){function d(){x.destroy(),x=null,h.dispatchEvent("loadend"),h=null}function e(e){x.bind("LoadStart",function(a){c("readyState",n.LOADING),h.dispatchEvent("readystatechange"),h.dispatchEvent(a),H&&h.upload.dispatchEvent(a)}),x.bind("Progress",function(a){c("readyState")!==n.LOADING&&(c("readyState",n.LOADING),h.dispatchEvent("readystatechange")),h.dispatchEvent(a)}),x.bind("UploadProgress",function(a){H&&h.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:a.total,loaded:a.loaded})}),x.bind("Load",function(b){c("readyState",n.DONE),c("status",Number(e.exec.call(x,"XMLHttpRequest","getStatus")||0)),c("statusText",o[c("status")]||""),c("response",e.exec.call(x,"XMLHttpRequest","getResponse",c("responseType"))),~a.inArray(c("responseType"),["text",""])?c("responseText",c("response")):"document"===c("responseType")&&c("responseXML",c("response")),O=e.exec.call(x,"XMLHttpRequest","getAllResponseHeaders"),h.dispatchEvent("readystatechange"),c("status")>0?(H&&h.upload.dispatchEvent(b),h.dispatchEvent(b)):(J=!0,h.dispatchEvent("error")),d()}),x.bind("Abort",function(a){h.dispatchEvent(a),d()}),x.bind("Error",function(a){J=!0,c("readyState",n.DONE),h.dispatchEvent("readystatechange"),I=!0,h.dispatchEvent(a),d()}),e.exec.call(x,"XMLHttpRequest","send",{url:r,method:s,async:B,user:t,password:u,headers:C,mimeType:E,encoding:D,responseType:h.responseType,withCredentials:h.withCredentials,options:N},b)}var h=this;v=(new Date).getTime(),x=new g,"string"==typeof N.required_caps&&(N.required_caps=f.parseCaps(N.required_caps)),N.required_caps=a.extend({},N.required_caps,{return_response_type:h.responseType}),b instanceof j&&(N.required_caps.send_multipart=!0),K||(N.required_caps.do_cors=!0),N.ruid?e(x.connectRuntime(N)):(x.bind("RuntimeInit",function(a,b){e(b)}),x.bind("RuntimeError",function(a,b){h.dispatchEvent("RuntimeError",b)}),x.connectRuntime(N))}function q(){c("responseText",""),c("responseXML",null),c("response",null),c("status",0),c("statusText",""),v=w=null}var r,s,t,u,v,w,x,y,z=this,A={timeout:0,readyState:n.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},B=!0,C={},D=null,E=null,F=!1,G=!1,H=!1,I=!1,J=!1,K=!1,L=null,M=null,N={},O="";a.extend(this,A,{uid:a.guid("uid_"),upload:new m,open:function(f,g,h,i,j){var k;if(!f||!g)throw new b.DOMException(b.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(f)||d.utf8_encode(f)!==f)throw new b.DOMException(b.DOMException.SYNTAX_ERR);if(~a.inArray(f.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(s=f.toUpperCase()),~a.inArray(s,["CONNECT","TRACE","TRACK"]))throw new b.DOMException(b.DOMException.SECURITY_ERR);if(g=d.utf8_encode(g),k=e.parseUrl(g),K=e.hasSameOrigin(k),r=e.resolveUrl(g),(i||j)&&!K)throw new b.DOMException(b.DOMException.INVALID_ACCESS_ERR);if(t=i||k.user,u=j||k.pass,B=h||!0,B===!1&&(c("timeout")||c("withCredentials")||""!==c("responseType")))throw new b.DOMException(b.DOMException.INVALID_ACCESS_ERR);F=!B,G=!1,C={},q.call(this),c("readyState",n.OPENED),this.convertEventPropsToHandlers(["readystatechange"]),this.dispatchEvent("readystatechange")},setRequestHeader:function(e,f){var g=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(c("readyState")!==n.OPENED||G)throw new b.DOMException(b.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(e)||d.utf8_encode(e)!==e)throw new b.DOMException(b.DOMException.SYNTAX_ERR);return e=a.trim(e).toLowerCase(),!~a.inArray(e,g)&&!/^(proxy\-|sec\-)/.test(e)&&(C[e]?C[e]+=", "+f:C[e]=f,!0)},getAllResponseHeaders:function(){return O||""},getResponseHeader:function(b){return b=b.toLowerCase(),J||~a.inArray(b,["set-cookie","set-cookie2"])?null:O&&""!==O&&(y||(y={},a.each(O.split(/\r\n/),function(b){var c=b.split(/:\s+/);2===c.length&&(c[0]=a.trim(c[0]),y[c[0].toLowerCase()]={header:c[0],value:a.trim(c[1])})})),y.hasOwnProperty(b))?y[b].header+": "+y[b].value:null},overrideMimeType:function(d){var e,f;if(~a.inArray(c("readyState"),[n.LOADING,n.DONE]))throw new b.DOMException(b.DOMException.INVALID_STATE_ERR);if(d=a.trim(d.toLowerCase()),/;/.test(d)&&(e=d.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(d=e[1],e[2]&&(f=e[2])),!l.mimes[d])throw new b.DOMException(b.DOMException.SYNTAX_ERR);L=d,M=f},send:function(c,e){if(N="string"===a.typeOf(e)?{ruid:e}:e?e:{},this.convertEventPropsToHandlers(p),this.upload.convertEventPropsToHandlers(p),this.readyState!==n.OPENED||G)throw new b.DOMException(b.DOMException.INVALID_STATE_ERR);if(c instanceof h)N.ruid=c.ruid,E=c.type||"application/octet-stream";else if(c instanceof j){if(c.hasBlob()){var f=c.getBlob();N.ruid=f.ruid,E=f.type||"application/octet-stream"}}else"string"==typeof c&&(D="UTF-8",E="text/plain;charset=UTF-8",c=d.utf8_encode(c));this.withCredentials||(this.withCredentials=N.required_caps&&N.required_caps.send_browser_cookies&&!K),H=!F&&this.upload.hasEventListener(),J=!1,I=!c,F||(G=!0),i.call(this,c)},abort:function(){if(J=!0,F=!1,~a.inArray(c("readyState"),[n.UNSENT,n.OPENED,n.DONE]))c("readyState",n.UNSENT);else{if(c("readyState",n.DONE),G=!1,!x)throw new b.DOMException(b.DOMException.INVALID_STATE_ERR);x.getRuntime().exec.call(x,"XMLHttpRequest","abort",I),I=!0}},destroy:function(){x&&("function"===a.typeOf(x.destroy)&&x.destroy(),x=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}})}var o={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};m.prototype=c.instance;var p=["loadstart","progress","abort","error","load","timeout","loadend"];return n.UNSENT=0,n.OPENED=1,n.HEADERS_RECEIVED=2,n.LOADING=3,n.DONE=4,n.prototype=c.instance,n}),d(B,[h,o,q,n],function(a,b,c,d){function e(){function d(){k=l=0,j=this.result=null}function f(b,c){var d=this;i=c,d.bind("TransportingProgress",function(b){l=b.loaded,k>l&&-1===a.inArray(d.state,[e.IDLE,e.DONE])&&g.call(d)},999),d.bind("TransportingComplete",function(){l=k,d.state=e.DONE,j=null,d.result=i.exec.call(d,"Transporter","getAsBlob",b||"")},999),d.state=e.BUSY,d.trigger("TransportingStarted"),g.call(d)}function g(){var a,c=this,d=k-l;m>d&&(m=d),a=b.btoa(j.substr(l,m)),i.exec.call(c,"Transporter","receive",a,k)}var h,i,j,k,l,m;c.call(this),a.extend(this,{uid:a.guid("uid_"),state:e.IDLE,result:null,transport:function(b,c,e){var g=this;if(e=a.extend({chunk_size:204798},e),(h=e.chunk_size%3)&&(e.chunk_size+=3-h),m=e.chunk_size,d.call(this),j=b,k=b.length,"string"===a.typeOf(e)||e.ruid)f.call(g,c,this.connectRuntime(e));else{var i=function(a,b){g.unbind("RuntimeInit",i),f.call(g,c,b)};this.bind("RuntimeInit",i),this.connectRuntime(e)}},abort:function(){var a=this;a.state=e.IDLE,i&&(i.exec.call(a,"Transporter","clear"),a.trigger("TransportingAborted")),d.call(a)},destroy:function(){this.unbindAll(),i=null,this.disconnectRuntime(),d.call(this)}})}return e.IDLE=0,e.BUSY=1,e.DONE=2,e.prototype=d.instance,e}),d(C,[h,l,m,y,A,p,q,B,k,n,r,s,o],function(a,b,c,d,e,f,g,h,i,j,k,l,m){function n(){function d(a){a||(a=this.getRuntime().exec.call(this,"Image","getInfo")),this.size=a.size,this.width=a.width,this.height=a.height,this.type=a.type,this.meta=a.meta,""===this.name&&(this.name=a.name)}function j(b){var d=a.typeOf(b);try{if(b instanceof n){if(!b.size)throw new c.DOMException(c.DOMException.INVALID_STATE_ERR);p.apply(this,arguments)}else if(b instanceof k){if(!~a.inArray(b.type,["image/jpeg","image/png"]))throw new c.ImageError(c.ImageError.WRONG_FORMAT);q.apply(this,arguments)}else if(-1!==a.inArray(d,["blob","file"]))j.call(this,new l(null,b),arguments[1]);else if("string"===d)/^data:[^;]*;base64,/.test(b)?j.call(this,new k(null,{data:b}),arguments[1]):r.apply(this,arguments);else{if("node"!==d||"img"!==b.nodeName.toLowerCase())throw new c.DOMException(c.DOMException.TYPE_MISMATCH_ERR);j.call(this,b.src,arguments[1])}}catch(e){this.trigger("error",e)}}function p(b,c){var d=this.connectRuntime(b.ruid);this.ruid=d.uid,d.exec.call(this,"Image","loadFromImage",b,"undefined"===a.typeOf(c)||c)}function q(b,c){function d(a){e.ruid=a.uid,a.exec.call(e,"Image","loadFromBlob",b)}var e=this;e.name=b.name||"",b.isDetached()?(this.bind("RuntimeInit",function(a,b){d(b)}),c&&"string"==typeof c.required_caps&&(c.required_caps=f.parseCaps(c.required_caps)),this.connectRuntime(a.extend({required_caps:{access_image_binary:!0,resize_image:!0}},c))):d(this.connectRuntime(b.ruid))}function r(a,b){var c,d=this;c=new e,c.open("get",a),c.responseType="blob",c.onprogress=function(a){d.trigger(a)},c.onload=function(){q.call(d,c.response,!0)},c.onerror=function(a){d.trigger(a)},c.onloadend=function(){c.destroy()},c.bind("RuntimeError",function(a,b){d.trigger("RuntimeError",b)}),c.send(null,b)}g.call(this),a.extend(this,{uid:a.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){this.bind("Load Resize",function(){d.call(this)},999),this.convertEventPropsToHandlers(o),j.apply(this,arguments)},downsize:function(b,d,e,f){try{if(!this.size)throw new c.DOMException(c.DOMException.INVALID_STATE_ERR);if(this.width>n.MAX_RESIZE_WIDTH||this.height>n.MAX_RESIZE_HEIGHT)throw new c.ImageError(c.ImageError.MAX_RESOLUTION_ERR);(!b&&!d||"undefined"===a.typeOf(e))&&(e=!1),b=b||this.width,d=d||this.height,f="undefined"===a.typeOf(f)||!!f,this.getRuntime().exec.call(this,"Image","downsize",b,d,e,f)}catch(g){this.trigger("error",g)}},crop:function(a,b,c){this.downsize(a,b,!0,c)},getAsCanvas:function(){if(!i.can("create_canvas"))throw new c.RuntimeError(c.RuntimeError.NOT_SUPPORTED_ERR);var a=this.connectRuntime(this.ruid);return a.exec.call(this,"Image","getAsCanvas")},getAsBlob:function(a,b){if(!this.size)throw new c.DOMException(c.DOMException.INVALID_STATE_ERR);return a||(a="image/jpeg"),"image/jpeg"!==a||b||(b=90),this.getRuntime().exec.call(this,"Image","getAsBlob",a,b)},getAsDataURL:function(a,b){if(!this.size)throw new c.DOMException(c.DOMException.INVALID_STATE_ERR);return this.getRuntime().exec.call(this,"Image","getAsDataURL",a,b)},getAsBinaryString:function(a,b){var c=this.getAsDataURL(a,b);return m.atob(c.substring(c.indexOf("base64,")+7))},embed:function(d){function e(){if(i.can("create_canvas")){var b=f.getAsCanvas();if(b)return d.appendChild(b),b=null,f.destroy(),void o.trigger("embedded")}var e=f.getAsDataURL(g,j);if(!e)throw new c.ImageError(c.ImageError.WRONG_FORMAT);if(i.can("use_data_uri_of",e.length))d.innerHTML='',f.destroy(),o.trigger("embedded");else{var k=new h;k.bind("TransportingComplete",function(){l=o.connectRuntime(this.result.ruid),o.bind("Embedded",function(){a.extend(l.getShimContainer().style,{top:"0px",left:"0px",width:f.width+"px",height:f.height+"px"}),l=null},999),l.exec.call(o,"ImageView","display",this.result.uid,q,r),f.destroy()}),k.transport(m.atob(e.substring(e.indexOf("base64,")+7)),g,a.extend({},p,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:d}))}}var f,g,j,k,l,o=this,p=arguments[1]||{},q=this.width,r=this.height;try{if(!(d=b.get(d)))throw new c.DOMException(c.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new c.DOMException(c.DOMException.INVALID_STATE_ERR);if(this.width>n.MAX_RESIZE_WIDTH||this.height>n.MAX_RESIZE_HEIGHT)throw new c.ImageError(c.ImageError.MAX_RESOLUTION_ERR);if(g=p.type||this.type||"image/jpeg",j=p.quality||90,k="undefined"!==a.typeOf(p.crop)&&p.crop,p.width)q=p.width,r=p.height||q;else{var s=b.getSize(d);s.w&&s.h&&(q=s.w,r=s.h)}return f=new n,f.bind("Resize",function(){e.call(o)}),f.bind("Load",function(){f.downsize(q,r,k,!1)}),f.clone(this,!1),f}catch(t){this.trigger("error",t)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}})}var o=["progress","load","error","resize","embedded"];return n.MAX_RESIZE_WIDTH=6500,n.MAX_RESIZE_HEIGHT=6500,n.prototype=j.instance,n}),d(D,[h,m,p,k],function(a,b,c,d){function e(b){var e=this,h=c.capTest,i=c.capTrue,j=a.extend({access_binary:h(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return e.can("access_binary")&&!!g.Image},display_media:h(d.can("create_canvas")||d.can("use_data_uri_over32kb")),do_cors:h(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:h(function(){var a=document.createElement("div");return("draggable"in a||"ondragstart"in a&&"ondrop"in a)&&("IE"!==d.browser||d.version>9)}()),filter_by_extension:h(function(){return"Chrome"===d.browser&&d.version>=28||"IE"===d.browser&&d.version>=10}()),return_response_headers:i,return_response_type:function(a){return!("json"!==a||!window.JSON)||d.can("return_response_type",a)},return_status_code:i,report_upload_progress:h(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return e.can("access_binary")&&d.can("create_canvas")},select_file:function(){return d.can("use_fileinput")&&window.File},select_folder:function(){return e.can("select_file")&&"Chrome"===d.browser&&d.version>=21},select_multiple:function(){return!(!e.can("select_file")||"Safari"===d.browser&&"Windows"===d.os||"iOS"===d.os&&d.verComp(d.osVersion,"7.0.4","<"))},send_binary_string:h(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:h(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||e.can("send_binary_string")},slice_blob:h(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return e.can("slice_blob")&&e.can("send_multipart")},summon_file_dialog:h(function(){return"Firefox"===d.browser&&d.version>=4||"Opera"===d.browser&&d.version>=12||"IE"===d.browser&&d.version>=10||!!~a.inArray(d.browser,["Chrome","Safari"])}()),upload_filesize:i},arguments[2]);c.call(this,b,arguments[1]||f,j),a.extend(this,{init:function(){this.trigger("Init")},destroy:function(a){return function(){a.call(e),a=e=null}}(this.destroy)}),a.extend(this.getShim(),g)}var f="html5",g={};return c.addConstructor(f,e),g}),d(E,[D,r],function(a,b){function c(){function a(a,b,c){var d;if(!window.File.prototype.slice)return(d=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?d.call(a,b,c):null;try{return a.slice(),a.slice(b,c)}catch(e){return a.slice(b,c-b)}}this.slice=function(){return new b(this.getRuntime().uid,a.apply(this,arguments))}}return a.Blob=c}),d(F,[h],function(a){function b(){this.returnValue=!1}function c(){this.cancelBubble=!0}var d={},e="moxie_"+a.guid(),f=function(f,g,h,i){var j,k;g=g.toLowerCase(),f.addEventListener?(j=h,f.addEventListener(g,j,!1)):f.attachEvent&&(j=function(){var a=window.event;a.target||(a.target=a.srcElement),a.preventDefault=b,a.stopPropagation=c,h(a)},f.attachEvent("on"+g,j)),f[e]||(f[e]=a.guid()),d.hasOwnProperty(f[e])||(d[f[e]]={}),k=d[f[e]],k.hasOwnProperty(g)||(k[g]=[]),k[g].push({func:j,orig:h,key:i})},g=function(b,c,f){var g,h;if(c=c.toLowerCase(),b[e]&&d[b[e]]&&d[b[e]][c]){g=d[b[e]][c];for(var i=g.length-1;i>=0&&(g[i].orig!==f&&g[i].key!==f||(b.removeEventListener?b.removeEventListener(c,g[i].func,!1):b.detachEvent&&b.detachEvent("on"+c,g[i].func),g[i].orig=null,g[i].func=null,g.splice(i,1),f===h));i--);if(g.length||delete d[b[e]][c],a.isEmptyObj(d[b[e]])){delete d[b[e]];try{delete b[e]}catch(j){b[e]=h}}}},h=function(b,c){b&&b[e]&&a.each(d[b[e]],function(a,d){g(b,d,c)})};return{addEvent:f,removeEvent:g,removeAllEvents:h}}),d(G,[D,h,l,F,j,k],function(a,b,c,d,e,f){function g(){var a,g=[];b.extend(this,{init:function(h){var i,j,k,l,m,n,o=this,p=o.getRuntime();a=h,g=[],k=a.accept.mimes||e.extList2mimes(a.accept,p.can("filter_by_extension")),j=p.getShimContainer(),j.innerHTML='",i=c.get(p.uid),b.extend(i.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),l=c.get(a.browse_button),p.can("summon_file_dialog")&&("static"===c.getStyle(l,"position")&&(l.style.position="relative"),m=parseInt(c.getStyle(l,"z-index"),10)||1,l.style.zIndex=m,j.style.zIndex=m-1,d.addEvent(l,"click",function(a){var b=c.get(p.uid);b&&!b.disabled&&b.click(),a.preventDefault()},o.uid)),n=p.can("summon_file_dialog")?l:j,d.addEvent(n,"mouseover",function(){o.trigger("mouseenter")},o.uid),d.addEvent(n,"mouseout",function(){o.trigger("mouseleave")},o.uid),d.addEvent(n,"mousedown",function(){o.trigger("mousedown")},o.uid),d.addEvent(c.get(a.container),"mouseup",function(){o.trigger("mouseup")},o.uid),i.onchange=function q(){if(g=[],a.directory?b.each(this.files,function(a){"."!==a.name&&g.push(a)}):g=[].slice.call(this.files),"IE"!==f.browser)this.value="";else{var c=this.cloneNode(!0);this.parentNode.replaceChild(c,this), c.onchange=q}o.trigger("change")},o.trigger({type:"ready",async:!0}),j=null},getFiles:function(){return g},disable:function(a){var b,d=this.getRuntime();(b=c.get(d.uid))&&(b.disabled=!!a)},destroy:function(){var b=this.getRuntime(),e=b.getShim(),f=b.getShimContainer();d.removeAllEvents(f,this.uid),d.removeAllEvents(a&&c.get(a.container),this.uid),d.removeAllEvents(a&&c.get(a.browse_button),this.uid),f&&(f.innerHTML=""),e.removeInstance(this.uid),g=a=f=e=null}})}return a.FileInput=g}),d(H,[D,h,l,F,j],function(a,b,c,d,e){function f(){function a(a){for(var c=[],d=0;d=4&&i.version<7,o="Android Browser"===i.browser,p=!1;if(n=c.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),m=j(),m.open(c.method,c.url,c.async,c.user,c.password),e instanceof f)e.isDetached()&&(p=!0),e=e.getSource();else if(e instanceof g){if(e.hasBlob())if(e.getBlob().isDetached())e=l.call(h,e),p=!0;else if((k||o)&&"blob"===b.typeOf(e.getBlob().getSource())&&window.FileReader)return void a.call(h,c,e);if(e instanceof g){var q=new window.FormData;e.each(function(a,b){a instanceof f?q.append(b,a.getSource()):q.append(b,a)}),e=q}}m.upload?(c.withCredentials&&(m.withCredentials=!0),m.addEventListener("load",function(a){h.trigger(a)}),m.addEventListener("error",function(a){h.trigger(a)}),m.addEventListener("progress",function(a){h.trigger(a)}),m.upload.addEventListener("progress",function(a){h.trigger({type:"UploadProgress",loaded:a.loaded,total:a.total})})):m.onreadystatechange=function(){switch(m.readyState){case 1:break;case 2:break;case 3:var a,b;try{d.hasSameOrigin(c.url)&&(a=m.getResponseHeader("Content-Length")||0),m.responseText&&(b=m.responseText.length)}catch(e){a=b=0}h.trigger({type:"progress",lengthComputable:!!a,total:parseInt(a,10),loaded:b});break;case 4:m.onreadystatechange=function(){},0===m.status?h.trigger("error"):h.trigger("load")}},b.isEmptyObj(c.headers)||b.each(c.headers,function(a,b){m.setRequestHeader(b,a)}),""!==c.responseType&&"responseType"in m&&(m.responseType="json"!==c.responseType||i.can("return_response_type","json")?c.responseType:"text"),p?m.sendAsBinary?m.sendAsBinary(e):function(){for(var a=new Uint8Array(e.length),b=0;bc;c++)g|=e.charCodeAt(a+c)<e;e++)g+=String.fromCharCode(255&b>>Math.abs(h+8*e));c(g,a,d)}var e,f=!1;return{II:function(a){return a===b?f:void(f=a)},init:function(a){f=!1,e=a},SEGMENT:function(a,b,d){switch(arguments.length){case 1:return e.substr(a,e.length-a-1);case 2:return e.substr(a,b);case 3:c(d,a,b);break;default:return e}},BYTE:function(b){return a(b,1)},SHORT:function(b){return a(b,2)},LONG:function(c,e){return e===b?a(c,4):void d(c,e,4)},SLONG:function(b){var c=a(b,4);return c>2147483647?c-4294967296:c},STRING:function(b,c){var d="";for(c+=b;c>b;b++)d+=String.fromCharCode(a(b,1));return d}}}}),d(L,[K],function(a){return function b(c){var d,e,f,g=[],h=0;if(d=new a,d.init(c),65496===d.SHORT(0)){for(e=2;e<=c.length;)if(f=d.SHORT(e),f>=65488&&65495>=f)e+=2;else{if(65498===f||65497===f)break;h=d.SHORT(e+2)+2,f>=65505&&65519>=f&&g.push({hex:f,name:"APP"+(15&f),start:e,length:h,segment:d.SEGMENT(e,h)}),e+=h}return d.init(null),{headers:g,restore:function(a){var b,c;for(d.init(a),e=65504==d.SHORT(2)?4+d.SHORT(4):2,c=0,b=g.length;b>c;c++)d.SEGMENT(e,0,g[c].segment),e+=g[c].length;return a=d.SEGMENT(),d.init(null),a},strip:function(a){var c,e,f;for(e=new b(a),c=e.headers,e.purge(),d.init(a),f=c.length;f--;)d.SEGMENT(c[f].start,c[f].length,"");return a=d.SEGMENT(),d.init(null),a},get:function(a){for(var b=[],c=0,d=g.length;d>c;c++)g[c].name===a.toUpperCase()&&b.push(g[c].segment);return b},set:function(a,b){var c,d,e,f=[];for("string"==typeof b?f.push(b):f=b,c=d=0,e=g.length;e>c&&(g[c].name===a.toUpperCase()&&(g[c].segment=f[d],g[c].length=f[d].length,d++),!(d>=f.length));c++);},purge:function(){g=[],d.init(null),d=null}}}}}),d(M,[h,K],function(a,c){return function d(){function d(a,c){var d,e,f,h,i,l,m,n,o=g.SHORT(a),p=[],q={};for(d=0;o>d;d++)if(m=l=a+12*d+2,f=c[g.SHORT(m)],f!==b){switch(h=g.SHORT(m+=2),i=g.LONG(m+=2),m+=4,p=[],h){case 1:case 7:for(i>4&&(m=g.LONG(m)+k.tiffHeader),e=0;i>e;e++)p[e]=g.BYTE(m+e);break;case 2:i>4&&(m=g.LONG(m)+k.tiffHeader),q[f]=g.STRING(m,i-1);continue;case 3:for(i>2&&(m=g.LONG(m)+k.tiffHeader),e=0;i>e;e++)p[e]=g.SHORT(m+2*e);break;case 4:for(i>1&&(m=g.LONG(m)+k.tiffHeader),e=0;i>e;e++)p[e]=g.LONG(m+4*e);break;case 5:for(m=g.LONG(m)+k.tiffHeader,e=0;i>e;e++)p[e]=g.LONG(m+4*e)/g.LONG(m+4*e+4);break;case 9:for(m=g.LONG(m)+k.tiffHeader,e=0;i>e;e++)p[e]=g.SLONG(m+4*e);break;case 10:for(m=g.LONG(m)+k.tiffHeader,e=0;i>e;e++)p[e]=g.SLONG(m+4*e)/g.SLONG(m+4*e+4);break;default:continue}n=1==i?p[0]:p,q[f]=j.hasOwnProperty(f)&&"object"!=typeof n?j[f][n]:n}return q}function e(){var a=k.tiffHeader;return g.II(18761==g.SHORT(a)),42===g.SHORT(a+=2)&&(k.IFD0=k.tiffHeader+g.LONG(a+=2),i=d(k.IFD0,h.tiff),"ExifIFDPointer"in i&&(k.exifIFD=k.tiffHeader+i.ExifIFDPointer,delete i.ExifIFDPointer),"GPSInfoIFDPointer"in i&&(k.gpsIFD=k.tiffHeader+i.GPSInfoIFDPointer,delete i.GPSInfoIFDPointer),!0)}function f(a,b,c){var d,e,f,i=0;if("string"==typeof b){var j=h[a.toLowerCase()];for(var l in j)if(j[l]===b){b=l;break}}d=k[a.toLowerCase()+"IFD"],e=g.SHORT(d);for(var m=0;e>m;m++)if(f=d+12*m+2,g.SHORT(f)==b){i=f+8;break}return!!i&&(g.LONG(i,c),!0)}var g,h,i,j,k={};return g=new c,h={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"}},j={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire.",1:"Flash fired.",5:"Strobe return light not detected.",7:"Strobe return light detected.",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},{init:function(a){return k={tiffHeader:10},!(a===b||!a.length)&&(g.init(a),65505===g.SHORT(0)&&"EXIF\0"===g.STRING(4,5).toUpperCase()&&e())},TIFF:function(){return i},EXIF:function(){var b;if(b=d(k.exifIFD,h.exif),b.ExifVersion&&"array"===a.typeOf(b.ExifVersion)){for(var c=0,e="";c=65472&&65475>=a)return c+=5,{height:j.SHORT(c),width:j.SHORT(c+=2)};b=j.SHORT(c+=2),c+=b-2}return null}function h(){l&&k&&j&&(l.purge(),k.purge(),j.init(null),i=m=k=l=j=null)}var i,j,k,l,m,n;if(i=f,j=new d,j.init(i),65496!==j.SHORT(0))throw new b.ImageError(b.ImageError.WRONG_FORMAT);k=new c(f),l=new e,n=!!l.init(k.get("app1")[0]),m=g.call(this),a.extend(this,{type:"image/jpeg",size:i.length,width:m&&m.width||0,height:m&&m.height||0,setExif:function(b,c){return!!n&&("object"===a.typeOf(b)?a.each(b,function(a,b){l.setExif(b,a)}):l.setExif(b,c),void k.set("app1",l.getBinary()))},writeHeaders:function(){return arguments.length?k.restore(arguments[0]):i=k.restore(i)},stripHeaders:function(a){return k.strip(a)},purge:function(){h.call(this)}}),n&&(this.meta={tiff:l.TIFF(),exif:l.EXIF(),gps:l.GPS()})}return f}),d(O,[m,h,K],function(a,b,c){function d(d){function e(){var a,b;return a=g.call(this,8),"IHDR"==a.type?(b=a.start,{width:i.LONG(b),height:i.LONG(b+=4)}):null}function f(){i&&(i.init(null),h=l=j=k=i=null)}function g(a){var b,c,d,e;return b=i.LONG(a),c=i.STRING(a+=4,4),d=a+=4,e=i.LONG(a+b),{length:b,type:c,start:d,CRC:e}}var h,i,j,k,l;h=d,i=new c,i.init(h),function(){var b=0,c=0,d=[35152,20039,3338,6666];for(c=0;cq;){for(var r=q+m>g?g-q:m,s=0;f>s;){var t=s+m>f?f-s:m;o.clearRect(0,0,m,m),o.drawImage(a,-s,-q);var u=s*h/f+j<<0,v=Math.ceil(t*h/f),w=q*i/g/p+k<<0,x=Math.ceil(r*i/g/p);l.drawImage(n,0,0,t,r,u,w,v,x),s+=m}q+=m}n=o=null}function b(a){var b=a.naturalWidth,c=a.naturalHeight;if(b*c>1048576){var d=document.createElement("canvas");d.width=d.height=1;var e=d.getContext("2d");return e.drawImage(a,-b+1,0),0===e.getImageData(0,0,1,1).data[3]}return!1}function c(a,b,c){var d=document.createElement("canvas");d.width=1,d.height=c;var e=d.getContext("2d");e.drawImage(a,0,0);for(var f=e.getImageData(0,0,1,c).data,g=0,h=c,i=c;i>g;){var j=f[4*(i-1)+3];0===j?h=i:g=i,i=h+g>>1}d=null;var k=i/c;return 0===k?1:k}return{isSubsampled:b,renderTo:a}}),d(R,[D,h,m,o,s,P,Q,j,k],function(a,b,c,d,e,f,g,h,i){function j(){function a(){if(!t&&!r)throw new c.ImageError(c.DOMException.INVALID_STATE_ERR);return t||r}function j(a){return d.atob(a.substring(a.indexOf("base64,")+7))}function k(a,b){return"data:"+(b||"")+";base64,"+d.btoa(a)}function l(a){var b=this;r=new Image,r.onerror=function(){q.call(this),b.trigger("error",new c.ImageError(c.ImageError.WRONG_FORMAT))},r.onload=function(){b.trigger("load")},r.src=/^data:[^;]*;base64,/.test(a)?a:k(a,v.type)}function m(a,b){var d,e=this;return window.FileReader?(d=new FileReader,d.onload=function(){b(this.result)},d.onerror=function(){e.trigger("error",new c.FileException(c.FileException.NOT_READABLE_ERR))},void d.readAsDataURL(a)):b(a.getAsDataURL())}function n(c,d,e,f){var g,h,i,j,k,l,m=this,n=0,q=0;if(y=f,l=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1,-1!==b.inArray(l,[5,6,7,8])){var r=c;c=d,d=r}return i=a(),h=e?Math.max:Math.min,g=h(c/i.width,d/i.height),g>1&&(!e||f)?void this.trigger("Resize"):(t||(t=document.createElement("canvas")),j=Math.round(i.width*g),k=Math.round(i.height*g),e?(t.width=c,t.height=d,j>c&&(n=Math.round((j-c)/2)),k>d&&(q=Math.round((k-d)/2))):(t.width=j,t.height=k),y||p(t.width,t.height,l),o.call(this,i,t,-n,-q,j,k),this.width=t.width,this.height=t.height,x=!0,void m.trigger("Resize"))}function o(a,b,c,d,e,f){if("iOS"===i.OS)g.renderTo(a,b,{width:e,height:f,x:c,y:d});else{var h=b.getContext("2d");h.drawImage(a,c,d,e,f)}}function p(a,b,c){switch(c){case 5:case 6:case 7:case 8:t.width=b,t.height=a;break;default:t.width=a,t.height=b}var d=t.getContext("2d");switch(c){case 2:d.translate(a,0),d.scale(-1,1);break;case 3:d.translate(a,b),d.rotate(Math.PI);break;case 4:d.translate(0,b),d.scale(1,-1);break;case 5:d.rotate(.5*Math.PI),d.scale(1,-1);break;case 6:d.rotate(.5*Math.PI),d.translate(0,-b);break;case 7:d.rotate(.5*Math.PI),d.translate(a,-b),d.scale(-1,1);break;case 8:d.rotate(-.5*Math.PI),d.translate(-a,0)}}function q(){s&&(s.purge(),s=null),u=r=t=v=null,x=!1}var r,s,t,u,v,w=this,x=!1,y=!0;b.extend(this,{loadFromBlob:function(a){var b=this,d=b.getRuntime(),e=!(arguments.length>1)||arguments[1];if(!d.can("access_binary"))throw new c.RuntimeError(c.RuntimeError.NOT_SUPPORTED_ERR);return v=a,a.isDetached()?(u=a.getSource(),void l.call(this,u)):void m.call(this,a.getSource(),function(a){e&&(u=j(a)),l.call(b,a)})},loadFromImage:function(a,b){this.meta=a.meta,v=new e(null,{name:a.name,size:a.size,type:a.type}),l.call(this,b?u=a.getAsBinaryString():a.getAsDataURL())},getInfo:function(){var b,c=this.getRuntime();return!s&&u&&c.can("access_image_binary")&&(s=new f(u)),b={width:a().width||0,height:a().height||0,type:v.type||h.getFileMime(v.name),size:u&&u.length||v.size||0,name:v.name||"",meta:s&&s.meta||this.meta||{}}},downsize:function(){n.apply(this,arguments)},getAsCanvas:function(){return t&&(t.id=this.uid+"_canvas"),t},getAsBlob:function(a,b){return a!==this.type&&n.call(this,this.width,this.height,!1),new e(null,{name:v.name||"",type:a,data:w.getAsBinaryString.call(this,a,b)})},getAsDataURL:function(a){var b=arguments[1]||90;if(!x)return r.src;if("image/jpeg"!==a)return t.toDataURL("image/png");try{return t.toDataURL("image/jpeg",b/100)}catch(c){return t.toDataURL("image/jpeg")}},getAsBinaryString:function(a,b){if(!x)return u||(u=j(w.getAsDataURL(a,b))),u;if("image/jpeg"!==a)u=j(w.getAsDataURL(a,b));else{var c;b||(b=90);try{c=t.toDataURL("image/jpeg",b/100)}catch(d){c=t.toDataURL("image/jpeg")}u=j(c),s&&(u=s.stripHeaders(u),y&&(s.meta&&s.meta.exif&&s.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),u=s.writeHeaders(u)),s.purge(),s=null)}return x=!1,u},destroy:function(){w=null,q.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return a.Image=j}),d(S,[h,k,l,m,p],function(a,b,c,d,e){function f(){var a;try{a=navigator.plugins["Shockwave Flash"],a=a.description}catch(b){try{a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(c){a="0.0"}}return a=a.match(/\d+/g),parseFloat(a[0]+"."+a[1])}function g(g){var j,k=this;g=a.extend({swf_url:b.swf_url},g),e.call(this,g,h,{access_binary:function(a){return a&&"browser"===k.mode},access_image_binary:function(a){return a&&"browser"===k.mode},display_media:e.capTrue,do_cors:e.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===k.mode},resize_image:e.capTrue,return_response_headers:!1,return_response_type:function(b){return!("json"!==b||!window.JSON)||(!a.arrayDiff(b,["","text","document"])||"browser"===k.mode)},return_status_code:function(b){return"browser"===k.mode||!a.arrayDiff(b,[200,404])},select_file:e.capTrue,select_multiple:e.capTrue,send_binary_string:function(a){return a&&"browser"===k.mode},send_browser_cookies:function(a){return a&&"browser"===k.mode},send_custom_headers:function(a){return a&&"browser"===k.mode},send_multipart:e.capTrue,slice_blob:e.capTrue,stream_upload:function(a){return a&&"browser"===k.mode},summon_file_dialog:!1,upload_filesize:function(b){return a.parseSizeStr(b)<=2097152||"client"===k.mode},use_http_method:function(b){return!a.arrayDiff(b,["GET","POST"])}},{access_binary:function(a){return a?"browser":"client"},access_image_binary:function(a){return a?"browser":"client"},report_upload_progress:function(a){return a?"browser":"client"},return_response_type:function(b){return a.arrayDiff(b,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(b){return a.arrayDiff(b,[200,404])?"browser":["client","browser"]},send_binary_string:function(a){return a?"browser":"client"},send_browser_cookies:function(a){return a?"browser":"client"},send_custom_headers:function(a){return a?"browser":"client"},stream_upload:function(a){return a?"client":"browser"},upload_filesize:function(b){return a.parseSizeStr(b)>=2097152?"client":"browser"}},"client"),f()<10&&(this.mode=!1),a.extend(this,{getShim:function(){return c.get(this.uid)},shimExec:function(a,b){var c=[].slice.call(arguments,2);return k.getShim().exec(this.uid,a,b,c)},init:function(){var c,e,f;f=this.getShimContainer(),a.extend(f.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),c='',"IE"===b.browser?(e=document.createElement("div"),f.appendChild(e),e.outerHTML=c,e=f=null):f.innerHTML=c,j=setTimeout(function(){k&&!k.initialized&&k.trigger("Error",new d.RuntimeError(d.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(a){return function(){a.call(k),clearTimeout(j),g=j=a=k=null}}(this.destroy)},i)}var h="flash",i={};return e.addConstructor(h,g),i}),d(T,[S,r],function(a,b){var c={slice:function(a,c,d,e){var f=this.getRuntime();return 0>c?c=Math.max(a.size+c,0):c>0&&(c=Math.min(c,a.size)),0>d?d=Math.max(a.size+d,0):d>0&&(d=Math.min(d,a.size)),a=f.shimExec.call(this,"Blob","slice",c,d,e||""),a&&(a=new b(f.uid,a)),a}};return a.Blob=c}),d(U,[S],function(a){var b={init:function(a){this.getRuntime().shimExec.call(this,"FileInput","init",{name:a.name,accept:a.accept,multiple:a.multiple}),this.trigger("ready")}};return a.FileInput=b}),d(V,[S,o],function(a,b){function c(a,c){switch(c){case"readAsText":return b.atob(a,"utf8");case"readAsBinaryString":return b.atob(a);case"readAsDataURL":return a}return null}var d="",e={read:function(a,b){var e=this,f=e.getRuntime();return"readAsDataURL"===a&&(d="data:"+(b.type||"")+";base64,"),e.bind("Progress",function(b,e){e&&(d+=c(e,a))}),f.shimExec.call(this,"FileReader","readAsBase64",b.uid)},getResult:function(){return d},destroy:function(){d=null}};return a.FileReader=e}),d(W,[S,o],function(a,b){function c(a,c){switch(c){case"readAsText":return b.atob(a,"utf8");case"readAsBinaryString":return b.atob(a);case"readAsDataURL":return a}return null}var d={read:function(a,b){var d,e=this.getRuntime();return(d=e.shimExec.call(this,"FileReaderSync","readAsBase64",b.uid))?("readAsDataURL"===a&&(d="data:"+(b.type||"")+";base64,"+d),c(d,a,b.type)):null}};return a.FileReaderSync=d}),d(X,[S,h,r,s,y,z,B],function(a,b,c,d,e,f,g){var h={send:function(a,d){function e(){a.transport=k.mode,k.shimExec.call(j,"XMLHttpRequest","send",a,d)}function h(a,b){k.shimExec.call(j,"XMLHttpRequest","appendBlob",a,b.uid),d=null,e()}function i(a,b){var c=new g;c.bind("TransportingComplete",function(){b(this.result)}),c.transport(a.getSource(),a.type,{ruid:k.uid})}var j=this,k=j.getRuntime();if(b.isEmptyObj(a.headers)||b.each(a.headers,function(a,b){k.shimExec.call(j,"XMLHttpRequest","setRequestHeader",b,a.toString())}),d instanceof f){var l;if(d.each(function(a,b){a instanceof c?l=b:k.shimExec.call(j,"XMLHttpRequest","append",b,a)}),d.hasBlob()){var m=d.getBlob();m.isDetached()?i(m,function(a){m.destroy(),h(l,a)}):h(l,m)}else d=null,e()}else d instanceof c?d.isDetached()?i(d,function(a){d.destroy(),d=a.uid,e()}):(d=d.uid,e()):e()},getResponse:function(a){var c,f,g=this.getRuntime();if(f=g.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(f=new d(g.uid,f),"blob"===a)return f;try{if(c=new e,~b.inArray(a,["","text"]))return c.readAsText(f);if("json"===a&&window.JSON)return JSON.parse(c.readAsText(f))}finally{f.destroy()}}return null},abort:function(a){var b=this.getRuntime();b.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return a.XMLHttpRequest=h}),d(Y,[S,r],function(a,b){var c={getAsBlob:function(a){var c=this.getRuntime(),d=c.shimExec.call(this,"Transporter","getAsBlob",a);return d?new b(c.uid,d):null}};return a.Transporter=c}),d(Z,[S,h,B,r,y],function(a,b,c,d,e){var f={loadFromBlob:function(a){function b(a){e.shimExec.call(d,"Image","loadFromBlob",a.uid),d=e=null}var d=this,e=d.getRuntime();if(a.isDetached()){var f=new c;f.bind("TransportingComplete",function(){b(f.result.getSource())}),f.transport(a.getSource(),a.type,{ruid:e.uid})}else b(a.getSource())},loadFromImage:function(a){var b=this.getRuntime();return b.shimExec.call(this,"Image","loadFromImage",a.uid)},getAsBlob:function(a,b){var c=this.getRuntime(),e=c.shimExec.call(this,"Image","getAsBlob",a,b);return e?new d(c.uid,e):null},getAsDataURL:function(){var a,b=this.getRuntime(),c=b.Image.getAsBlob.apply(this,arguments);return c?(a=new e,a.readAsDataURL(c)):null}};return a.Image=f}),d($,[h,k,l,m,p],function(a,b,c,d,e){function f(a){var b,c,d,e,f,g=!1,h=null,i=0;try{try{h=new ActiveXObject("AgControl.AgControl"),h.IsVersionSupported(a)&&(g=!0),h=null}catch(j){var k=navigator.plugins["Silverlight Plug-In"];if(k){for(b=k.description,"1.0.30226.2"===b&&(b="2.0.30226.2"),c=b.split(".");c.length>3;)c.pop();for(;c.length<4;)c.push(0);for(d=a.split(".");d.length>4;)d.pop();do e=parseInt(d[i],10),f=parseInt(c[i],10),i++;while(i=e&&!isNaN(e)&&(g=!0)}}}catch(l){g=!1}return g}function g(g){var j,k=this;g=a.extend({xap_url:b.xap_url},g),e.call(this,g,h,{access_binary:e.capTrue,access_image_binary:e.capTrue,display_media:e.capTrue,do_cors:e.capTrue,drag_and_drop:!1,report_upload_progress:e.capTrue,resize_image:e.capTrue,return_response_headers:function(a){return a&&"client"===k.mode},return_response_type:function(a){return"json"!==a||!!window.JSON},return_status_code:function(b){return"client"===k.mode||!a.arrayDiff(b,[200,404])},select_file:e.capTrue,select_multiple:e.capTrue,send_binary_string:e.capTrue,send_browser_cookies:function(a){return a&&"browser"===k.mode},send_custom_headers:function(a){return a&&"client"===k.mode},send_multipart:e.capTrue,slice_blob:e.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:e.capTrue,use_http_method:function(b){return"client"===k.mode||!a.arrayDiff(b,["GET","POST"])}},{return_response_headers:function(a){return a?"client":"browser"},return_status_code:function(b){return a.arrayDiff(b,[200,404])?"client":["client","browser"]},send_browser_cookies:function(a){return a?"browser":"client"},send_custom_headers:function(a){return a?"client":"browser"},use_http_method:function(b){return a.arrayDiff(b,["GET","POST"])?"client":["client","browser"]}}),f("2.0.31005.0")&&"Opera"!==b.browser||(this.mode=!1),a.extend(this,{getShim:function(){return c.get(this.uid).content.Moxie},shimExec:function(a,b){var c=[].slice.call(arguments,2);return k.getShim().exec(this.uid,a,b,c)},init:function(){var a;a=this.getShimContainer(),a.innerHTML='',j=setTimeout(function(){k&&!k.initialized&&k.trigger("Error",new d.RuntimeError(d.RuntimeError.NOT_INIT_ERR))},"Windows"!==b.OS?1e4:5e3)},destroy:function(a){return function(){a.call(k),clearTimeout(j),g=j=a=k=null}}(this.destroy)},i)}var h="silverlight",i={};return e.addConstructor(h,g),i}),d(_,[$,h,T],function(a,b,c){return a.Blob=b.extend({},c)}),d(aa,[$],function(a){var b={init:function(a){function b(a){for(var b="",c=0;cc;c++)b=h.keys[c],g=h[b],g&&(/^(\d|[1-9]\d+)$/.test(g)?g=parseInt(g,10):/^\d*\.\d+$/.test(g)&&(g=parseFloat(g)),d.meta[a][b]=g)}),d.width=parseInt(e.width,10),d.height=parseInt(e.height,10),d.size=parseInt(e.size,10),d.type=e.type,d.name=e.name,d}})}),d(ha,[h,m,p,k],function(a,b,c,d){function e(b){var e=this,h=c.capTest,i=c.capTrue;c.call(this,b,f,{access_binary:h(window.FileReader||window.File&&File.getAsDataURL), access_image_binary:!1,display_media:h(g.Image&&(d.can("create_canvas")||d.can("use_data_uri_over32kb"))),do_cors:!1,drag_and_drop:!1,filter_by_extension:h(function(){return"Chrome"===d.browser&&d.version>=28||"IE"===d.browser&&d.version>=10}()),resize_image:function(){return g.Image&&e.can("access_binary")&&d.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(b){return!("json"!==b||!window.JSON)||!!~a.inArray(b,["text","document",""])},return_status_code:function(b){return!a.arrayDiff(b,[200,404])},select_file:function(){return d.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return e.can("select_file")},summon_file_dialog:h(function(){return"Firefox"===d.browser&&d.version>=4||"Opera"===d.browser&&d.version>=12||!!~a.inArray(d.browser,["Chrome","Safari"])}()),upload_filesize:i,use_http_method:function(b){return!a.arrayDiff(b,["GET","POST"])}}),a.extend(this,{init:function(){this.trigger("Init")},destroy:function(a){return function(){a.call(e),a=e=null}}(this.destroy)}),a.extend(this.getShim(),g)}var f="html4",g={};return c.addConstructor(f,e),g}),d(ia,[ha,h,l,F,j,k],function(a,b,c,d,e,f){function g(){function a(){var e,k,l,m,n,o,p=this,q=p.getRuntime();o=b.guid("uid_"),e=q.getShimContainer(),g&&(l=c.get(g+"_form"),l&&b.extend(l.style,{top:"100%"})),m=document.createElement("form"),m.setAttribute("id",o+"_form"),m.setAttribute("method","post"),m.setAttribute("enctype","multipart/form-data"),m.setAttribute("encoding","multipart/form-data"),b.extend(m.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),n=document.createElement("input"),n.setAttribute("id",o),n.setAttribute("type","file"),n.setAttribute("name",h.name||"Filedata"),n.setAttribute("accept",j.join(",")),b.extend(n.style,{fontSize:"999px",opacity:0}),m.appendChild(n),e.appendChild(m),b.extend(n.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===f.browser&&f.version<10&&b.extend(n.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),n.onchange=function(){var b;this.value&&(b=this.files?this.files[0]:{name:this.value},i=[b],this.onchange=function(){},a.call(p),p.bind("change",function d(){var a,b=c.get(o),e=c.get(o+"_form");p.unbind("change",d),p.files.length&&b&&e&&(a=p.files[0],b.setAttribute("id",a.uid),e.setAttribute("id",a.uid+"_form"),e.setAttribute("target",a.uid+"_iframe")),b=e=null},998),n=m=null,p.trigger("change"))},q.can("summon_file_dialog")&&(k=c.get(h.browse_button),d.removeEvent(k,"click",p.uid),d.addEvent(k,"click",function(a){n&&!n.disabled&&n.click(),a.preventDefault()},p.uid)),g=o,e=l=k=null}var g,h,i=[],j=[];b.extend(this,{init:function(b){var f,g=this,i=g.getRuntime();h=b,j=b.accept.mimes||e.extList2mimes(b.accept,i.can("filter_by_extension")),f=i.getShimContainer(),function(){var a,e,h;a=c.get(b.browse_button),i.can("summon_file_dialog")&&("static"===c.getStyle(a,"position")&&(a.style.position="relative"),e=parseInt(c.getStyle(a,"z-index"),10)||1,a.style.zIndex=e,f.style.zIndex=e-1),h=i.can("summon_file_dialog")?a:f,d.addEvent(h,"mouseover",function(){g.trigger("mouseenter")},g.uid),d.addEvent(h,"mouseout",function(){g.trigger("mouseleave")},g.uid),d.addEvent(h,"mousedown",function(){g.trigger("mousedown")},g.uid),d.addEvent(c.get(b.container),"mouseup",function(){g.trigger("mouseup")},g.uid),a=null}(),a.call(this),f=null,g.trigger({type:"ready",async:!0})},getFiles:function(){return i},disable:function(a){var b;(b=c.get(g))&&(b.disabled=!!a)},destroy:function(){var a=this.getRuntime(),b=a.getShim(),e=a.getShimContainer();d.removeAllEvents(e,this.uid),d.removeAllEvents(h&&c.get(h.container),this.uid),d.removeAllEvents(h&&c.get(h.browse_button),this.uid),e&&(e.innerHTML=""),b.removeInstance(this.uid),g=i=j=h=e=b=null}})}return a.FileInput=g}),d(ja,[ha,I],function(a,b){return a.FileReader=b}),d(ka,[ha,h,l,x,m,F,r,z],function(a,b,c,d,e,f,g,h){function i(){function a(a){var b,d,e,g,h=this,i=!1;if(k){if(b=k.id.replace(/_iframe$/,""),d=c.get(b+"_form")){for(e=d.getElementsByTagName("input"),g=e.length;g--;)switch(e[g].getAttribute("type")){case"hidden":e[g].parentNode.removeChild(e[g]);break;case"file":i=!0}e=[],i||d.parentNode.removeChild(d),d=null}setTimeout(function(){f.removeEvent(k,"load",h.uid),k.parentNode&&k.parentNode.removeChild(k);var b=h.getRuntime().getShimContainer();b.children.length||b.parentNode.removeChild(b),b=k=null,a()},1)}}var i,j,k;b.extend(this,{send:function(l,m){function n(){var c=t.getShimContainer()||document.body,e=document.createElement("div");e.innerHTML='',k=e.firstChild,c.appendChild(k),f.addEvent(k,"load",function(){var c;try{c=k.contentWindow.document||k.contentDocument||window.frames[k.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(c.title)?i=c.title.replace(/^(\d+).*$/,"$1"):(i=200,j=b.trim(c.body.innerHTML),s.trigger({type:"progress",loaded:j.length,total:j.length}),r&&s.trigger({type:"uploadprogress",loaded:r.size||1025,total:r.size||1025}))}catch(e){if(!d.hasSameOrigin(l.url))return void a.call(s,function(){s.trigger("error")});i=404}a.call(s,function(){s.trigger("load")})},s.uid)}var o,p,q,r,s=this,t=s.getRuntime();if(i=j=null,m instanceof h&&m.hasBlob()){if(r=m.getBlob(),o=r.uid,q=c.get(o),p=c.get(o+"_form"),!p)throw new e.DOMException(e.DOMException.NOT_FOUND_ERR)}else o=b.guid("uid_"),p=document.createElement("form"),p.setAttribute("id",o+"_form"),p.setAttribute("method",l.method),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),p.setAttribute("target",o+"_iframe"),t.getShimContainer().appendChild(p);m instanceof h&&m.each(function(a,c){if(a instanceof g)q&&q.setAttribute("name",c);else{var d=document.createElement("input");b.extend(d,{type:"hidden",name:c,value:a}),q?p.insertBefore(d,q):p.appendChild(d)}}),p.setAttribute("action",l.url),n(),p.submit(),s.trigger("loadstart")},getStatus:function(){return i},getResponse:function(a){if("json"===a&&"string"===b.typeOf(j)&&window.JSON)try{return JSON.parse(j.replace(/^\s*]*>/,"").replace(/<\/pre>\s*$/,""))}catch(c){return null}return j},abort:function(){var b=this;k&&k.contentWindow&&(k.contentWindow.stop?k.contentWindow.stop():k.contentWindow.document.execCommand?k.contentWindow.document.execCommand("Stop"):k.src="about:blank"),a.call(this,function(){b.dispatchEvent("abort")})}})}return a.XMLHttpRequest=i}),d(la,[ha,R],function(a,b){return a.Image=b}),f([h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,F])}(this),function(){"use strict";var a={},b=moxie.core.utils.Basic.inArray;return function c(d){var e,f;for(e in d)f=typeof d[e],"object"!==f||~b(e,["Exceptions","Env","Mime"])?"function"===f&&(a[e]=d[e]):c(d[e])}(window.moxie),a.Env=window.moxie.core.utils.Env,a.Mime=window.moxie.core.utils.Mime,a.Exceptions=window.moxie.core.Exceptions,window.mOxie=a,window.o||(window.o=a),a}(),function(a,b,c){function d(a){function b(a,b,c){var e={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};e[a]?d[e[a]]=b:c||(d[a]=b)}var c=a.required_features,d={};return"string"==typeof c?g.each(c.split(/\s*,\s*/),function(a){b(a,!0)}):"object"==typeof c?g.each(c,function(a,c){b(c,a)}):c===!0&&(a.multipart||(d.send_binary_string=!0),a.chunk_size>0&&(d.slice_blob=!0),a.resize.enabled&&(d.send_binary_string=!0),g.each(a,function(a,c){b(c,!!a,!0)})),d}var e=a.setTimeout,f={},g={VERSION:"2.1.1",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,IMAGE_MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:b.mimes,ua:b.ua,typeOf:b.typeOf,extend:b.extend,guid:b.guid,get:function(a){var c,d=[];"array"!==b.typeOf(a)&&(a=[a]);for(var e=a.length;e--;)c=b.get(a[e]),c&&d.push(c);return d.length?d:null},each:b.each,getPos:b.getPos,getSize:b.getSize,xmlEncode:function(a){var b={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},c=/[<>&\"\']/g;return a?(""+a).replace(c,function(a){return b[a]?"&"+b[a]+";":a}):a},toArray:b.toArray,inArray:b.inArray,addI18n:b.addI18n,translate:b.translate,isEmptyObj:b.isEmptyObj,hasClass:b.hasClass,addClass:b.addClass,removeClass:b.removeClass,getStyle:b.getStyle,addEvent:b.addEvent,removeEvent:b.removeEvent,removeAllEvents:b.removeAllEvents,cleanName:function(a){var b,c;for(c=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],b=0;b0?"&":"?")+c),a},formatSize:function(a){function b(a,b){return Math.round(a*Math.pow(10,b))/Math.pow(10,b)}if(a===c||/\D/.test(a))return g.translate("N/A");var d=Math.pow(1024,4);return a>d?b(a/d,1)+" "+g.translate("tb"):a>(d/=1024)?b(a/d,1)+" "+g.translate("gb"):a>(d/=1024)?b(a/d,1)+" "+g.translate("mb"):a>1024?Math.round(a/1024)+" "+g.translate("kb"):a+" "+g.translate("b")},parseSize:b.parseSizeStr,predictRuntime:function(a,c){var d,e;return d=new g.Uploader(a),e=b.Runtime.thatCan(d.getOption().required_features,c||a.runtimes),d.destroy(),e},addFileFilter:function(a,b){f[a]=b}};g.addFileFilter("mime_types",function(a,b,c){a.length&&!a.regexp.test(b.name)?(this.trigger("Error",{code:g.FILE_EXTENSION_ERROR,message:g.translate("File extension error."),file:b}),c(!1)):c(!0)}),g.addFileFilter("max_file_size",function(a,b,c){var d;a=g.parseSize(a),b.size!==d&&a&&b.size>a?(this.trigger("Error",{code:g.FILE_SIZE_ERROR,message:g.translate("File size error."),file:b}),c(!1)):c(!0)}),g.addFileFilter("prevent_duplicates",function(a,b,c){if(a)for(var d=this.files.length;d--;)if(b.name===this.files[d].name&&b.size===this.files[d].size)return this.trigger("Error",{code:g.FILE_DUPLICATE_ERROR,message:g.translate("Duplicate file error."),file:b}),void c(!1);c(!0)}),g.Uploader=function(a){function h(){var a,b,c=0;if(this.state==g.STARTED){for(b=0;b0?Math.ceil(a.loaded/a.size*100):100,j()}function j(){var a,b;for(B.reset(),a=0;a0?Math.ceil(B.uploaded/E.length*100):0:(B.bytesPerSec=Math.ceil(B.loaded/((+new Date-A||1)/1e3)),B.percent=B.size>0?Math.ceil(B.loaded/B.size*100):0)}function k(){var a=G[0]||H[0];return!!a&&a.getRuntime().uid}function l(a,c){if(a.ruid){var d=b.Runtime.getInfo(a.ruid);if(d)return d.can(c)}return!1}function m(){this.bind("FilesAdded",q),this.bind("CancelUpload",v),this.bind("BeforeUpload",r),this.bind("UploadFile",s),this.bind("UploadProgress",t),this.bind("StateChanged",u),this.bind("QueueChanged",j),this.bind("Error",x),this.bind("FileUploaded",w),this.bind("Destroy",y)}function n(a,c){var d=this,e=0,f=[],h={accept:a.filters.mime_types,runtime_order:a.runtimes,required_caps:a.required_features,preferred_caps:F,swf_url:a.flash_swf_url,xap_url:a.silverlight_xap_url};g.each(a.runtimes.split(/\s*,\s*/),function(b){a[b]&&(h[b]=a[b])}),a.browse_button&&g.each(a.browse_button,function(c){f.push(function(f){var i=new b.FileInput(g.extend({},h,{name:a.file_data_name,multiple:a.multi_selection,container:a.container,browse_button:c}));i.onready=function(){var a=b.Runtime.getInfo(this.ruid);b.extend(d.features,{chunks:a.can("slice_blob"),multipart:a.can("send_multipart"),multi_selection:a.can("select_multiple")}),e++,G.push(this),f()},i.onchange=function(){d.addFile(this.files)},i.bind("mouseenter mouseleave mousedown mouseup",function(d){I||(a.browse_button_hover&&("mouseenter"===d.type?b.addClass(c,a.browse_button_hover):"mouseleave"===d.type&&b.removeClass(c,a.browse_button_hover)),a.browse_button_active&&("mousedown"===d.type?b.addClass(c,a.browse_button_active):"mouseup"===d.type&&b.removeClass(c,a.browse_button_active)))}),i.bind("error runtimeerror",function(){i=null,f()}),i.init()})}),a.drop_element&&g.each(a.drop_element,function(a){f.push(function(c){var f=new b.FileDrop(g.extend({},h,{drop_zone:a}));f.onready=function(){var a=b.Runtime.getInfo(this.ruid);d.features.dragdrop=a.can("drag_and_drop"),e++,H.push(this),c()},f.ondrop=function(){d.addFile(this.files)},f.bind("error runtimeerror",function(){f=null,c()}),f.init()})}),b.inSeries(f,function(){"function"==typeof c&&c(e)})}function o(a,c,d){var e=new b.Image;try{e.onload=function(){e.downsize(c.width,c.height,c.crop,c.preserve_headers)},e.onresize=function(){d(this.getAsBlob(a.type,c.quality)),this.destroy()},e.onerror=function(){d(a)},e.load(a)}catch(f){d(a)}}function p(a,c,e){function f(a,b,c){var d=z[a];switch(a){case"max_file_size":"max_file_size"===a&&(z.max_file_size=z.filters.max_file_size=b);break;case"chunk_size":(b=g.parseSize(b))&&(z[a]=b);break;case"filters":"array"===g.typeOf(b)&&(b={mime_types:b}),c?g.extend(z.filters,b):z.filters=b,b.mime_types&&(z.filters.mime_types.regexp=function(a){var b=[];return g.each(a,function(a){g.each(a.extensions.split(/,/),function(a){/^\s*\*\s*$/.test(a)?b.push("\\.*"):b.push("\\."+a.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+b.join("|")+")$","i")}(z.filters.mime_types));break;case"resize":c?g.extend(z.resize,b,{enabled:!0}):z.resize=b;break;case"prevent_duplicates":z.prevent_duplicates=z.filters.prevent_duplicates=!!b;break;case"browse_button":case"drop_element":b=g.get(b);case"container":case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":z[a]=b,c||(i=!0);break;default:z[a]=b}c||h.trigger("OptionChanged",a,b,d)}var h=this,i=!1;"object"==typeof a?g.each(a,function(a,b){f(b,a,e)}):f(a,c,e),e?(z.required_features=d(g.extend({},z)),F=d(g.extend({},z,{required_features:!0}))):i&&(h.trigger("Destroy"),n.call(h,z,function(a){a?(h.runtime=b.Runtime.getInfo(k()).type,h.trigger("Init",{runtime:h.runtime}),h.trigger("PostInit")):h.trigger("Error",{code:g.INIT_ERROR,message:g.translate("Init error.")})}))}function q(a,b){[].push.apply(E,b),a.trigger("QueueChanged"),a.refresh()}function r(a,b){if(z.unique_names){var c=b.name.match(/\.([^.]+)$/),d="part";c&&(d=c[1]),b.target_name=b.id+"."+d}}function s(a,c){function d(){k-- >0?e(f,1e3):(c.loaded=n,a.trigger("Error",{code:g.HTTP_ERROR,message:g.translate("HTTP Error."),file:c,response:C.responseText,status:C.status,responseHeaders:C.getAllResponseHeaders()}))}function f(){var l,o,p,q;c.status!=g.DONE&&c.status!=g.FAILED&&a.state!=g.STOPPED&&(p={name:c.target_name||c.name},j&&m.chunks&&h.size>j?(q=Math.min(j,h.size-n),l=h.slice(n,n+q)):(q=h.size,l=h),j&&m.chunks&&(a.settings.send_chunk_number?(p.chunk=Math.ceil(n/j),p.chunks=Math.ceil(h.size/j)):(p.offset=n,p.total=h.size)),C=new b.XMLHttpRequest,C.upload&&(C.upload.onprogress=function(b){c.loaded=Math.min(c.size,n+b.loaded),a.trigger("UploadProgress",c)}),C.onload=function(){return C.status>=400?void d():(k=a.settings.max_retries,q=h.size?(c.size!=c.origSize&&(h.destroy(),h=null),a.trigger("UploadProgress",c),c.status=g.DONE,a.trigger("FileUploaded",c,{response:C.responseText,status:C.status,responseHeaders:C.getAllResponseHeaders()})):e(f,1),void 0)},C.onerror=function(){d()},C.onloadend=function(){this.destroy(),C=null},a.settings.multipart&&m.multipart?(p.name=c.target_name||c.name,C.open("post",i,!0),g.each(a.settings.headers,function(a,b){C.setRequestHeader(b,a)}),o=new b.FormData,g.each(g.extend(p,a.settings.multipart_params),function(a,b){o.append(b,a)}),o.append(a.settings.file_data_name,l),C.send(o,{runtime_order:a.settings.runtimes,required_caps:a.settings.required_features,preferred_caps:F,swf_url:a.settings.flash_swf_url,xap_url:a.settings.silverlight_xap_url})):(i=g.buildUrl(a.settings.url,g.extend(p,a.settings.multipart_params)),C.open(a.settings.method,i,!0),C.setRequestHeader("Content-Type","application/octet-stream"),g.each(a.settings.headers,function(a,b){C.setRequestHeader(b,a)}),C.send(l,{runtime_order:a.settings.runtimes,required_caps:a.settings.required_features,preferred_caps:F,swf_url:a.settings.flash_swf_url,xap_url:a.settings.silverlight_xap_url})))}var h,i=a.settings.url,j=a.settings.chunk_size,k=a.settings.max_retries,m=a.features,n=0;c.loaded&&(n=c.loaded=j*Math.floor(c.loaded/j)),h=c.getSource(),a.settings.resize.enabled&&l(h,"send_binary_string")&&~b.inArray(h.type,["image/jpeg","image/png"])?o.call(this,h,a.settings.resize,function(a){h=a,c.size=a.size,f()}):f()}function t(a,b){i(b)}function u(a){if(a.state==g.STARTED)A=+new Date;else if(a.state==g.STOPPED)for(var b=a.files.length-1;b>=0;b--)a.files[b].status==g.UPLOADING&&(a.files[b].status=g.QUEUED,j())}function v(){C&&C.abort()}function w(a){j(),e(function(){h.call(a)},1)}function x(a,b){b.file&&(b.file.status=g.FAILED,i(b.file),a.state==g.STARTED&&(a.trigger("CancelUpload"),e(function(){h.call(a)},1)))}function y(a){a.stop(),g.each(E,function(a){a.destroy()}),E=[],G.length&&(g.each(G,function(a){a.destroy()}),G=[]),H.length&&(g.each(H,function(a){a.destroy()}),H=[]),F={},I=!1,A=C=null,B.reset()}var z,A,B,C,D=g.guid(),E=[],F={},G=[],H=[],I=!1;z={runtimes:b.Runtime.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",flash_swf_url:"js/Moxie.swf",silverlight_xap_url:"js/Moxie.xap",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:{enabled:!1,preserve_headers:!0,crop:!1},method:"post",send_chunk_number:!0},p.call(this,a,null,!0),B=new g.QueueProgress,g.extend(this,{id:D,uid:D,state:g.STOPPED,features:{},runtime:null,files:E,settings:z,total:B,init:function(){var a=this;return"function"==typeof z.preinit?z.preinit(a):g.each(z.preinit,function(b,c){a.bind(c,b)}),z.browse_button&&z.url?(m.call(this),void n.call(this,z,function(c){"function"==typeof z.init?z.init(a):g.each(z.init,function(b,c){a.bind(c,b)}),c?(a.runtime=b.Runtime.getInfo(k()).type,a.trigger("Init",{runtime:a.runtime}),a.trigger("PostInit")):a.trigger("Error",{code:g.INIT_ERROR,message:g.translate("Init error.")})})):void this.trigger("Error",{code:g.INIT_ERROR,message:g.translate("Init error.")})},setOption:function(a,b){p.call(this,a,b,!this.runtime)},getOption:function(a){return a?z[a]:z},refresh:function(){G.length&&g.each(G,function(a){a.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=g.STARTED&&(this.state=g.STARTED,this.trigger("StateChanged"),h.call(this))},stop:function(){this.state!=g.STOPPED&&(this.state=g.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){I=arguments[0]===c||arguments[0],G.length&&g.each(G,function(a){a.disable(I)}),this.trigger("DisableBrowse",I)},getFile:function(a){var b;for(b=E.length-1;b>=0;b--)if(E[b].id===a)return E[b]},addFile:function(a,c){function d(a,c){var d=[];b.each(j.settings.filters,function(b,c){f[c]&&d.push(function(d){f[c].call(j,b,a,function(a){d(!a)})})}),b.inSeries(d,c)}function h(a){var f=b.typeOf(a);if(a instanceof b.File){if(!a.ruid&&!a.isDetached()){if(!i)return!1;a.ruid=i,a.connectRuntime(i)}h(new g.File(a))}else a instanceof b.Blob?(h(a.getSource()),a.destroy()):a instanceof g.File?(c&&(a.name=c),l.push(function(b){d(a,function(c){c||(m.push(a),j.trigger("FileFiltered",a)),e(b,1)})})):b.inArray(f,["file","blob"])!==-1?h(new b.File(null,a)):"node"===f&&"filelist"===b.typeOf(a.files)?b.each(a.files,h):"array"===f&&(c=null,b.each(a,h))}var i,j=this,l=[],m=[];i=k(),h(a),l.length&&b.inSeries(l,function(){m.length&&j.trigger("FilesAdded",m)})},removeFile:function(a){for(var b="string"==typeof a?a:a.id,c=E.length-1;c>=0;c--)if(E[c].id===b)return this.splice(c,1)[0]},splice:function(a,b){var d=E.splice(a===c?0:a,b===c?E.length:b),e=!1;return this.state==g.STARTED&&(e=!0,this.stop()),this.trigger("FilesRemoved",d),g.each(d,function(a){a.destroy()}),this.trigger("QueueChanged"),this.refresh(),e&&this.start(),d},bind:function(a,b,c){var d=this;g.Uploader.prototype.bind.call(this,a,function(){var a=[].slice.call(arguments);return a.splice(0,1,d),b.apply(this,a)},0,c)},destroy:function(){this.trigger("Destroy"),z=B=null,this.unbindAll()}})},g.Uploader.prototype=b.EventTarget.instance,g.File=function(){function a(a){g.extend(this,{id:g.guid(),name:a.name||a.fileName,type:a.type||"",size:a.size||a.fileSize,origSize:a.size||a.fileSize,loaded:0,percent:0,status:g.QUEUED,lastModifiedDate:a.lastModifiedDate||(new Date).toLocaleString(),getNative:function(){var a=this.getSource().getSource();return b.inArray(b.typeOf(a),["blob","file"])!==-1?a:null},getSource:function(){return c[this.id]?c[this.id]:null},destroy:function(){var a=this.getSource();a&&(a.destroy(),delete c[this.id])}}),c[this.id]=a}var c={};return a}(),g.QueueProgress=function(){var a=this;a.size=0,a.loaded=0,a.uploaded=0,a.failed=0,a.queued=0,a.percent=0,a.bytesPerSec=0,a.reset=function(){a.size=a.loaded=a.uploaded=a.failed=a.queued=a.percent=a.bytesPerSec=0}},a.plupload=g}(window,mOxie),function(a,b,c,d){var e=c("html"),f=c(a),g=c(b),h=c.fancybox=function(){h.open.apply(this,arguments)},i=navigator.userAgent.match(/msie/i),j=null,k=b.createTouch!==d,l=function(a){return a&&a.hasOwnProperty&&a instanceof c},m=function(a){return a&&"string"===c.type(a)},n=function(a){return m(a)&&a.indexOf("%")>0},o=function(a){return a&&!(a.style.overflow&&"hidden"===a.style.overflow)&&(a.clientWidth&&a.scrollWidth>a.clientWidth||a.clientHeight&&a.scrollHeight>a.clientHeight)},p=function(a,b){var c=parseInt(a,10)||0;return b&&n(a)&&(c=h.getViewport()[b]/100*c),Math.ceil(c)},q=function(a,b){return p(a,b)+"px"};c.extend(h,{version:"2.1.5",defaults:{padding:15,margin:20,width:800,height:600,minWidth:100,minHeight:100,maxWidth:9999,maxHeight:9999,pixelRatio:1,autoSize:!0,autoHeight:!1,autoWidth:!1,autoResize:!0,autoCenter:!k,fitToView:!0,aspectRatio:!1,topRatio:.5,leftRatio:.5,scrolling:"auto",wrapCSS:"",arrows:!0,closeBtn:!0,closeClick:!1,nextClick:!1,mouseWheel:!0,autoPlay:!1,playSpeed:3e3,preload:3,modal:!1,loop:!0,ajax:{dataType:"html",headers:{"X-fancyBox":!0}},iframe:{scrolling:"auto",preload:!0},swf:{wmode:"transparent",allowfullscreen:"true",allowscriptaccess:"always"},keys:{next:{13:"left",34:"up",39:"left",40:"up"},prev:{8:"right",33:"down",37:"right",38:"down"},close:[27],play:[32],toggle:[70]},direction:{next:"left",prev:"right"},scrollOutside:!0,index:0,type:null,href:null,content:null,title:null,tpl:{wrap:'
',image:'',iframe:'",error:'

The requested content cannot be loaded.
Please try again later.

',closeBtn:'',next:'',prev:''},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0,openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:c.noop,beforeLoad:c.noop,afterLoad:c.noop,beforeShow:c.noop,afterShow:c.noop,beforeChange:c.noop,beforeClose:c.noop,afterClose:c.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:!1,isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,b){if(a&&(c.isPlainObject(b)||(b={}),!1!==h.close(!0)))return c.isArray(a)||(a=l(a)?c(a).get():[a]),c.each(a,function(e,f){var g,i,j,k,n,o,p,q={};"object"===c.type(f)&&(f.nodeType&&(f=c(f)),l(f)?(q={href:f.data("fancybox-href")||f.attr("href"),title:f.data("fancybox-title")||f.attr("title"),isDom:!0,element:f},c.metadata&&c.extend(!0,q,f.metadata())):q=f),g=b.href||q.href||(m(f)?f:null),i=b.title!==d?b.title:q.title||"",j=b.content||q.content,k=j?"html":b.type||q.type,!k&&q.isDom&&(k=f.data("fancybox-type"),k||(n=f.prop("class").match(/fancybox\.(\w+)/),k=n?n[1]:null)),m(g)&&(k||(h.isImage(g)?k="image":h.isSWF(g)?k="swf":"#"===g.charAt(0)?k="inline":m(f)&&(k="html",j=f)),"ajax"===k&&(o=g.split(/\s+/,2),g=o.shift(),p=o.shift())),j||("inline"===k?g?j=c(m(g)?g.replace(/.*(?=#[^\s]+$)/,""):g):q.isDom&&(j=f):"html"===k?j=g:k||g||!q.isDom||(k="inline",j=f)),c.extend(q,{href:g,type:k,content:j,title:i,selector:p}),a[e]=q}),h.opts=c.extend(!0,{},h.defaults,b),b.keys!==d&&(h.opts.keys=!!b.keys&&c.extend({},h.defaults.keys,b.keys)),h.group=a,h._start(h.opts.index)},cancel:function(){var a=h.coming;a&&!1!==h.trigger("onCancel")&&(h.hideLoading(),h.ajaxLoad&&h.ajaxLoad.abort(),h.ajaxLoad=null,h.imgPreload&&(h.imgPreload.onload=h.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger("onReset").remove(),h.coming=null,h.current||h._afterZoomOut(a))},close:function(a){h.cancel(),!1!==h.trigger("beforeClose")&&(h.unbindEvents(),h.isActive&&(h.isOpen&&a!==!0?(h.isOpen=h.isOpened=!1,h.isClosing=!0,c(".fancybox-item, .fancybox-nav").remove(),h.wrap.stop(!0,!0).removeClass("fancybox-opened"),h.transitions[h.current.closeMethod]()):(c(".fancybox-wrap").stop(!0).trigger("onReset").remove(),h._afterZoomOut())))},play:function(a){var b=function(){clearTimeout(h.player.timer)},c=function(){b(),h.current&&h.player.isActive&&(h.player.timer=setTimeout(h.next,h.current.playSpeed))},d=function(){b(),g.unbind(".player"),h.player.isActive=!1,h.trigger("onPlayEnd")},e=function(){h.current&&(h.current.loop||h.current.index=e.index?"next":"prev"],h.router=c||"jumpto",e.loop&&(a<0&&(a=e.group.length+a%e.group.length),a%=e.group.length),e.group[a]!==d&&(h.cancel(),h._start(a)))},reposition:function(a,b){var d,e=h.current,f=e?e.wrap:null;f&&(d=h._getPosition(b),a&&"scroll"===a.type?(delete d.position,f.stop(!0,!0).animate(d,200)):(f.css(d),e.pos=c.extend({},e.dim,d)))},update:function(a){var b=a&&a.type,c=!b||"orientationchange"===b;c&&(clearTimeout(j),j=null),h.isOpen&&!j&&(j=setTimeout(function(){var d=h.current;d&&!h.isClosing&&(h.wrap.removeClass("fancybox-tmp"),(c||"load"===b||"resize"===b&&d.autoResize)&&h._setDimension(),"scroll"===b&&d.canShrink||h.reposition(a),h.trigger("onUpdate"),j=null)},c&&!k?0:300))},toggle:function(a){h.isOpen&&(h.current.fitToView="boolean"===c.type(a)?a:!h.current.fitToView,k&&(h.wrap.removeAttr("style").addClass("fancybox-tmp"),h.trigger("onUpdate")),h.update())},hideLoading:function(){g.unbind(".loading"),c("#fancybox-loading").remove()},showLoading:function(){var a,b;h.hideLoading(),a=c('
').click(h.cancel).appendTo("body"),g.bind("keydown.loading",function(a){27===(a.which||a.keyCode)&&(a.preventDefault(),h.cancel())}),h.defaults.fixed||(b=h.getViewport(),a.css({position:"absolute",top:.5*b.h+b.y,left:.5*b.w+b.x}))},getViewport:function(){var b=h.current&&h.current.locked||!1,c={x:f.scrollLeft(),y:f.scrollTop()};return b?(c.w=b[0].clientWidth,c.h=b[0].clientHeight):(c.w=k&&a.innerWidth?a.innerWidth:f.width(),c.h=k&&a.innerHeight?a.innerHeight:f.height()),c},unbindEvents:function(){h.wrap&&l(h.wrap)&&h.wrap.unbind(".fb"),g.unbind(".fb"),f.unbind(".fb")},bindEvents:function(){var a,b=h.current;b&&(f.bind("orientationchange.fb"+(k?"":" resize.fb")+(b.autoCenter&&!b.locked?" scroll.fb":""),h.update),a=b.keys,a&&g.bind("keydown.fb",function(e){var f=e.which||e.keyCode,g=e.target||e.srcElement;return(27!==f||!h.coming)&&void(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey||g&&(g.type||c(g).is("[contenteditable]"))||c.each(a,function(a,g){return b.group.length>1&&g[f]!==d?(h[a](g[f]),e.preventDefault(),!1):c.inArray(f,g)>-1?(h[a](),e.preventDefault(),!1):void 0}))}),c.fn.mousewheel&&b.mouseWheel&&h.wrap.bind("mousewheel.fb",function(a,d,e,f){for(var g=a.target||null,i=c(g),j=!1;i.length&&!(j||i.is(".fancybox-skin")||i.is(".fancybox-wrap"));)j=o(i[0]),i=c(i).parent();0===d||j||h.group.length>1&&!b.canShrink&&(f>0||e>0?h.prev(f>0?"down":"left"):(f<0||e<0)&&h.next(f<0?"up":"right"),a.preventDefault())}))},trigger:function(a,b){var d,e=b||h.coming||h.current;if(e){if(c.isFunction(e[a])&&(d=e[a].apply(e,Array.prototype.slice.call(arguments,1))),d===!1)return!1;e.helpers&&c.each(e.helpers,function(b,d){d&&h.helpers[b]&&c.isFunction(h.helpers[b][a])&&h.helpers[b][a](c.extend(!0,{},h.helpers[b].defaults,d),e)}),g.trigger(a)}},isImage:function(a){return m(a)&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)},isSWF:function(a){return m(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(a){var b,d,e,f,g,i={};if(a=p(a),b=h.group[a]||null,!b)return!1;if(i=c.extend(!0,{},h.opts,b),f=i.margin,g=i.padding,"number"===c.type(f)&&(i.margin=[f,f,f,f]),"number"===c.type(g)&&(i.padding=[g,g,g,g]),i.modal&&c.extend(!0,i,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}}),i.autoSize&&(i.autoWidth=i.autoHeight=!0),"auto"===i.width&&(i.autoWidth=!0),"auto"===i.height&&(i.autoHeight=!0),i.group=h.group,i.index=a,h.coming=i,!1===h.trigger("beforeLoad"))return void(h.coming=null);if(e=i.type,d=i.href,!e)return h.coming=null,!(!h.current||!h.router||"jumpto"===h.router)&&(h.current.index=a,h[h.router](h.direction));if(h.isActive=!0,"image"!==e&&"swf"!==e||(i.autoHeight=i.autoWidth=!1,i.scrolling="visible"),"image"===e&&(i.aspectRatio=!0),"iframe"===e&&k&&(i.scrolling="scroll"),i.wrap=c(i.tpl.wrap).addClass("fancybox-"+(k?"mobile":"desktop")+" fancybox-type-"+e+" fancybox-tmp "+i.wrapCSS).appendTo(i.parent||"body"),c.extend(i,{skin:c(".fancybox-skin",i.wrap),outer:c(".fancybox-outer",i.wrap),inner:c(".fancybox-inner",i.wrap)}),c.each(["Top","Right","Bottom","Left"],function(a,b){i.skin.css("padding"+b,q(i.padding[a]))}),h.trigger("onReady"),"inline"===e||"html"===e){if(!i.content||!i.content.length)return h._error("content")}else if(!d)return h._error("href"); "image"===e?h._loadImage():"ajax"===e?h._loadAjax():"iframe"===e?h._loadIframe():h._afterLoad()},_error:function(a){c.extend(h.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:a,content:h.coming.tpl.error}),h._afterLoad()},_loadImage:function(){var a=h.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null,h.coming.width=this.width/h.opts.pixelRatio,h.coming.height=this.height/h.opts.pixelRatio,h._afterLoad()},a.onerror=function(){this.onload=this.onerror=null,h._error("image")},a.src=h.coming.href,a.complete!==!0&&h.showLoading()},_loadAjax:function(){var a=h.coming;h.showLoading(),h.ajaxLoad=c.ajax(c.extend({},a.ajax,{url:a.href,error:function(a,b){h.coming&&"abort"!==b?h._error("ajax",a):h.hideLoading()},success:function(b,c){"success"===c&&(a.content=b,h._afterLoad())}}))},_loadIframe:function(){var a=h.coming,b=c(a.tpl.iframe.replace(/\{rnd\}/g,(new Date).getTime())).attr("scrolling",k?"auto":a.iframe.scrolling).attr("src",a.href);c(a.wrap).bind("onReset",function(){try{c(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(a){}}),a.iframe.preload&&(h.showLoading(),b.one("load",function(){c(this).data("ready",1),k||c(this).bind("load.fb",h.update),c(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show(),h._afterLoad()})),a.content=b.appendTo(a.inner),a.iframe.preload||h._afterLoad()},_preloadImages:function(){var a,b,c=h.group,d=h.current,e=c.length,f=d.preload?Math.min(d.preload,e-1):0;for(b=1;b<=f;b+=1)a=c[(d.index+b)%e],"image"===a.type&&a.href&&((new Image).src=a.href)},_afterLoad:function(){var a,b,d,e,f,g,i=h.coming,j=h.current,k="fancybox-placeholder";if(h.hideLoading(),i&&h.isActive!==!1){if(!1===h.trigger("afterLoad",i,j))return i.wrap.stop(!0).trigger("onReset").remove(),void(h.coming=null);switch(j&&(h.trigger("beforeChange",j),j.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove()),h.unbindEvents(),a=i,b=i.content,d=i.type,e=i.scrolling,c.extend(h,{wrap:a.wrap,skin:a.skin,outer:a.outer,inner:a.inner,current:a,previous:j}),f=a.href,d){case"inline":case"ajax":case"html":a.selector?b=c("
").html(b).find(a.selector):l(b)&&(b.data(k)||b.data(k,c('
').insertAfter(b).hide()),b=b.show().detach(),a.wrap.bind("onReset",function(){c(this).find(b).length&&b.hide().replaceAll(b.data(k)).data(k,!1)}));break;case"image":b=a.tpl.image.replace("{href}",f);break;case"swf":b='',g="",c.each(a.swf,function(a,c){b+='',g+=" "+a+'="'+c+'"'}),b+='"}l(b)&&b.parent().is(a.inner)||a.inner.append(b),h.trigger("beforeShow"),a.inner.css("overflow","yes"===e?"scroll":"no"===e?"hidden":e),h._setDimension(),h.reposition(),h.isOpen=!1,h.coming=null,h.bindEvents(),h.isOpened?j.prevMethod&&h.transitions[j.prevMethod]():c(".fancybox-wrap").not(a.wrap).stop(!0).trigger("onReset").remove(),h.transitions[h.isOpened?a.nextMethod:a.openMethod](),h._preloadImages()}},_setDimension:function(){var a,b,d,e,f,g,i,j,k,l,m,o,r,s,t,u=h.getViewport(),v=0,w=!1,x=!1,y=h.wrap,z=h.skin,A=h.inner,B=h.current,C=B.width,D=B.height,E=B.minWidth,F=B.minHeight,G=B.maxWidth,H=B.maxHeight,I=B.scrolling,J=B.scrollOutside?B.scrollbarWidth:0,K=B.margin,L=p(K[1]+K[3]),M=p(K[0]+K[2]);if(y.add(z).add(A).width("auto").height("auto").removeClass("fancybox-tmp"),a=p(z.outerWidth(!0)-z.width()),b=p(z.outerHeight(!0)-z.height()),d=L+a,e=M+b,f=n(C)?(u.w-d)*p(C)/100:C,g=n(D)?(u.h-e)*p(D)/100:D,"iframe"===B.type){if(s=B.content,B.autoHeight&&1===s.data("ready"))try{s[0].contentWindow.document.location&&(A.width(f).height(9999),t=s.contents().find("body"),J&&t.css("overflow-x","hidden"),g=t.outerHeight(!0))}catch(N){}}else(B.autoWidth||B.autoHeight)&&(A.addClass("fancybox-tmp"),B.autoWidth||A.width(f),B.autoHeight||A.height(g),B.autoWidth&&(f=A.width()),B.autoHeight&&(g=A.height()),A.removeClass("fancybox-tmp"));if(C=p(f),D=p(g),k=f/g,E=p(n(E)?p(E,"w")-d:E),G=p(n(G)?p(G,"w")-d:G),F=p(n(F)?p(F,"h")-e:F),H=p(n(H)?p(H,"h")-e:H),i=G,j=H,B.fitToView&&(G=Math.min(u.w-d,G),H=Math.min(u.h-e,H)),o=u.w-L,r=u.h-M,B.aspectRatio?(C>G&&(C=G,D=p(C/k)),D>H&&(D=H,C=p(D*k)),Co||m>r)&&C>E&&D>F&&!(v++>19);)D=Math.max(F,Math.min(H,D-10)),C=p(D*k),CG&&(C=G,D=p(C/k)),A.width(C).height(D),y.width(C+a),l=y.width(),m=y.height();else C=Math.max(E,Math.min(C,C-(l-o))),D=Math.max(F,Math.min(D,D-(m-r)));J&&"auto"===I&&Do||m>r)&&C>E&&D>F,x=B.aspectRatio?CF&&D1)&&h.inner.css("cursor","pointer").bind("click.fb",function(b){c(b.target).is("a")||c(b.target).parent().is("a")||(b.preventDefault(),h[a.closeClick?"close":"next"]())}),a.closeBtn&&c(a.tpl.closeBtn).appendTo(h.skin).bind("click.fb",function(a){a.preventDefault(),h.close()}),a.arrows&&h.group.length>1&&((a.loop||a.index>0)&&c(a.tpl.prev).appendTo(h.outer).bind("click.fb",h.prev),(a.loop||a.index
').appendTo(h.coming?h.coming.parent:a.parent),this.fixed=!1,a.fixed&&h.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(a){var b=this;a=c.extend({},this.defaults,a),this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(a),this.fixed||(f.bind("resize.overlay",c.proxy(this.update,this)),this.update()),a.closeClick&&this.overlay.bind("click.overlay",function(a){if(c(a.target).hasClass("fancybox-overlay"))return h.isActive?h.close():b.close(),!1}),this.overlay.css(a.css).show()},close:function(){var a,b;f.unbind("resize.overlay"),this.el.hasClass("fancybox-lock")&&(c(".fancybox-margin").removeClass("fancybox-margin"),a=f.scrollTop(),b=f.scrollLeft(),this.el.removeClass("fancybox-lock"),f.scrollTop(a).scrollLeft(b)),c(".fancybox-overlay").remove().hide(),c.extend(this,{overlay:null,fixed:!1})},update:function(){var a,c="100%";this.overlay.width(c).height("100%"),i?(a=Math.max(b.documentElement.offsetWidth,b.body.offsetWidth),g.width()>a&&(c=g.width())):g.width()>f.width()&&(c=g.width()),this.overlay.width(c).height(g.height())},onReady:function(a,b){var d=this.overlay;c(".fancybox-overlay").stop(!0,!0),d||this.create(a),a.locked&&this.fixed&&b.fixed&&(d||(this.margin=g.height()>f.height()&&c("html").css("margin-right").replace("px","")),b.locked=this.overlay.append(b.wrap),b.fixed=!1),a.showEarly===!0&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){var d,e;b.locked&&(this.margin!==!1&&(c("*").filter(function(){return"fixed"===c(this).css("position")&&!c(this).hasClass("fancybox-overlay")&&!c(this).hasClass("fancybox-wrap")}).addClass("fancybox-margin"),this.el.addClass("fancybox-margin")),d=f.scrollTop(),e=f.scrollLeft(),this.el.addClass("fancybox-lock"),f.scrollTop(d).scrollLeft(e)),this.open(a)},onUpdate:function(){this.fixed||this.update()},afterClose:function(a){this.overlay&&!h.coming&&this.overlay.fadeOut(a.speedOut,c.proxy(this.close,this))}},h.helpers.title={defaults:{type:"float",position:"bottom"},beforeShow:function(a){var b,d,e=h.current,f=e.title,g=a.type;if(c.isFunction(f)&&(f=f.call(e.element,e)),m(f)&&""!==c.trim(f)){switch(b=c('
'+f+"
"),g){case"inside":d=h.skin;break;case"outside":d=h.wrap;break;case"over":d=h.inner;break;default:d=h.skin,b.appendTo("body"),i&&b.width(b.width()),b.wrapInner(''),h.current.margin[2]+=Math.abs(p(b.css("margin-bottom")))}b["top"===a.position?"prependTo":"appendTo"](d)}}},c.fn.fancybox=function(a){var b,d=c(this),e=this.selector||"",f=function(f){var g,i,j=c(this).blur(),k=b;f.ctrlKey||f.altKey||f.shiftKey||f.metaKey||j.is(".fancybox-wrap")||(g=a.groupAttr||"data-fancybox-group",i=j.attr(g),i||(g="rel",i=j.get(0)[g]),i&&""!==i&&"nofollow"!==i&&(j=e.length?c(e):d,j=j.filter("["+g+'="'+i+'"]'),k=j.index(this)),a.index=k,h.open(j,a)!==!1&&f.preventDefault())};return a=a||{},b=a.index||0,e&&a.live!==!1?g.undelegate(e,"click.fb-start").delegate(e+":not('.fancybox-item, .fancybox-nav')","click.fb-start",f):d.unbind("click.fb-start").bind("click.fb-start",f),this.filter("[data-fancybox-start=1]").trigger("click"),this},g.ready(function(){var b,f;c.scrollbarWidth===d&&(c.scrollbarWidth=function(){var a=c('
').appendTo("body"),b=a.children(),d=b.innerWidth()-b.height(99).innerWidth();return a.remove(),d}),c.support.fixedPosition===d&&(c.support.fixedPosition=function(){var a=c('
').appendTo("body"),b=20===a[0].offsetTop||15===a[0].offsetTop;return a.remove(),b}()),c.extend(h.defaults,{scrollbarWidth:c.scrollbarWidth(),fixed:c.support.fixedPosition,parent:c("body")}),b=c(a).width(),e.addClass("fancybox-lock-test"),f=c(a).width(),e.removeClass("fancybox-lock-test"),c("").appendTo("head")})}(window,document,jQuery),function(){angular.module("config",["base64"])}(),angular.module("config").provider("config",["$base64","SENTRYDSN",function(a,b){function c(a){return decodeURIComponent((new RegExp("[?|&]"+a+"=([^&;]+?)(&|#|;|$)").exec(location.search)||[,""])[1].replace(/\+/g,"%20"))||null}var d;try{d=JSON.parse(a.decode(c("config")||window.location.search.substr(1)))}catch(e){}return d=_.extend(window.config,d),d.business=d.business||c("business")||"game",d.isOffline="offline_report"===d.token,d.isPgyer="pgyer_report"===d.token,d.isNoCache=d.no_cache,d.rioEnabled=d.isCNLocale="zh_CN"==d.locale,d.isLab=function(){return"lab"==d.releaseEnv},d.setBusiness=function(a){d.business=a,d.isGame="game"==a,d.isApp="app"==a},0===window.location.hostname.indexOf("comptest")?d.sentryDsn=b.PRODUCT:d.sentryDsn=b.TEST,{config:d,$get:["$translate",function(a){return $.extend(d,{LOCALES:[{id:"zh_CN",name:a.instant("中国")},{id:"ja_JP_ko_KR",name:a.instant("日韩")},{id:"en_UK_en_US",name:a.instant("欧美")},{id:"en_PH",name:a.instant("东南亚")},{id:"zh_TW",name:a.instant("港澳台")},{id:"global",name:a.instant("全球")}],DEVICEATTRS:{os:a.instant("操作系统"),resolution:a.instant("分辨率"),vendor:a.instant("制造商"),ram:a.instant("内存")}}),d}]}}]),function(){var a=angular.module("config");a.constant("CUSTOMERTYPE",{NORMAL:"0",MEMBER:"1",PAY:"2"}).constant("ACCESS",{SHOW:"show",HIDE:"hide",LOCK:"lock"}).constant("TASKTYPE",{BASE:"base",SENIOR:"senior"}).constant("DEVICEPRICE",{CN:10,FOREIGN:20}).constant("SENTRYDSN",{PRODUCT:"https://ab5e3f95f3a747b68269d6494360eccc@sentry.testbird.io/36",TEST:"https://7b0654d6e30f4eaa8272c91fce77f4ea@sentry.testbird.io/35"})}(),function(){angular.module("common",[])}(),function(){function a(a,b){function c(a,b,c){b?d(c):e(a)}function d(b){var c=window.open("");a.rentDevice(b).then(function(a){c.location.href=a.data.url},function(){c.close()})}function e(a){b.open({templateUrl:"common/rent-device/appointment.html",controller:"AppointmentCtrl",controllerAs:"vm",size:"lg",resolve:{deviceName:function(){return a},prompt:function(){return f}}})}var f={title:"预约云手机",text:"尊敬的用户该手机现在暂时还未开通云手机功能,我们会在此机型上架后与您联系!感谢您对云手机的支持!"};return{tryRentDevice:c,rentDevice:d,appointmentDevice:e}}function b(a,b,c,d,e,f){var g=this;g.prompt=b,g.cancel=function(){a.dismiss()},g.submit=function(){var b={name:c.nick_name||"unknown",email:c.email||"unknown",message:"预约手机型号:"+d};e.sendMessageByEmail(b),a.close()}}function c(){return function(a){var b={0:"空闲",1:"忙碌",3:"维护中"};return b[a]}}a.$inject=["taskService","$uibModal"],b.$inject=["$uibModalInstance","prompt","config","deviceName","supportService","taskService"],angular.module("common").factory("RentDeviceService",a).controller("AppointmentCtrl",b).filter("tbDeviceStatusText",c)}(),function(){"use strict";function a(a){this.begin=0,this.pageSize=50,this.initialIndex=0,this.data=[],this.filteredData=[],this.dataStorage=[],this.filters={},this.success=function(){},_.extend(this,a),this.size=this.pageSize,this.goInitial()}function b(){return{scope:{tableCtrl:"="},link:function(a,b,c){function d(){var c=$(this).attr("sort-field"),d=$(this).children(".fa-sort");f.sortField.key!=c?(b.find(".sorting .fa-sort-up").removeClass("fa-sort-up fa-sort-down"),d.addClass("fa-sort-down")):d.toggleClass("fa-sort-down fa-sort-up"),a.$apply(function(){f.sortField.key=c,f.sortField.reverse=d.hasClass("fa-sort-down"),f.refreshDataBySort()})}function e(){h.hide(),a.$apply(function(){f.loadNext()})}var f=a.tableCtrl,g=c.scrollLoadEnabled,h=$(""),i=h.children("a");b.find(".sorting").append(''),b.on("click",".sorting",d),b.addClass("tb-paging-table"),b.after(h),h.show(),a.$watch("tableCtrl.filteredData",function(a){a.length>f.size?!g&&h.show():h.hide()}),i.click(e),g&&$(window).scroll(function(){$(window).scrollTop()+$(window).height()==$(document).height()&&!f.loading&&f.hasNext()&&f.size>f.pageSize&&e()})}}}angular.module("common").constant("FrontendPagination",a).directive("tableLoadingAndSort",b);var c=300;!function(){function b(a,b){a=_.isNumber(a)?a:this.begin,b=b||this.size,this.begin>c+a&&b>c?(this.begin=a,this.size=this.pageSize):a+b>this.begin+this.size+c&&b>c?(this.size=this.pageSize,this.begin=a+b-this.pageSize):(this.size=b,this.begin=a),this.refreshDataByFilter()}function d(){this.initialIndex+this.size>this.dataStorage.length?this.begin=this.dataStorage.length-this.size:this.begin=this.initialIndex,this.refreshDataByFilter()}function e(){this.hasPrevious()&&this.go(0)}function f(){this.hasNext()&&this.go(this.dataStorage.length-this.size)}function g(){this.hasPrevious()&&this.go(this.begin-this.pageSize,this.size+this.pageSize)}function h(){this.hasNext()&&this.go(this.begin,this.size+this.pageSize)}function i(){return this.begin>0}function j(){return this.size+this.begin=0?this.filters[a].splice(c,1):this.filters[a].unshift(b),this.refreshDataByFilter()}function o(a){delete this.filters[a],this.refreshDataByFilter()}function p(){var a=this;a.filteredData=_.filter(a.dataStorage,function(b){var c=!0;return _.forEach(a.filters,function(a,d){if(a.filterFunc){if(a.selected.length&&(c=a.filterFunc(b),!c))return!1}else if(_.isArray(a)){if(a.indexOf("all")>=0||0==a.length)return!1;if(a.indexOf(b[d])<0)return c=!1,!1}}),c}),a.size>a.filteredData.length&&(a.size=a.filteredData.length>a.pageSize?a.filteredData.length:a.pageSize)}function q(){this.sortField&&(this.filteredData=_.sortBy(this.filteredData,this.sortField.key),this.sortField.reverse&&this.filteredData.reverse())}function r(){var a;a=this.filteredData.length,this.begin>a&&(this.begin=a-this.pageSize),this.begin<0&&(this.begin=0),this.data=_.slice(this.filteredData,this.begin,this.begin+this.size)}_.extend(a.prototype,{dataFilter:p,dataSort:q,dataSlice:r,go:b,goInitial:d,goFirst:e,goLast:f,loadNext:h,loadPrevious:g,refreshDataByFilter:k,refreshDataBySort:l,hasPrevious:i,hasNext:j,changeFilter:m,updateFilter:n,deleteFilter:o})}()}(),function(){"use strict";function a(a,b,c){return{restrict:"A",link:function(a,c,d){var e={},f="",g=c.find('button[type="submit"]');a.$on("triggerValidate",function(a,b){f="";var d=c.data("bootstrapValidator");d.validate(),d.isValid()?(_.isFunction(b.success)&&b.success(),c.bootstrapValidator("disableSubmitButtons",!1)):(_.isFunction(b.fail)&&b.fail(),c.bootstrapValidator("disableSubmitButtons",!0))}),c[0].onerror=function(a){a.stopPropagation()},g.each(function(a){var b=$(this);e[a]=b.attr("data-form-submit"),b.click(function(){f=a})}),c.on("keypress",":input:not(textarea):not([type=submit])",function(a){"13"==a.which&&a.preventDefault()}),c.on("submit",function(a){a.preventDefault()}),c.bootstrapValidator({live:"enabled"}).on("success.form.bv",function(d){d.preventDefault(),!_.isEmpty(e)&&_.isNumber(f)&&a.$evalAsync(function(){b(e[f])(a,{}),c.data("bootstrapValidator").disableSubmitButtons(!1)})}),c.find(".auto-change").each(function(){var b=$(this),c=b.attr("ng-model");c&&a.$watch(c,function(a,c){a!==c&&b.change()})})}}}a.$inject=["$rootScope","$parse","$state"],angular.module("common").directive("tbFormValidator",a)}(),function(){angular.module("ui",["ui.bootstrap"])}(),angular.module("ui").directive("tbWizard",["$controller","$q","$compile","$http","$translate","$templateCache",function(a,b,c,d,e,f){return{restrict:"A",scope:{smartWizardCallback:"&"},link:function(g,h,i){function j(b){var d="",e={},f={};angular.forEach(q,function(h,i){d=$(b[i]),h.$scope=e.$scope=g.$new(),f=a(h.controller,e),h.controller=f,v.append(h.$tip=$(m(i,h.title))),w.append(h.$content=c(d)(h.$scope).attr("data-smart-wizard-pane",i+1))}),n()}function k(){console.log("test")}function l(a){return a.template?b.when(a.template):d.get(angular.isFunction(a.templateUrl)?a.templateUrl():a.templateUrl,{cache:f}).then(function(a){return a.data})}function m(a,b){return a++,'
  • '+a+' '+b+"
  • "}function n(){var a=[],b=q.length;h.on("click","[data-smart-wizard-tab]",function(b){var c=q[t-1],d=parseInt($(this).data("smartWizardTab"));return b.preventDefault(),d>t&&!c.controller.validate()?void(a=_.without(a,t)):void((d'),t0&&o(t-1),a.preventDefault()}),z.on("click",function(){g.$broadcast("cancel"),g.$parent.$dismiss()}),g.$on("submiting",function(){y.toggleClass("disabled")}),g.$on("submited",function(){y.toggleClass("disabled")}),o(t)}function o(a){t=a,$("[data-smart-wizard-pane="+a+"]",h).addClass("active").siblings("[data-smart-wizard-pane]").removeClass("active"),$("[data-smart-wizard-tab="+a+"]",h).addClass("active").siblings("[data-smart-wizard-tab]").removeClass("active"),x.toggleClass("disabled",1==a),a==q.length?y.html(e.instant("完成")):y.html(e.instant("下一步"))}var p=b,q=[],r={},s=[],t=1,u=h.find(".form-actions"),v=h.find(".bootstrapWizard"),w=h.find(".tab-content"),x=$("[data-smart-wizard-prev]",h),y=$("[data-smart-wizard-next]",h),z=$("[data-smart-wizard-cancel]",h);r=g.$parent[i.wizardOptions||"wizardOptions"],q=r.panels||[],angular.forEach(q,function(a,b){s.push(l(a))}),$.extend(g,{prevBtnText:"prev",nextBtnText:"next"}),c(u.contents())(g),p.all(s).then(j,k)}}}]),angular.module("ui").directive("jarvisWidget",["$rootScope",function(a){return{restrict:"A",compile:function(b,c){b.data("widget-color")&&b.addClass("jarviswidget-color-"+b.data("widget-color")),b.find(".widget-body").prepend('
    '),b.addClass("jarviswidget jarviswidget-sortable"),a.$emit("jarvisWidgetAdded",b)}}}]),angular.module("ui").directive("smartSelect2",["$compile","$parse",function(a,b){return{restrict:"A",compile:function(a,c){function d(a){var b=function(a,b){var c=String(a||10).length-String(this).length+1;return c>0?new Array(c).join(b||"0")+this:this},c=new Date(1e3*parseInt(a));return[c.getFullYear(),b.call(c.getMonth()+1),b.call(c.getDate())].join("-")+" "+[b.call(c.getHours()),b.call(c.getMinutes()),b.call(c.getSeconds())].join(":")}function e(a){var b=a.name;return a.version&&(b=''+d(a.created)+""+b,b+="("+a.version+")"),b}return function(a,c,d){var f=d.select2WatchData,g=d.select2Change,h=d.select2Model;f?a.$watch(f,function(b,d){c.select2({data:{results:b,text:"name"},formatSelection:e,formatResult:e}),c.select2("val",h&&a.$eval(h)?a.$eval(h).id:"")}):c.select2(),c.on("change",function(d){a.$apply(function(){g&&a.$eval(g)(d),h&&b(h).assign(a,c.select2("data"))})})}}}}]),angular.module("ui").directive("tbPopoverConfirm",["$compile","$parse","$translate",function(a,b,c){return{restrict:"A",compile:function(a,b){return function(a,b,d){var e=!1,f=d.tbPopoverConfirm;b.click(function(d){if(!e){e=!0;var g=$("");b.popover({animation:!0,content:g,html:!0,trigger:"focus",container:"#widget-body",placement:"bottom",template:'',title:c.instant("是否删除自定义标签?")}),$(".cancel",g).click(function(a){a.stopPropagation(),b.popover("hide")}),$(".confirm",g).click(function(){d.stopPropagation(),a.$parent.$apply(function(){a.$parent.$eval(f)(a.tag)}),b.popover("hide")}),b.popover("toggle")}d.stopPropagation()})}}}}]),angular.module("ui").directive("tbMock",["$compile","$parse",function(a,b){return{restrict:"A",compile:function(a,b){return a.css("position","relative"),a.append("
    "),function(a,b,c){}}}}]),angular.module("ui").directive("easyPieChart",["$translate",function(a){return{restrict:"A",scope:"@",link:function(b,c,d){var e=d.tbPercent,f=d.tbType;$.fn.easyPieChart&&(c.each(function(){var c=$(this),d=(c.css("color")||c.data("pie-color"),c.data("pie-track-color")||"rgba(0,0,0,0.04)"),g=parseInt(c.data("pie-size"))||25;c.easyPieChart({barColor:"#57889c",trackColor:d,scaleColor:!1,lineCap:"butt",lineWidth:parseInt(g/14),animate:1500,rotate:0,percent:50,size:g,onStep:function(c,d,g){"sys-tag"===f?$(this.el).find(".percent").text(a.instant("市场覆盖率")+Math.round(g)):$(this.el).find(".percent").text(a.instant("覆盖人群")+b.$eval(e)+a.instant("万"))}}),c=null}),e&&"sys-tag"===f&&c.data("easyPieChart").update(b.$eval(e)||0))}}}]),angular.module("ui").directive("tbAnimationShow",["$compile","$parse",function(a,b){return{restrict:"A",compile:function(a,b){return function(a,b,c){function d(){b.slideDown(700,function(){})}function e(){b.slideUp(h,function(){})}function f(b){return b?a.$eval(b):""}var g=c.tbAnimationShow,h=c.tbAnimationSpeed;c.tbAnimationType;h=f(h)||500,b.css("display","none"),a.$watch(g,function(a,b){b!==a&&(a&&d(),a||e())})}}}}]),function(){var a=angular.module("app",["ngAnimate","ngCookies","base64","angularFileUpload","ui.bootstrap","ui.router","tb.ui","pascalprecht.translate","ui","config","report","report_v2","support","problem","header","common"]);a.config(["$httpProvider","configProvider","$translateProvider","$animateProvider","$stateProvider","$urlRouterProvider","responseDataInterceptorProvider",function(a,b,c,d,e,f,g){Raven.config(b.config.sentryDsn).install(),Raven.setUserContext(_.pick(b.config,"email","register_type")),b.config.releaseEnv="production",Highcharts.setOptions({global:{useUTC:!1}}),f.otherwise(function(a){a.get("$state").go("task-v2")});var h="/"+window.location.pathname.substr(1).replace("index.html","")+"locales/";c.useStaticFilesLoader({prefix:h,suffix:"/translation.json"}),c.preferredLanguage(b.config.locale),d.classNameFilter(/^(?:(?!ng-animate-disabled).)*$/),b.config.token&&(a.defaults.headers.common.Authorization="Token "+b.config.token),a.defaults.headers.common["Accept-Language"]=b.config.accept_language,a.defaults.xsrfCookieName="csrftoken",a.defaults.xsrfHeaderName="X-CSRFToken",a.defaults.withCredentials=!0,g.disable()}]),a.run(["$rootScope","$q","config","spinner",function(a,b,c,d){var e=b.defer();a.translatePromise=e.promise,c.isTopWindow=window===window.top,a.$on("$translateLoadingEnd",function(){e.resolve()}),a.config=c}])}(),function(){function a(a,b,c){function d(b){var c;return"v2"==b.data_version||"v4"==b.data_version||"v3"==b.data_version?c="/api/task/"+b.key+"/report_v2/subtask/":"v1"==b.data_version&&(c="/api/task/"+b.key+"/report/devices/"),a.get(c).then(function(a){return _.filter(a.data.subtasks,{is_passed:!1})})}function e(b){var c="scenario"==b.taskType?"/api/task/requirement/"+b.taskKey+"/pay/":"/api/task/"+b.taskKey+"/pay_task/";return a.get(c).then(function(a){return a.data})}function f(b){var c="scenario"==b.taskType?"/api/task/requirement/"+b.taskKey+"/pay/":"/api/task/"+b.taskKey+"/pay_task/";return a.post(c).then(function(a){return a.data})}function g(b){return a.get("/api/task/list/",{params:{app_key:b.key}}).then(function(a){var b=a.data.filter(function(a){return 0==a.test_type||7==a.test_type||8==a.test_type});return b})}function h(){return a.get("/api/customer/company/emails/").then(function(a){return a.data})}function i(b){return a.get("/api/task/list/",{params:{app_key:b.key}}).then(function(a){var b=a.data.filter(function(a){return 6==a.test_type});return b})}function j(b){return a.get("/api/task/list/",{params:{app_key:b.key}}).then(function(a){var b=a.data.filter(function(a){return 2==a.test_type});return b})}function k(b){return a.get("/api/task/requirement/list/?app_key="+b.key).then(function(a){return _.filter(a.data,function(a){return a.service.task_type==c.typeChoices[b.type]})})}function l(b){return a.get("/api/task/requirement/"+b+"/task/list/").then(function(a){return a.data})}function m(){return a.get("/api/task/summary_report/list/").then(function(a){return a.data})}function n(b,c){return a.post("/api/task/requirement/"+b.key+"/testappfile/update/",{testappfile_key:c.key})}function o(b,c){return a.post("/api/task/"+b+"/report/reader/",{emails:c})}return{getScenarioSubtaskList:l,getRequirementList:k,getSummaryList:m,updateTaskTestAppFile:n,getComptestList:g,getTaskInfoList:h,subAccountPermissionSetting:o,getPayTask:e,payTask:f,getErrorDevices:d,getControlList:i,getAppletList:j}}a.$inject=["$http","$q","TASKS_ENUM"],angular.module("app").factory("TaskTableService",a)}(),function(){angular.module("app").config(["$stateProvider",function(a){a.state("task-v2.scenario",{url:"/scenario",title:"任务列表",templateUrl:"apps/tasks/task-table/templates/scenario-table.html",controller:"taskTableCtrl",controllerAs:"vm",resolve:{tableList:["TaskTableService","$stateParams",function(a,b){return a.getRequirementList(b)}]},params:{type:"scenario"}}).state("task-v2.scenario-subtask",{url:"/scenario-subtask/:subtaskKey",title:"任务列表",templateUrl:"apps/tasks/task-table/templates/scenario-subtask.html",controller:"taskTableCtrl",controllerAs:"vm",resolve:{tableList:["TaskTableService","$stateParams",function(a,b){return a.getScenarioSubtaskList(b.subtaskKey)}]},params:{type:"scenario"}}).state("task-v2.comptest",{url:"/comptest",title:"任务列表",templateUrl:"apps/tasks/task-table/templates/comptest-table.html",controller:"taskTableCtrl",controllerAs:"vm",resolve:{tableList:["TaskTableService","$stateParams",function(a,b){return a.getComptestList(b)}]},params:{type:"comptest"}}).state("task-v2.control",{url:"/control",title:"任务列表",templateUrl:"apps/tasks/task-table/templates/control-table.html",controller:"taskTableCtrl",controllerAs:"vm",resolve:{tableList:["TaskTableService","$stateParams",function(a,b){return a.getControlList(b)}]},params:{type:"control"}}).state("task-v2.applet",{url:"/applet",title:"任务列表",templateUrl:"apps/tasks/task-table/templates/applet-table.html",controller:"taskTableCtrl",controllerAs:"vm",resolve:{tableList:["TaskTableService","$stateParams",function(a,b){return a.getAppletList(b)}]},params:{type:"applet"}}).state("task-v2.summary",{url:"/summary",title:"任务列表",templateUrl:"apps/tasks/task-table/templates/summary-table.html",controller:"taskTableCtrl",controllerAs:"vm",resolve:{tableList:["TaskTableService",function(a){return a.getSummaryList()}]},params:{type:"summary"}}).state("pay",{url:"/pay/:taskType/:taskKey",title:"付费",templateUrl:"apps/tasks/task-table/templates/pay.html", controller:"PayCtrl",controllerAs:"vm",resolve:{apps:["taskService",function(a){return a.getTestAppList()}],payTask:["spinner","$state","$stateParams","$q","customerService","TaskTableService","DialogService",function(a,b,c,d,e,f,g){return d.when([f.getPayTask(c),e.updateCustomerInfo()]).then(function(a){return a[0]}).then(function(e){return 0!=e.pay_info.to_pay||e.pay_info.need_pay?e:(a.hide(),g.alert("当前订单已支付").then(function(){return b.go("task-v2."+c.taskType),d.reject()}))})}]},params:{type:"summary"}}).state("testAgain",{url:"/test-again/:taskType",title:"复测",templateUrl:"apps/tasks/task-table/templates/test-again.html",controller:"TestAgainCtrl",controllerAs:"vm",resolve:{apps:["taskService",function(a){return a.getTestAppList()}],isRetest:["$stateParams","$q","$state","DialogService",function(a,b,c,d){return a.task?b.when():d.alert("复测需要从任务列表进入,不要新开页面或者刷新页面!").then(function(){return c.go("task-v2.comptest",{key:""}),b.reject()})}],errorDevices:["$q","$stateParams","TaskTableService",function(a,b,c){return c.getErrorDevices(b.task)}],amounts:["$q","$stateParams","TaskV2Service",function(a,b,c){return c.getTaskAmountCalc({source_task_id:b.task.id})}]},params:{app:"",task:""}})}])}(),function(){function a(a,b,c,d,e,f,g,h,i){function j(){var b;return k.moudle.subtasks||(b="请选择复测机型"),k.moudle.apk||(b="请选择版本"),k.moudle.requirement||(b="请填写测试需求"),b?l||(l=a.$watch("vm.moudle",j,!0)):l&&(l(),l=null),k.errorMsg=b,!b}var k=this;k.errorDevices=h,k.sortField={key:"result_subtype.name",reverse:!1},k.apps=g,k.app=b.app,k.appKey=k.app.key,k.apks=k.app.test_app_files,k.amount=i.basic_amount,k.moudle={},k.isIos="ios"==k.app.os,k.Price=i.device_price,k.updateAmount=function(a){var b=a.target.checked?1:-1;k.amount+=b*k.Price},k.updateTotal=function(a){var b=a.target.checked?1:0;k.amount=0,k.amount+=b*k.Price*k.errorDevices.length},k.saveTask=function(){k.moudle.subtasks=_.chain(k.errorDevices).filter({checked:!0}).map("key").value(),j()&&d.reTestTask({taskKey:b.task.key,data:{test_app_file:k.moudle.apk.id,requirement:k.moudle.requirement,subtasks:k.moudle.subtasks}}).then(function(){c.go("task-v2.comptest",{key:k.appKey})})};var l;k.apkSelectChanged=function(){k.apk=""},k.openReleases=function(){window.open(_.URI.join(config.urls.dt,"home/app/"+k.app.key+"/releases")),f.alert("上传成功前请不要关闭此页面!")["finally"](function(){e.getTestAppList().then(function(a){var b=_.find(a,{key:k.appKey});b.test_app_files.length!=k.app.test_app_files.length&&(k.task.app.test_app_files.splice(0,k.task.app.test_app_files.length),_.merge(k.task.app.test_app_files,b.test_app_files))})})}}function b(a,b,c,d,e,f,g,h,i){var j=this;if(j.isScenarioTask="scenario"==a.taskType,j.taskName=j.isScenarioTask?"场景测试":"标准兼容性测试",j.is_h5=f.is_h5,j.task=f.pay_info,j.receiveEmail=f.receive_email,j.requirement=f.requirement,j.apps=g,j.app=_.find(j.apps,{test_app_files:[{key:f.test_app_file}]}),f.is_h5)j.config=h,j.payTask=function(){e.payTask(a).then(function(){__url="https://dt.testbird.com/new_home/newIfa.html?isProgram",window.open(__url,"_self")})};else{if(j.appOsText=j.app.os==i.os.ios?"ios":"Android",!j.app)return c.alert("该任务APP已被删除!").then(function(){b.go("task-v2"+(j.isScenarioTask?".scenario":".comptest"),{key:""})});j.apk=_.find(j.app.test_app_files,{key:f.test_app_file}),j.config=h,j.order=d.order,j.payTask=function(){e.payTask(a).then(function(){b.go("task-v2"+(j.isScenarioTask?".scenario":".comptest"),{key:j.app.key})})}}}function c(a,b,c,d,e,f,g,h,i,j){function k(b){if("v2"==b.data_version)if(q.app.type>0){var c=a.href("report_v2",{key:b.key});window.open(window.location.origin+window.location.pathname.replace(/home/,"frontend_zc")+window.location.search+c)}else window.open(a.href("report_v2",{key:b.key}));else if("v3"==b.data_version)if(q.app.type>0&&"Android"==q.appOsText){var c=a.href("report_v2",{key:b.key});window.open(window.location.origin+window.location.pathname.replace(/home/,"frontend_zc")+window.location.search+c)}else window.open(a.href("report_v3",{key:b.report_key||b.summary_report_key||b.key}));else if("v4"==b.data_version)if(q.app.type>0&&"Android"==q.appOsText){var c=a.href("report_v2",{key:b.key});window.open(window.location.origin+window.location.pathname.replace(/home/,"frontend_zc")+window.location.search+c)}else{var d=b.report_key||b.summary_report_key||b.key;7==b.test_type?window.open(window.location.origin+"/scene/#/transCodingTest/"+d):window.open(window.location.origin+"/scene/#/"+d)}}function l(a){return"演示APP"==q.app.name?void e.alert("演示APP不能进入报表系统!"):void window.open(window.location.origin+"/scene/#/reportSystem/"+q.app.key+"?key="+q.app.key+"&test_type="+a)}function m(){return"演示APP"==q.app.name?void e.alert("演示APP不能进入bug管理系统!"):void window.open(window.location.origin+"/bugs/#/"+q.app.key+"/overview")}function n(b){q.isDemoApp?e.alert("演示APP不能创建任务!"):"task-control"==b&&"ios"==q.app.os?e.alert("iOS App暂时还不支持控件遍历测试!"):a.go(b,{key:q.app.key})}function o(b,d){c.open({templateUrl:"apps/tasks/task-table/templates/release.html",backdrop:"static",controller:"releaseCtrl",resolve:{app:function(){return q.app},task:function(){return b},testType:function(){return d}},size:"hg"}).result.then(function(){a.reload()})}function p(b){c.open({templateUrl:"apps/tasks/task-table/templates/permissionSet.html",controller:"permissionCtrl",backdrop:"static",controllerAs:"vm",size:"lg",resolve:{task:function(){return b}}}).result.then(function(){a.reload()})}var q=this;q.TASKS_ENUM=j,q.app=_.find(h,{key:b.key})||h[0],q.appOsText=q.app.os==j.os.ios?"ios":"Android",q.locale=f.locale,q.is_open_report_system=f.is_open_report_system,q.scenarioState={0:"已删除",1:"等待测试",2:"测试中",3:"测试中",4:"测试完成",5:"草稿",6:"测试阻塞",7:"测试取消",8:"待确认费用",9:"待付款",10:"待补付款"},q.comptestState={0:"已删除",1:"等待测试",2:"测试中",3:"测试中",4:"测试完成",5:"草稿",6:"测试阻塞",7:"测试取消",10:"等待解析",11:"解析失败",12:"解析中",13:"免费测试失败",20:"正在评估价格",21:"已完成价格评估",22:"已完成价格评估"},q.goReport=k,q.createTask=n,q.goReportSystem=l,q.goBugManager=m,q.isDemoApp=q.app.name==j.demoApp.name,q.updateTaskRelease=o,q.permissionSettings=p,"scenario"==b.type&&d.judgmentCrmType(),q.pagination=new i({dataStorage:g,sortField:{key:"state",reverse:!0}})}function d(a,b,c,d,e,f,g,h){a.app=g,a.task=f,a.testType=h,a.releaseChanged=function(){a.release=null},a.createRelease=function(){e.createRelease({key:a.app.key,data:a.app.test_app_files,source:function(){return c.getTestAppList().then(function(b){return _.find(b,{key:a.app.key}).test_app_files})},callback:function(){c.getTestAppList().then(function(b){a.app=_.find(b,{key:a.app.key}),a.release=(a.app.test_app_files||[])[0]})}})},a.close=function(){a.release&&a.release.id!==a.task.test_app_file&&("comptest"==a.testType?a.updateTaskPromise=c.updateTaskTestAppFile(a.task,a.release).then(function(){b.close()}):a.updateTaskPromise=d.updateTaskTestAppFile(a.task,a.release).then(function(){b.close()}))},a.cancel=function(){b.dismiss()}}function e(a,b,c,d){a.isDisplayPermission=!0;var e=this;e.task_report_reader_emails=c.report_reader_emails,e.task_key=c.key,e.reEmails=[],e.reEmails=e.task_report_reader_emails.split(";"),d.getTaskInfoList().then(function(b){a.isDisplayPermission=!1;var c={};for(var d in b)c[d]=b[d];var f=Object.keys(c).map(function(a){return{name:c[a],checked:!1}});f.forEach(function(a){e.reEmails.forEach(function(b){a.name==b&&(a.checked=!0)})}),a.plist=f}),a.updateSelection=function(a,b){},a.close=function(){var c=[];a.plist.forEach(function(a){1==a.checked&&c.push(a.name)}),c=c.join(";"),d.subAccountPermissionSetting(e.task_key,c).then(function(){b.close()})},a.cancel=function(){b.dismiss()}}c.$inject=["$state","$stateParams","$uibModal","TaskV2Service","DialogService","config","tableList","apps","FrontendPagination","TASKS_ENUM"],d.$inject=["$scope","$uibModalInstance","taskService","TaskTableService","AppClientService","task","app","testType"],e.$inject=["$scope","$uibModalInstance","task","TaskTableService"],b.$inject=["$stateParams","$state","DialogService","OrderService","TaskTableService","payTask","apps","config","TASKS_ENUM"],a.$inject=["$scope","$stateParams","$state","TaskV2Service","taskService","DialogService","apps","errorDevices","amounts"],angular.module("app").controller("taskTableCtrl",c).controller("releaseCtrl",d).controller("permissionCtrl",e).controller("PayCtrl",b).controller("TestAgainCtrl",a)}(),angular.module("ui").directive("tbDisable",["$compile","$parse",function(a,b){return{restrict:"A",compile:function(a,c){var d=b(c.tbDisable);return function(a,b,c){var e=d(a,{});e&&(b.addClass("disable-lock"),$("label.icon",b).addClass("fa fa-lock"),$("input",b).remove())}}}}]).directive("tbPopoverTag",["$compile","$parse","$translate",function(a,b,c){return{restrict:"A",compile:function(a,b){return function(a,b,c){!a.vm.task.hasCustomTagPermission}}}}]),function(){angular.module("app").controller("taskDeviceCtrl",["$scope","$uibModal","$q","$log","config","TASKS_ENUM","foundationService","TaskV2Service","customTagService","customerService","DialogService",function(a,b,c,d,e,f,g,h,i,j,k){function l(a){a&&!q.task.tag&&(q.task.tag=_.find(q.sysTagList||[],{locale:q.task.marketLocale}),q.task.tag&&(q.task.tagKey=q.task.tag.key))}function m(a){q.task.hasCustomTagPermission&&j.getCustomTagList(q.task.app.os).then(function(b){q.customTagList=b,a&&q.tagSelected(_.find(q.customTagList,{id:a}))})}function n(){g.getSysTagList(q.task.app.os).then(function(a){q.sysTagList=a})}function o(a){var b;angular.forEach(q.customTagList,function(c,d){c.id==a.id&&(b=d)}),void 0!==b&&q.customTagList.splice(b,1)}function p(){var a=b.open({templateUrl:"apps/task/custom-tag/tagV2.html",controller:"customTagV2Ctrl",size:"hg",backdrop:"static",resolve:{marketLocale:function(){return q.task.marketLocale},task:function(){return q.task}}});a.result.then(function(a){return b.open({templateUrl:"apps/task/custom-tag/confirmV2.html",controller:"customTagConfirmCtrl",backdrop:"static",size:"lg",resolve:{tag:function(){return a}}}).result}).then(function(a){m(a.id)})}var q=_.extend(this,a.$parent.vm);q.config=e,q.locales=e.LOCALES,q.tagValidated=!0,q.isAndroid=q.task.app.os==f.os.android,q.devicesGroups=["热门终端","硬核联盟"],q.promise=c.all([n(),m()]),q.task.marketLocale!=q.locales[0].id&&(q.task.marketLocale="en_UK"),a.$watch("vm.task.marketLocale",l),a.$watch("vm.sysTagList",l),q.marketLocaleChanged=function(a,b){q.task.tag=null,q.task.tagKey=""},q.isMarketLocaleAvailable=function(a){return q.task.hasAllMarketPermission&&q.task.advance==q.TASKTYPE.SENIOR||q.task.marketLocale===a.id||q.task.extMarketLocale===a.id},q.tagSelected=function(a){q.task.tagKey=a.key||a.id,q.task.tag=a,q.task.tag.target_device_count=q.task.tag.target_device_count||0},q.getTagLocaleName=function(a){return a.access_locales[e.locale]},q.editCustomTag=function(a){i.setCustomTag(a);var c=b.open({templateUrl:"apps/task/custom-tag/confirmV2.html",controller:"customTagConfirmCtrl",backdrop:"static",size:"lg",resolve:{tag:function(){return i.getCustomTag()}}});c.result.then(function(a){m(a)})},q.createCustomTag=function(){if(q.task.hasCustomTagPermission){if(a.filtered&&a.filtered.length>=3)return void k.alert("一个市场支持保存3个常用终端列表,请删除一个自选终端套餐后再添加。");i.setCustomTag(),p()}},q.removeCustomTag=function(a){k.confirm("确认删除自定义标签").then(function(){return i.delCustomTag(a.id)}).then(function(){o(a)}),q.task.tag===a&&(q.task.tag=null)},q.showSystemTagModal=function(a){b.open({templateUrl:"apps/task/system-tag/system.tag.html",controller:"systemTagCtrl",size:"hg",backdrop:"static",resolve:{systemTag:function(){return a}}})},q.validate=function(){var b=!0;return q.task.tag||(a.$apply(function(){q.tagValidated=!1}),b=!1),b},a.$watch("vm.task.tag",function(a,b){!b&&a&&(q.tagValidated=!0)})}])}(),function(){function a(a){function b(b,k){var l=a.getTask().taskType;this.taskSteps=_.cloneDeep(c),b?a.judgmentCrmType():"control"==l?(this.taskSteps[1]=h,this.taskSteps[2]=i):"applet"==l?(this.taskSteps[1]=j,this.taskSteps[2]=f):"app"==k?(this.taskSteps[1]=d,this.taskSteps[2]=f):(this.taskSteps[1]=e,this.taskSteps[2]=g),this.currentStep=0}var c=[{title:"基本信息",type:"type",templateUrl:"apps/tasks/task-steps/templates/task-type.html",isReady:!0},{title:"机型选择",type:"device",templateUrl:"apps/tasks/task-steps/templates/task-device.html"},{title:"填写需求",type:"demand",templateUrl:"apps/tasks/task-steps/templates/scenario-demand.html"},{title:"测试确认",type:"price",templateUrl:"apps/tasks/task-steps/templates/task-confirm.html"}],d=c[1],e={title:"填写需求",type:"demand",templateUrl:"apps/tasks/task-steps/templates/game-demand.html"},f={title:"填写需求",type:"demand",templateUrl:"apps/tasks/task-steps/templates/app-demand.html"},g={title:"机型选择",type:"device",templateUrl:"apps/tasks/task-steps/templates/game-device.html"},h={title:"机型时长",type:"device",templateUrl:"apps/tasks/task-steps/templates/control-device.html"},i={title:"测试需求",type:"demand",templateUrl:"apps/tasks/task-steps/templates/control-demand.html"},j={title:"机型选择",type:"device",templateUrl:"apps/tasks/task-steps/templates/applet-device.html"};return b.prototype={constructor:b,taskSteps:[],currentStep:0,hasPreStep:function(){return this.currentStep>0},preStep:function(){this.hasPreStep()&&this.currentStep--},hasNextStep:function(){return this.currentStep"+a.title+""}),c.append(e)}}}]).directive("updateNotice",["pageService",function(a){return{template:'
    我知道了
    ',link:function(b,c){a.getOpenState()&&c.addClass("ng-hide"),c.find(".btn").click(function(){c.addClass("ng-hide"),a.getOpenState(!0)})}}}]).directive("tbSelectAll",["$timeout",function(a){return{scope:{models:"="},link:function(b,c,d){$(".is-disabled").attr({disabled:"disabled"}),b.$watch("models",function(a,c){var d=_.filter(b.models,{checked:!0});d.length?$(".is-disabled").removeAttr("disabled"):$(".is-disabled").attr({disabled:"disabled"}),d.length!==b.models.length&&(b.models.allChecked=!1)},!0),c.on("click",function(){b.$apply(function(){_.forEach(b.models,function(a){a.checked=b.models.allChecked})})}),d.checked&&a(function(){_.forEach(b.models,function(a){a.checked=d.checked})})}}}])}(),function(){function a(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){function r(a){return e.go("compare-detail",{key:a}),j.getCtCompareReportDetail(a)}function s(){k.show({templateUrl:"apps/tasks/templates/report-create.html",size:"hg",controller:"taskReportCtrl",controllerAs:"vm",backdrop:"static",resolve:{apps:function(){return z.applist}}})}function t(b,c,d){return k.show({templateUrl:"apps/tasks/templates/report-update.html",size:"hg",controller:"taskReportCtrl",controllerAs:"vm",backdrop:"static",resolve:{apps:function(){return z.applist},selected:function(){return z.isSelected},report:function(){return z.compReportslist}}}),a.reportkey=b,a.reportname=c,a.reportapplist=d,[a.reportkey,a.reportname,a.reportapplist]}function u(a){l.confirm({title:"删除对比报告",message:"所有与该报告相关的数据将被删除,确定要删除该对比报告吗?"}).then(function(){return j.deleteCtCompareReport(a)})}function v(a,b){var c;if(z.task.tag&&z.task.tag.locale&&(z.task.marketLocale=z.task.tag.locale),"comptest"==z.task.taskType&&"game"==z.task.testType)c=j.getAttentionConfig(e).then(function(c){return k.show({templateUrl:"apps/tasks/task-steps/templates/game-confirm.html",size:"md",backdrop:"static",model:{isUrgent:a,amount:b}})});else{var d,e;"comptest"==z.task.taskType?(e=0,d="标准兼容性测试"):"control"==z.task.taskType?(e=0,d="控件遍历测试"):"applet"==z.task.taskType?(e=2,d="微信小程序测试"):(e=1,d="场景测试"),c=j.getAttentionConfig(e).then(function(a){return k.show({templateUrl:"apps/tasks/task-steps/templates/model-attention.html",size:"hg",backdrop:"static",model:{title:d,table:a}})})}c.then(function(){return z.task.save()}).then(function(){if(z.goTaskList(),z.task.amounts.amount==-1){var a="comptest"==z.task.taskType?"您已成功创建标准兼容性测试,我们会尽快完成价格评估,稍后会有测试人员您联系。":"您已成功创建场景测试,我们会尽快完成价格评估,稍后会有测试人员您联系。";l.alert(a)}})}function w(){j.saveTask().then(x)}function x(){e.go("task-v2."+z.task.taskType,{key:z.appKey})}function y(){var a="";switch(z.stepsInstanse.taskSteps[z.stepsInstanse.currentStep].type){case"type":z.task.testType||(a="请选择测试类型"),z.task.apk||(a="请选择版本");break;case"device":z.isScenarioTask||"game"!=z.task.testType?p.deviceType["package"]==z.task.deviceType?z.task.tag||(a="请选择机型套餐"):p.deviceType.custom==z.task.deviceType&&(z.task.deviceCount||(a="请填写正确的机型数量")):z.task.tag||(a="请选择机型套餐");break;case"demand":z.task.receiveEmail||(a="请填写接受报告邮箱!"),z.isScenarioTask||"game"!=z.task.testType||"control"==z.task.taskType||"applet"==z.task.taskType||z.task.advance||(a="请选择测试类型"),!z.isScenarioTask&&p.deviceType.custom!=z.task.deviceType||z.task.contactInfo||(a="请填写费用确认联系方式!")}return z.errorMsg=a,a?A||(A=b.$watch("vm.task",y,!0)):A&&(A(),A=null),!a}var z=this;z.hideLegacySite=!0,z.dropDownApps=f,z.taskName=e.current.title,z.app=b.app=_.find(f,{key:c.key})||f[0],z.app.os=z.app.os||p.os.android,z.task=g,z.task.app=z.app,z.appKey=g.app.key,z.appOs=g.app.os,z.order=i.order,z.isCNLocale=o.isCNLocale,z.isComptestTask=z.task.taskType==p.taskType.comptest,z.isAndroid=z.appOs==p.os.android,z.app.name==p.demoApp.name&&l.alert("演示APP不能创建任务!").then(function(){e.go("task-v2",{key:z.appKey})}),z.config=o,z.TASKS_ENUM=p,z.TASKTYPE=q,z.isScenarioTask="scenario"==z.task.taskType,z.isScenarioTask||_.isNumber(z.app.type)&&z.app.type!=-255||l.alert("应用类型未填写不能新建任务,请联系客服!").then(function(){e.go("task-v2",{key:z.appKey})}),!z.isScenarioTask&&(z.task.testType=z.app.type>0?"game":"app"),z.apks=z.task.app.test_app_files,z["package"]=z.isAndroid?z.isScenarioTask||"control"==z.task.taskType?p["package"].androidScenarioTest:p["package"].androidAppTest:p["package"].ios,z.duration=p.duration,z.appletPackage=p.applet,z.apkSelectChanged=function(){z.task.apk=""},z.goTaskList=x,z.submit=w,z.stepsInstanse=m.init(z.isScenarioTask,z.task.testType),z.preStep=function(){2!=z.stepsInstanse.currentStep&&1!=z.stepsInstanse.currentStep||(z.task.tag=null,z.task.tagKey=null),z.stepsInstanse.hasPreStep()&&(z.errorMsg="",z.task.is_urgent=!1,z.stepsInstanse.preStep())},z.compReportslist=j.cpReports,z.compReportDetails=j.cpReportDetails,z.createReportPopUp=s,z.createUpdatePopUp=t,z.deleteCompareReport=u,z.applist=f,z.goReportDetail=r,a.reportkey="",a.reportname="",a.reportapplist=[],z.nextStep=function(){if(z.stepsInstanse.hasNextStep()){if(!y())return;2==z.stepsInstanse.currentStep?d.all([n.updateCustomerInfo(),z.task.getAmount()]).then(function(){z.stepsInstanse.nextStep()}):("device"==z.stepsInstanse.taskSteps[z.stepsInstanse.currentStep+1].type&&"base"==z.task.advance&&(z.task.marketLocale=o.LOCALES[0].id,z.task.tag&&z.task.tag.locale!=o.LOCALES[0].id&&(z.task.tag=null,z.task.tagKey=null)),z.stepsInstanse.nextStep())}else!z.task.is_urgent&&z.isComptestTask?l.confirm({message:"是否为本次测试申请加急测试?",cancelText:"否",sureText:"是",type:l.DIALOG_TYPE.CONFIRM_WARNING}).then(function(){z.task.is_urgent=!0,new Promise(function(a,b){a(z.task.getAmount())}).then(function(a){v(!0,a.amount)})},function(){v(!1,z.task.amounts.amount)}):v(!0,z.task.amounts.amount)},z.isHasAutoretest=function(){return"game"==z.task.testType&&"zh_CN"==z.task.marketLocale&&("package.top100"==z.task.tag.key||"package.top200"==z.task.tag.key||"package.top300"==z.task.tag.key||"package.top600"==z.task.tag.key)||"app"==z.task.testType&&"ios"!=z.task.app.os&&"comptest"==z.task.taskType},z.selectTestcaseFile=function(a){var b=a[0];b.size>52428800?l.alert("文本用例不能超过50M"):z.task.file=a[0]},z.selectDeviceTag=function(a){z.task.tag=a},z.selectDurationTag=function(a){z.task.duration=a},z.openReleases=function(){window.open(_.URI.join(o.urls.dt,"home/app/"+z.appKey+"/releases")),l.alert("上传成功前请不要关闭此页面!")["finally"](function(){h.getTestAppList().then(function(a){var b=_.find(a,{key:z.appKey});b.test_app_files.length!=z.task.app.test_app_files.length&&(z.task.app.test_app_files.splice(0,z.task.app.test_app_files.length),_.merge(z.task.app.test_app_files,b.test_app_files))})})};var A}function b(a,b,c,d,e,f){var g=this;g.hideLegacySite=!0,g.dropDownApps=d,g.taskName=c.current.title,g.app=a.app=_.find(d,{key:b.key }),g.isDemoApp=g.app.name==f.demoApp.name,g.isShowScenario=e.crm_type==f.crmType.finance,a.$on("$stateChangeSuccess",function(a,b,d,e,f){"tasksV2"==b.target&&(g.isShowScenario?c.go(".scenario"):c.go(".comptest")),g.taskType=d.type})}function c(a,b,c,d,e,f,g){function h(a,b){var c=a.target,d=c.checked?"add":"remove";this.updateSelected(d,b)}function i(a,b){if("add"==a&&n.selected.indexOf(b)==-1&&n.selected.push(b),"remove"==a&&n.selected.indexOf(b)!=-1){var c=n.selected.indexOf(b);n.selected.splice(c,1)}}function j(b,c){n.updateselect=a.reportapplist;var d=b.target,e=d.checked?"add":"remove";this.updateEditSelected(e,c)}function k(a,b){if("add"==a&&n.updateselect.indexOf(b)==-1&&n.updateselect.push(b),"remove"==a&&n.updateselect.indexOf(b)!=-1){var c=n.updateselect.indexOf(b);n.updateselect.splice(c,1)}}function l(){return 0==n.selected.length?void e.alert("请先选择需要创建的应用!"):void e.confirm({title:"提示",message:"确定要创建名称为"+n.compareReportName+"的对比报告吗?"}).then(function(){var a=n.compareReportName,b=n.selected;return d.createCtCompareReport(a,b)})}function m(){e.confirm({title:"提示",message:"确定要将名称更改为"+n.compareReportName+"的对比报告吗?"}).then(function(){var b=a.reportkey,c=n.compareReportName,e=n.updateselect;return d.updateCtCompareReport(b,c,e)})}var n=this;n.applist=f,n.selected=[],n.updateselect=[],n.updateSelection=h,n.updateSelected=i,n.updateEditSelection=j,n.updateEditSelected=k,n.createCompareRT=l,n.updateCompareRT=m,n.compareReportName="",n.isSelected=function(a){return n.selected.indexOf(a)>=0},n.initSelected=function(b){return a.reportapplist.indexOf(b)>=0},n.cancel=function(){g.dismiss()}}a.$inject=["$rootScope","$scope","$stateParams","$q","$state","apps","task","taskService","OrderService","TaskV2Service","ModalService","DialogService","TaskStepsService","customerService","config","TASKS_ENUM","TASKTYPE"],b.$inject=["$scope","$stateParams","$state","apps","config","TASKS_ENUM"],c.$inject=["$rootScope","$scope","ModalService","TaskV2Service","DialogService","apps","$uibModalInstance"],angular.module("app").controller("taskV2Ctrl",a).controller("tasksV2Ctrl",b).controller("taskReportCtrl",c)}(),function(){angular.module("app").factory("taskService",["$http","$q","$stateParams","config","CUSTOMERTYPE","TASKTYPE",function(a,b,c,d,e,f){function g(a){function b(a,b){return null!==a&&a.hasOwnProperty(b)?a[b]:null}var g=d.register_type,h=d.LOCALES[0],i="ko_KR",j="zh_HK";this.app=a,this.app.os=this.app.os||"android",this.requirement="",this.extMarketLocale="",d.locale==i||"ja_JP"==d.locale?this.marketLocale=d.LOCALES[1].id:"en_US"==d.locale||"en_UK"==d.locale?this.marketLocale=d.LOCALES[2].id:this.marketLocale=d.locale,this.receive_email=d.email,this.taskType=c.type,this.type=g==e.NORMAL||"ios"==a.os?f.BASE:f.SENIOR,this.isUrgent=!1,this.hasCustomTagPermission=g==e.PAY,this.isNormalCustomer=g==e.NORMAL,this.shouldShowDeviceCount=!this.isNormalCustomer,(g==e.PAY||g==e.NORMAL&&this.marketLocale==j)&&(this.hasAllMarketPermission=!0),g==e.MEMBER?this.marketLocale=h.id:g==e.NORMAL&&d.locale==i&&(this.extMarketLocale=h.id),this.toJson=function(a){return{is_draft:!!a,test_app_file:this.apk?this.apk.id:"",requirement:this.requirement||"",receive_email:this.receive_email,service:this.getService()}},this.getService=function(a){return{tag_key:a?null:b(this.tag,"key"),customer_deviceset_id:a?null:b(this.tag,"id"),device_count:a||null,user_locale:d.locale,access_type:d.register_type,device_locale:this.marketLocale,is_urgent:this.isUrgent,is_advance_test:this.type===f.SENIOR,os:this.app.os}}}var h;return{getConfig:function(){return d},createTask:function(a){return h=new g(a)},getTask:function(){return h},getTaskList:function(b){return a.get("/api/task/list/?app_key="+b).then(function(a){return a.data})},saveTask:function(){return a.post("/api/task/create/",h.toJson(),{ignoreErrAlert:!0})},saveTaskToDraft:function(){return a.post("/api/task/create/",h.toJson(!0))},getTestAppList:function(){return a.get("/api/task/testapp/list/").then(function(a){return a.data})},getQinniuToken:function(){return a.get("/api/app/uptoken/build/")},getAs3Url:function(){return a.get("/api/task/s3/url/")},createTestApp:function(b){return a.post("/api/task/testapp/create/",b)},updateTestApp:function(b){return a.post("/api/task/testapp/"+b.id+"/update/",b)},activateTask:function(b){return a.post("/api/task/"+b+"/activate/")},rentDevice:function(b){return a.post("/api/task/subtask/"+b+"/rio/rent/")},getOfflineReportUrl:function(b,c){var d={v1:b+"/report",v2:b+"/report_v2",v3:"summary_report/"+b};return a.get("/api/task/"+d[c]+"/offline/url/")},updateTaskTestAppFile:function(b,c){return a.post("/api/task/"+b.id+"/testappfile/update/v2/",{testappfile_key:c.key})}}}]).factory("pageService",["$q",function(a){function b(b,c,d,e,f){this.index=1,this.count=0,this.size=b,this.previous=null,this.next=null,this.start=0,this.end=0,this.vm=c,this.vmName=d,this.retrieve=e,e&&!angular.isFunction(e)&&(this.retrieve=function(b,c){var d=e;return a.when({count:d.length,previous:b>1,next:bc,results:d.slice((b-1)*c,b*c)})}),this.to=function(a){this.index=a;var b=this;this.retrieve(a,this.size).then(function(a){b.retrieveCallBack(a),f&&f(a)})},this.toFirst=function(){this.index>1&&this.to(1)},this.toLast=function(){this.index0?d:1;for(var e=0;e0&&b.length1){b.reverse();for(var d=b[b.length-1],e=0;e=0;d--)c=this.devices[d],a&&!a.cache.hasOwnProperty(c.key)||(delete b[c.key],c.checked=!1,this.devices.splice(d,1));angular.forEach(a||[],function(a){a.checked=!1})},this.toJson=function(){var a=[];return angular.forEach(this.devices,function(b){0!=b.state&&a.push({id:b.id,name:b.name,key:b.key})}),{id:this.id||null,locale:this.locale,device_count:this.device_count,desc:this.desc,name:this.name,devices:a,os:this.os}},this.getDevicesCount=function(){var a=0;return angular.forEach(this.devices,function(b){0!=b.state&&a++}),a},this.getOfflineDevicesCount=function(){var a=0;return angular.forEach(this.devices,function(b){0==b.state&&a++}),a}}var f;return{getCustomTag:function(){return f||new e},setCustomTag:function(a){return f=new e(a)},saveCustomTag:function(b){var c="/api/customer/device_set/create/";return b.id&&(c="/api/customer/device_set/"+b.id+"/update/"),a.post(c,b.toJson())},delCustomTag:function(b){return a.post("/api/customer/device_set/"+b+"/delete/")},getTagDevices:function(){var c=b.reject();return f.id&&(c=a.get("/api/customer/device_set/"+f.id+"/").then(function(a){f.addDevice(a.data.devices,!0)})),c}}}])}(),function(){function a(a,b,d,e,f,g,h,i){function j(){q.tagDevicesPromise=g.getTagDevices(),f.getDeviceAttrList(q.tag.os).then(function(a){q.deviceAttrs=a,q.filters=p(a)})}function k(){if(!q.tag.getDevicesCount())return void e.alert("您还没有选择测试终端,请选择测试终端后再保存!");var a=d.open({templateUrl:"apps/task/custom-tag/confirm.html",controller:c,backdrop:"static",size:"lg",resolve:{tag:function(){return q.tag},devicesAmount:["TaskV2Service",function(a){return a.getTask().getAmount(q.tag.getDevicesCount()).then(function(a){return a.device_amount})}]}});a.result.then(function(a){q.tag.id=a.id,b.close(a.id)})}function l(){angular.forEach(q.deviceAttrs,function(a,b){angular.forEach(a,function(a){a.checked=!1})}),angular.forEach(q.filters.attr_filters,function(a){a.values=[]})}function m(a){return a?void(q.searchedDevices.cache[a.key].checked=!1):void angular.forEach(q.searchedDevices,function(a){a.checked=!1})}function n(){q.searchedDevices=[],q.devicesPromise=f.getDevicesByFilter(q.filters).then(function(a){q.searchedDevices=o(a.data)})}function o(a){return a.cache={},angular.forEach(a,function(b){a.cache[b.key]=b,q.tag.hasDevice(b)&&(b.checked=!0)}),a}function p(a){var b={os:q.tag.os,name:"",locale:i,attr_filters:[]};return angular.forEach(a,function(a,c){var d={};d.attr=c,d.values=[],b.attr_filters.push(d)}),b}var q=a.vm=this;q.activedAttr="os",q.allChecked=!1,q.devicesPromise=null,q.tag=g.getCustomTag(),q.submit=k,q.cancel=function(){b.dismiss()},q.getAttrLocaleName=function(a){return h.DEVICEATTRS[a]},q.onAttrTypeToggle=function(a){q.activedAttr=a},q.onAttrChecked=function(a,b){var c=_.find(q.filters.attr_filters,{attr:a});b.checked?c.values.push(b.value):_.remove(c.values,function(a){return a===b.value}),q.filters.name="",q.allChecked=!1,n()},q.isDeviceEnabled=function(a){return a.state},q.onSearchDevices=function(){q.allChecked=!1,l(),n()},q.toggleCheckAll=function(){q.tag[q.allChecked?"addDevice":"clearDevices"](q.searchedDevices)},q.deviceCheckedToggle=function(a,b){q.isDeviceEnabled(b)&&q.tag[b.checked?"removeDevice":"addDevice"](b),a.preventDefault()},q.removeSelectedDevice=function(a){q.tag.removeDevice(a),m(a)},q.clearSelectedDevices=function(){q.tag.clearDevices(),q.allChecked=!1,m()},j()}function b(a,b,c,d,e,f,g,h,i,j){function k(){return _.forEach(m.valid,function(a,b){var c=new RegExp("^[1-9][0-9]*$");c.test(m.tag[b])&&Number(m.tag[b])>0&&Number(m.tag[b])<=m.limitCount?m.valid[b]=!1:m.valid[b]=!0}),!_.find(m.valid,function(a){return a})}function l(){m.validate()&&b.close(m.tag)}var m=a.vm=this;m.locales=h.LOCALES,m.tag=f.getCustomTag(),m.task=j,m.marketLocale=i,m.limitCount=m.task.app.os==g.os.android?m.marketLocale==m.locales[0].id?600:150:100,m.valid={device_count:!1},m.validate=k,m.submit=l,m.cancel=function(){b.dismiss()}}function c(a,b,c,d,e){function f(a){return b.close(a.data),a.data}function g(a){}a.tag=e,a.errMsg="",a.onConfirmSave=function(){return a.tag.name?void(a.promise=d.saveCustomTag(e).then(f,g)):void(a.errMsg=c.instant("标签名不能为空!"))},a.$watch("tag.name",function(b){b&&(a.errMsg="")}),a.closeModal=function(){b.dismiss()}}a.$inject=["$scope","$uibModalInstance","$uibModal","DialogService","foundationService","customTagService","config","marketLocale"],b.$inject=["$scope","$uibModalInstance","$uibModal","DialogService","foundationService","customTagService","TASKS_ENUM","config","marketLocale","task"],c.$inject=["$scope","$uibModalInstance","$translate","customTagService","tag"],angular.module("app").controller("customTagCtrl",a).controller("customTagV2Ctrl",b).controller("customTagConfirmCtrl",c)}(),function(){angular.module("support",["ui.router","ngAnimate"])}(),function(){"use strict";function a(a){return{sendMessageByEmail:function(b){var c={name:b.name,message:b.message,email:b.email},d=function(a){return $.param(a)},e={headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"},transformRequest:d};return a.post("/admin/feedback/",c,e)}}}a.$inject=["$http"],angular.module("support").factory("supportService",a)}(),function(){function a(a,b){b.state("support",{url:"/support",title:"客服",templateUrl:"apps/support/index.html",resolve:{}})}a.$inject=["$urlRouterProvider","$stateProvider"],angular.module("support").config(a)}(),function(){var a=angular.module("support");a.directive("placehold",function(){return{restrict:"A",require:"ngModel",link:function(a,b,c,d){var e="",f=function(){b.val(c.placehold),b.addClass("text-gray")},g=function(){b.val(""),b.removeClass("text-gray")};a.$watch(c.ngModel,function(a,b){e=a||""}),b.bind("focus",function(){""==e&&g()}),b.bind("blur",function(){""==b.val()&&f()}),d.$formatters.unshift(function(a){return a?a:(f(),e="",c.placehold)})}}}),a.directive("inputError",["$tooltip",function(a){return{restrict:"CA",scope:{isvalid:"="},link:function(a,b){a.$watch("isvalid",function(c,d){void 0!=a.isvalid&&(c?b.removeClass("input-error"):b.addClass("input-error"))})}}}])}(),function(){function a(a,b){a.model={},a.isvalid=function(b){return!a.submitted||b&&b.$valid},a.sendMessageByEmail=function(c){if(a.submitted=!0,c.$valid){var d={name:a.model.userName,email:a.model.userEmail,message:a.model.title+"\n"+a.model.message};b.sendMessageByEmail(d).success(function(a){$("#supportModal").modal("hide")}).error(function(a){})}}}a.$inject=["$scope","supportService"],angular.module("support").controller("supportCtrl",a)}(),function(){angular.module("report_v2",["ui.router","ngAnimate"]).run(["$rootScope",function(a){a.$on("$stateChangeSuccess",function(b,c,d,e,f){setTimeout(function(){$(".tb-nav-tabs li").removeClass("active"),$(".to"+c.target).addClass("active"),a.$broadcast("toState",c)})})}])}(),function(){function a(a,b,c,d,e,f){function g(a){return _.every(o.filters,function(b){return!b.selectedItems.length||!!_.find(b.selectedItems,function(c){return"result"==b.key?a.result_subtype.name==c.value:"exceptionDesc"==b.key?a.exception_desc==c.value:a.device_model[b.key]==c.value})})}function h(a,b){a.selected=!a.selected,a.selected?b.selectedItems.unshift(a):_.remove(b.selectedItems,function(b){return b.value==a.value})}function i(a,b,c){c.stopPropagation(),c.preventDefault(),a.selected=!1,_.remove(b.selectedItems,function(b){return b.value==a.value})}function j(){return _.findIndex(o.filters,function(a){return a.selectedItems.length>0})!=-1}function k(a,b){_.each(b.items,function(b){if(b.selected&&a.value!=b.value)return b.selected=!1,!1}),a.selected?"全部问题摘要"==a.value&&(b.selectedItems=[]):(a.selected=!a.selected,b.selectedItems[0]=a)}function l(a){a.isCollapse=!a.isCollapse}function m(a){o.keywords=a}function n(b,d,f){var g={};if(o.rioEnabled){if(d){var h=window.open("");return void c.rentDevice(f).then(function(a){h.location.href=a.data.url},function(){h.close()})}g.title=e.instant("预约云手机"),g.text=e.instant("尊敬的用户该手机现在暂时还未开通云手机功能,我们会在此机型上架后与您联系!感谢您对云手机的支持!"),a.open({templateUrl:"apps/report_v2/subtasks/rent.html",controller:"rentControllerV2",controllerAs:"vm",size:"lg",resolve:{deviceName:function(){return b},prompt:function(){return g}}})}}var o=this;o.subtasks=d.subtasks,o.sortField={key:"result_subtype.name",reverse:!1},o.rioEnabled=f.rioEnabled,o.isOffline=f.isOffline,o.isIos=f.isIos,o.osText=o.isIos?"iOS版本":"安卓版本",o.pageSize=o.loadCount=50,o.isCNLocale=f.isCNLocale,o.taskKey=b.key,o.fieldFilters=g,o.toggleFilterItem=h,o.removeSelectedItem=i,o.hasItemSelected=j,o.chooseExceptionDesc=k,o.collapse=l,o.filters=[{key:"result",name:"测试结果",items:[],selectedItems:[],handle:function(a){return a.result_subtype.name}},{key:"exceptionDesc",name:"问题摘要",items:[],selectedItems:[],handle:function(a){return a.exception_desc}},{key:"vendor",name:"终端品牌",items:[],selectedItems:[],handle:function(a){return a.device_model.vendor}},{key:"os",name:"系统版本",items:[],selectedItems:[],handle:function(a){return a.device_model.os}},{key:"resolution",name:"分辨率",items:[],selectedItems:[],handle:function(a){return a.device_model.resolution}},{key:"ram",name:"内存",items:[],selectedItems:[],handle:function(a){return a.device_model.ram}}],o.filterByVendor=m,o.vendors=[],o.rent=n,_.each(o.filters,function(a){a.items=_.chain(o.subtasks).map(a.handle).uniq().compact().map(function(a){return{value:a}}).value(),o.vendors=_.find(o.filters,{key:"vendor"}).items}),o.loadMore=function(a){o.pageSize=a?o.loadCount:o.pageSize+o.loadCount}}function b(a,b,c,d,e,f){var g=this;g.prompt=b,g.cancel=function(){a.dismiss()},g.submit=function(){var b={name:c.nick_name||"unknown",email:c.email||"unknown",message:"预约手机型号:"+d};e.sendMessageByEmail(b),a.close()}}a.$inject=["$uibModal","$stateParams","taskService","subtasks","$translate","config"],b.$inject=["$uibModalInstance","prompt","config","deviceName","supportService","taskService"],angular.module("report_v2").controller("reportSubtasksCtrl",a).controller("rentControllerV2",b)}(),function(){function a(a){return{restrict:"A",scope:{vm:"="},link:function(b,c){if(b.vm.subtaskDetail.mini_log_url){var d,e=100,f=20,g=$(".search"),h=$(".search-input",g),i=$(".hint",g);b.$on("logs.directiveScrollToExceptionLog",function(){$("body").animate({scrollTop:$(".width-full-screen").offset().top},300),c.animate({scrollTop:1})}),c.scroll(function(){var a=c.height(),d=c.get(0).scrollHeight,f=c.scrollTop();0==f&&b.vm.filter.begin>0?b.$apply(function(){b.vm.filter.begin=_.max([b.vm.filter.begin-e,0]),b.vm.filter.loadTotal+=e}):d-a<=f&&b.vm.filter.begin+b.vm.filter.loadTotala.begin+a.loadTotal&&b.$apply(function(){d[m].index>a.begin+a.loadTotal+e?(b.vm.filter.begin=_.max([d[m].index-f,0]),b.vm.filter.loadTotal=e):b.vm.filter.loadTotal+=e}),d[m].index=d.length&&(m=0),k()})}})}}}}function b(a,b){return{restrict:"A",scope:{subtasks:"=",currentSubtaskKey:"=",detailDeviceModelName:"="},link:function(b,c,d){var e=b.subtasks,f=_.max([_.findIndex(e,{key:b.currentSubtaskKey}),0]);$(".select2-chosen",c).text(b.detailDeviceModelName),0==f?$(".pre",c).addClass("disabled"):$(".pre",c).click(function(){a.go("subtaskDetail.performance",{subtaskKey:e[--f].key})}),f==e.length-1||0==e.length?$(".next",c).addClass("disabled"):$(".next",c).click(function(){a.go("subtaskDetail.performance",{subtaskKey:e[++f].key})}),$(".select2",c).change(function(){a.go("subtaskDetail.performance",{subtaskKey:b.currentSubtaskKey})})}}}a.$inject=["reportV2Service"],b.$inject=["$state","$location"],angular.module("report_v2").directive("tbLogsSearch",a).directive("switchSubtask",b)}(),function(){function a(a,b,c,d,e,f,g,h,i){var j=this;j.rioEnabled=i.rioEnabled,j.isOffline=i.isOffline,j.isIos=i.isIos,j.firstTableName=j.isIos?"相关截图":"性能分析",j.snapshotsLoadTotal=10,j.subtaskDetail=h,j.canRent=j.subtaskDetail.device_model.rio,j.childStateName="报告详情",j.isApp="应用"==j.subtaskDetail.test_app_type,a.appName=j.subtaskDetail.name,j.subtasks=_.filter(g,{is_passed:!1}),j.currentSubtaskKey=c.subtaskKey,j.rent=function(){var a=window.open("");f.rentDevice(j.subtaskDetail.id).then(function(b){a.location.href=b.data.url},function(){a.close()})};var k=_.map(j.subtaskDetail.images,function(a){return{href:a.filePath,title:a.time,helpers:{title:{type:"inside"}}}}),l=_.findIndex(k,{href:j.subtaskDetail.exception_image_url});if(l>=0){j.exceptionImage=k[l],j.showExceptionFancybox=function(){$.fancybox(j.exceptionImage)};var m=_.min([_.sortedIndexBy(j.subtaskDetail.performances,{time:j.exceptionImage.title},"time"),j.subtaskDetail.performances.length-1]);j.exceptionPerformance=_.clone(j.subtaskDetail.performances[m]),_.each(j.exceptionPerformance,function(a,b){"totalFlow"==b||"systemRamAvailable"==b?(a/=1024,j.exceptionPerformance[b]=a>=1?Math.floor(a):parseFloat(a.toFixed(2))):"cpu"==b&&(j.exceptionPerformance[b]=parseFloat(a).toFixed(2))})}j.showFancybox=function(a){$.fancybox(k,{index:a,loop:!1})},j.gotoExceptionSnapshot=function(){var a=5;j.rowNumber=Math.ceil((l+1)/a),j.snapshotsLoadTotal=j.rowNumber*a,"Snapshots"!=d.current.target?(j.isScrollToExceptionSnapshot=!0,d.go("subtaskDetail.snapshots")):b.$broadcast("toSnapshots")},j.gotoExceptionLog=function(){"Logs"!=d.current.target?d.go("subtaskDetail.logs",{isGoToExceptionLogLine:!0}):b.$broadcast("logs.loadingExceptionLog")}}function b(a,b,c,d,e){function f(){b(function(){g()},0)}function g(){p.hasSystemRamAvailable=p.subtaskDetail.performances[0].hasOwnProperty("systemRamAvailable"),h()}function h(){p.series=[],p.yAxisArray=[],p.images=p.subtaskDetail.images;var a=0;p.warningObject.CPU&&(p.series.push({key:"cpu",name:"CPU占用率(%)",type:"line",color:"#27a907",yAxis:a++,tooltip:{unit:"%"},data:[]}),p.yAxisArray.push({gridLineWidth:0,minRange:1,labels:{style:{color:"#27a907"}},title:{enabled:!1}})),p.warningObject.Memory&&(p.series.push({key:"ram",name:"内存占用(kb)",type:"line",color:"#0070f0",yAxis:a++,tooltip:{unit:"kb"},data:[]}),p.yAxisArray.push({gridLineWidth:0,minRange:1,labels:{style:{color:"#0070f0"},format:"{value:.0f}"},title:{enabled:!1}})),p.hasSystemRamAvailable&&p.warningObject.AvailableMemory&&(p.series.push({key:"systemRamAvailable",name:"可用内存占用(kb)",type:"line",color:"#6dc3f9",yAxis:a++,tooltip:{unit:"kb"},data:[]}),p.yAxisArray.push({gridLineWidth:0,minRange:1,labels:{style:{color:"#6dc3f9"},format:"{value:.0f}"},title:{enabled:!1}})),p.warningObject.Frame&&(p.series.push({key:"fps",name:"帧速率(fps)",type:"line",color:"#ffd200",yAxis:a++,tooltip:{unit:"fps"},data:[]}),p.yAxisArray.push({gridLineWidth:0,minRange:1,labels:{style:{color:"#ffd200"}},title:{enabled:!1},opposite:!0})),p.warningObject.Temperature&&(p.series.push({key:"temperature",name:"温度(°C)",type:"line",color:"#ff6c14",yAxis:a++,tooltip:{unit:"°C"},data:[]}),p.yAxisArray.push({gridLineWidth:0,minRange:1,labels:{style:{color:"#ff6c14"}},title:{enabled:!1},opposite:!0})),p.warningObject.DataTraffic&&(p.series.push({key:"totalFlow",name:"流量(kb)",type:"line",color:"#fa575f",yAxis:a++,tooltip:{unit:"kb"},time:"",data:[]}),p.yAxisArray.push({gridLineWidth:0,minRange:1,labels:{style:{color:"#fa575f"}},title:{enabled:!1},opposite:!0})),p.gpuEnabled=!1,p.warningObject.gpuUsage&&p.gpuEnabled&&(p.series.push({key:"gpuUsage",name:"GPU(%)",type:"line",color:"#8d66a6",yAxis:a++,tooltip:{unit:"%"},time:"",data:[]}),p.yAxisArray.push({gridLineWidth:0,minRange:1,labels:{style:{color:"#8d66a6"}},title:{enabled:!1},opposite:!0})),p.batteryEnabled=!1,p.warningObject.batteryUsage&&p.batteryEnabled&&(p.series.push({key:"batteryUsage",name:"电量(mA)",type:"line",color:"#013e85",yAxis:a++,tooltip:{unit:"mA"},time:"",data:[]}),p.yAxisArray.push({gridLineWidth:0,minRange:1,labels:{style:{color:"#013e85"}},title:{enabled:!1},opposite:!0})),_.each(p.subtaskDetail.performances,function(a,b){_.each(p.series,function(b,c,d){var e=b.key,f=a[e];"totalFlow"==e||"systemRamAvailable"==e?(f=a[e]/1024,f=f>=1?Math.floor(f):parseFloat(f.toFixed(2))):"cpu"==e&&(f=parseFloat(a[e].toFixed(2))),p.batteryEnabled&&"batteryUsage"==e&&(f=parseFloat(a[e].toFixed(2))),p.gpuEnabled&&"gpuUsage"==e&&(f=parseFloat(a[e].toFixed(2))),b.data.push([a.millisecond,f])})}),_.each(p.series,function(a,b){_.each(a.data,function(c){var d=1;return 0==c[d]&&void(c==_.last(a.data)&&(p.yAxisArray[b].tickPositions=[-2,-1,0,1,2]))})}),p.subtaskDetail.exception_image_url&&b(function(){j()},0),p.showFancybox=function(a){var b=[],c=p.images.slice(p.currentNumber-1,p.currentNumber+3);angular.forEach(c||[],function(a){b.push({href:a.filePath,title:a.time,helpers:{title:{type:"inside"}}})}),$.fancybox(b,{index:a,loop:!1})}}function i(){var b=this.index,c=p.subtaskDetail.performances[b].time,d=Math.max(0,_.sortedIndexBy(p.images,{time:c},"time"));d=Math.max(0,Math.min(d,p.images.length-1)),q&&(p.chart.xAxis[0].removePlotLine("plot-line"),q=!1),r!=d&&(a.$apply(function(){p.imagesLeftIn=d>r,p.currentNumber=d+1}),r=d)}function j(){var a=p.images[p.currentNumber-1];if(a){var b=a.time,c=p.subtaskDetail.performances;q&&p.chart.xAxis[0].removePlotLine("plot-line");var d=_.sortedIndexBy(c,{time:b},"time");d=Math.max(0,Math.min(d,c.length-1)),p.chart.xAxis[0].addPlotLine({value:c[d].time,color:"red",width:2,id:"plot-line"}),q=!0}}function k(){return p.currentNumber-1}function l(a){p.currentNumber=a+1,!p.isIos&&j()}function m(){var a=k();p.imagesLeftIn=!0,a>0&&(a=Math.max(a-s,0),l(a))}function n(){var a=k();p.imagesLeftIn=!1,a+s69},handle:function(a){o(a)}},{key:"ram",name:"内存",target:"Memory",avg:0,max:0,min:0,unit:"MB",isAlarm:function(a){return a>128},handle:function(a){o(a)}},{key:"fps",name:"帧速率",target:"Frame",avg:0,max:0,min:0,unit:"fps",isAlarm:function(a){return a>999||a<30},handle:function(a){o(a)}}],p.warningObject={CPU:!0,Memory:!0,AvailableMemory:!0,Frame:!0,Temperature:!0,DataTraffic:!0,gpuUsage:!0,batteryUsage:!0},p.prevSnapshot=m,p.nextSnapshot=n,p.mouseOverFn=i,p.redrawChart=f,p.subtaskDetail.exception_image_url?(p.exceptionPerformanceIndex=_.findIndex(p.subtaskDetail.images,{filePath:p.subtaskDetail.exception_image_url}),p.currentNumber=p.exceptionPerformanceIndex+1):p.currentNumber=Math.min(p.images.length,1),p.isIos||(_.each(p.warnings,function(a){function b(a){return a[c]}var c=a.key;"cpu"!=c&&"ram"!=c&&"fps"!=c||(a.avg=Math.round(_.sumBy(p.subtaskDetail.performances,b)/p.subtaskDetail.performances.length),a.max=Math.round(_.maxBy(p.subtaskDetail.performances,b)[c]),a.min=Math.round(_.minBy(p.subtaskDetail.performances,b)[c]),"ram"==c&&(a.avg=Math.round(a.avg/1024),a.max=Math.round(a.max/1024),a.min=Math.round(a.min/1024)))}),g())}function c(a,b,c,d,e,f){function g(){var a=h.subtaskDetail.mini_log_url;h.appPids=a.substring(a.indexOf("mini_")+"mini_".length,a.length-".log".length)}var h=this,i=100;h.subtaskDetail=a.vm.subtaskDetail,h.isOffline=c.isOffline,h.isIos=c.isIos,h.appPids="",h.levels={fatal:"F",error:"E",warn:"W",info:"I",debug:"D"},h.allLevelValues=_.values(h.levels),h.currentFilterLevels=_.clone(h.allLevelValues),h.scrollToLog=b.scrollToLog,h.filter={begin:0,loadTotal:i},h.changeLevel=function(a){if("all"==a)h.currentFilterLevels=h.currentFilterLevels.length==h.allLevelValues.length?[]:_.clone(h.allLevelValues);else{var b=h.currentFilterLevels.indexOf(a);b==-1?h.currentFilterLevels.push(a):h.currentFilterLevels.splice(b,1)}h.refresh()},h.refresh=function(){h.filter.begin=0,h.filter.loadTotal=i,h.showSearchControlled=!1,h.searchError=!1,h.filtedLogs=_.filter(h.logs,function(a){return h.currentFilterLevels.length==h.allLevelValues.length||h.currentFilterLevels.indexOf(a.level)>-1})},g(),d.getMiniLogs(h.subtaskDetail.all_log_url).then(function(c){function d(){h.refresh(),h.filter.begin=_.max([h.exceptionLog.index-3,0]),a.$broadcast("logs.directiveScrollToExceptionLog")}if(h.logs=c,f(function(){a.$digest()},20),h.refresh(),h.subtaskDetail.raw_exception_desc){var e=_.trim(h.subtaskDetail.raw_exception_desc);h.exceptionLog={text:""},_.forEach(h.logs,function(a){h.exceptionLog.text.length-1&&(h.exceptionLog=a)}),h.exceptionLog.text||(h.exceptionLog=h.logs[h.logs.length-1]),b.isGoToExceptionLogLine&&d(),a.$on("logs.loadingExceptionLog",function(){d()})}})}a.$inject=["$rootScope","$scope","$stateParams","$state","$filter","taskService","subtasks","subtaskDetail","config"],b.$inject=["$scope","$timeout","$location","$anchorScroll","$filter"],c.$inject=["$scope","$stateParams","config","reportV2Service","DialogService","$timeout"],angular.module("report_v2").controller("subtaskDetailCtrl",a).controller("performanceCtrl",b).controller("logsCtrl",c)}(),function(){function a(a,b,c){function d(a){if("string"!=typeof a)return a;var b=a.replace(/[\:\s]/g,"-").split("-"),c=new Date(Date.UTC(b[0],b[1]-1,b[2],b[3]-8,b[4],b[5]));return parseInt(c.getTime())}var e={},f={},g=[{key:"5da7cc01277175f36c5242ca480ff3407a6978fd",name:"安装失败"},{key:"f205e4512c8a6dec4b1b39338c6f9119f4c777af",name:"启动失败"},{key:"a15719d323e66e6f36ad2179c38a575b7bfba5fe",name:"闪退"},{key:"84f0a2685de0c8bd3d6445dcf326d20a8f3b0b03",name:"黑屏&白屏"},{key:"9bdde4174bd891af1263839846beb053aedbbae1",name:"卡死"},{key:"f0a32464e950b8cea252b7b40ff3bab11a63fef1",name:"卡顿"},{key:"exception.connect",name:"连接异常"},{key:"1d6805716612348cef9f90b1dc4d6df0bd1f76f7",name:"UI异常"},{key:"1f0ca92769d3c6d05085cf9a7d5a29f9510a961d",name:"其他异常"}];c.isNoCache&&(f={_:(new Date).getTime()});var h=function(c){return e[c]?b.when(e[c]):a.get(c,{params:f}).then(function(a){return e[c]=a})};return{getSortedExceptionTypes:function(){return g},getOverview:function(a){return h("/api/task/"+a+"/report/overview/").then(function(a){return a.data})},getCompatibility:function(a){var b=this;return h("/api/task/"+a+"/report_v2/compatibility/").then(function(a){return a.data.resultSubtypes=[],_.each(b.getSortedExceptionTypes(),function(b,c){a.data.resultSubtypes.push(_.find(a.data.result_json2.subtypes,{key:b.key})||{key:b.key,name:b.name,rate:0,count:0,coverage_count:0})}),a.data})},getPerformance:function(a){return h("/api/task/"+a+"/report/performance/").then(function(a){return a.data})},getSubtasks:function(a){return h("/api/task/"+a+"/report_v2/subtask/").then(function(a){return a.data})},getSubtaskDetail:function(a){return h("/api/task/report_v2/subtask/"+a+"/").then(function(a){return _.each(a.data.performances,function(a,b){a.millisecond=d(a.time)}),a.data})},getReportShareURL:function(a){return h("/api/task/"+a+"/report_v2/offline/url/").then(function(a){return a.data.url})},getExcelExportURL:function(a){return c.urls.ct+"api/task/"+a+"/report_v2/export/excel/"},getMiniLogs:function(a){var d="",f=a.lastIndexOf("/");if(d=a.substring(f+1,a.length-4)+".log",!a)return b.reject();if(!e[a]){var g=new JSZip.external.Promise(function(b,c){JSZipUtils.getBinaryContent(a,function(a,d){a?c(a):b(d)})});return g.then(JSZip.loadAsync).then(function(a){return a.file(d).async("string")}).then(function(b){var d=_.split(b,"\n");d[d.length-1]||d.pop();var f=_.map(d,function(a,b){ if(c.isIos)return{index:b+1,text:_.trim(a)};var d={},e=[];return e=a.match(/(\d{1,2})-(\d{1,2})\s*(\d{1,2}):(\d{1,2}):(\d{1,2})\s*\.(\d{1,6})\s*([A-Z])\/(.+)\s*\(\s*(\d+)\):(.*)/),e&&(d.index=b+1,d.time=e[1]+"-"+e[2]+" "+e[3]+":"+e[4]+":"+e[5],d.level=e[7],d.tag=e[8],d.pid=e[9],d.text=e[10].replace(/\t/g,"\n\t")),d});return e[a]=f})}},searchMiniLogs:function(a,b,c){var d,e=[];return a&&(d=c?new RegExp(a):new RegExp(a,"i"),_.each(b,function(a,b){var c=a.text.match(d);c&&e.push({index:b,logIndex:a.index})})),e},getSdkUrls:function(d){return c.isPgyer?b.when(null):_.isUndefined(e[d])?a.get(_.URI.join(c.urls.artisan.replace("http://","https://"),"api/app/"+d+"/sdk/"),{withCredentials:!1,headers:{Authorization:void 0,Token:void 0}}).then(function(a){return e[d]=a.data}):b.when(e[d])}}}a.$inject=["$http","$q","config"],angular.module("report_v2").factory("reportV2Service",a)}(),function(){function a(a){a.state("report_v2",{url:"/report_v2/:key",title:"测试报告",target:"Report",templateUrl:"apps/report_v2/index.html",controller:"reportCtrlV2",controllerAs:"vm",resolve:{overview:["$stateParams","reportV2Service","config",function(a,b,c){return b.getOverview(a.key).then(function(a){return c.dataVersion=a.data_version,c.isIos="ios"==a.os,a})}],compatibility:["$stateParams","reportV2Service",function(a,b){return b.getCompatibility(a.key)}],performance:["$stateParams","reportV2Service",function(a,b){return b.getPerformance(a.key)}]}}).state("report_v2.compatibility",{url:"/compatibility",title:"兼容性分析",target:"Compatibility",templateUrl:"apps/report_v2/compatibility/index.html",controller:"reportCompatibilityCtrlV2",controllerAs:"vm",resolve:{subtasks:["$stateParams","reportV2Service",function(a,b){return b.getSubtasks(a.key)}]}}).state("report_v2.performance",{url:"/performance",title:"性能分析",target:"Performance",templateUrl:"apps/report_v2/performance/index.html",controller:"reportPerformanceCtrl",controllerAs:"vm",params:{version:"v2"}}).state("report_v2.exceptions",{url:"/exceptions",title:"问题定位",target:"Exceptions",templateUrl:"apps/report_v2/exceptions/index.html",controller:"reportExceptionsCtrl",controllerAs:"vm",resolve:{subtasks:["$stateParams","reportV2Service",function(a,b){return b.getSubtasks(a.key)}]}}).state("report_v2.subtasks",{url:"/subtasks",title:"终端列表",target:"Subtasks",templateUrl:"apps/report_v2/subtasks/index.html",controller:"reportSubtasksCtrl",controllerAs:"vm",resolve:{subtasks:["$stateParams","reportV2Service",function(a,b){return b.getSubtasks(a.key)}]}}).state("subtaskDetail",{url:"/:taskKey/subtask_detail/:subtaskKey",title:"报告详情",target:"subtaskDetail",templateUrl:"apps/report_v2/subtask_detail/templates/index.html",controller:"subtaskDetailCtrl",controllerAs:"vm",resolve:{subtasks:["$stateParams","reportV2Service",function(a,b){return b.getSubtasks(a.taskKey).then(function(a){return config.isIos="ios"==a.os,a.subtasks})}],subtaskDetail:["$stateParams","reportV2Service",function(a,b){return b.getSubtaskDetail(a.subtaskKey)}]}}).state("subtaskDetail.performance",{url:"/performance",title:"性能分析",target:"Performance",templateUrl:"apps/report_v2/subtask_detail/templates/performance.html",controller:"performanceCtrl",controllerAs:"vm"}).state("subtaskDetail.logs",{url:"/logs/:scrollToLog",title:"日志分析",target:"Logs",templateUrl:"apps/report_v2/subtask_detail/templates/logs.html",controller:"logsCtrl",controllerAs:"vm",params:{isGoToExceptionLogLine:!1}}).state("subtaskDetail.profile",{url:"/profile",title:"设备参数",target:"Profile",templateUrl:"apps/report_v2/subtask_detail/templates/profile.html"}).state("subtaskDetail.snapshots",{url:"/snapshots",title:"所有截图",target:"Snapshots",templateUrl:"apps/report_v2/subtask_detail/templates/snapshots.html"})}a.$inject=["$stateProvider"],angular.module("report_v2").config(a)}(),function(){angular.module("report",["ui.router","ngAnimate"]).run(["$rootScope",function(a){a.$on("$stateChangeSuccess",function(b,c,d,e,f){setTimeout(function(){$(".tb-nav-tabs li").removeClass("active"),$(".to"+c.target).addClass("active"),a.$broadcast("toState",c)})})}])}(),function(){function a(a,b,c,d,e,f){var g=this;g.isV2="v2"==b.version,g.performance=e,g.taskKey=b.key,g.btn=[],g.hasMoreOptimizeList=8==g.performance.optimize_subtypes.length,g.hasMoreOptimizeList=!1;var h=function(a,b){return a=a.split(b),a.length>1&&a.pop(),a=a.join()},i=function(){var a=["Booting Delay ","CPU Utilization ","Internal Storage Utilization ","Data Traffic ","Temperature ","Frame Rate "];({"Data Traffic ":d.instant("Data Traffic"),"Booting Delay ":d.instant("Booting Delay"),"CPU Utilization ":d.instant("CPU Utilization"),"Internal Storage Utilization ":d.instant("Internal Storage Utilization"),"Temperature ":d.instant("Temperature"),"Frame Rate ":d.instant("Frame Rate")});if(g.optimize_subtypes=[],_.each(a,function(a,b){_.each(g.performance.optimize_subtypes,function(c){var d=h(c.code,"(");a===d&&(g.optimize_subtypes.push(c),g.optimize_subtypes[b].newcode=h(g.optimize_subtypes[b].code,"("),g.optimize_subtypes[b].iconcode=g.optimize_subtypes[b].newcode,g.optimize_subtypes[b].newname=h(h(g.optimize_subtypes[b].name,"("),"["))})}),g.hasMoreOptimizeList){var b=["Battery Usage ","GPU Utilization "];_.each(b,function(a,b){b+=6,_.each(g.performance.optimize_subtypes,function(c){var d=h(c.code,"(");a===d&&(g.optimize_subtypes.push(c),g.optimize_subtypes[b].newcode=h(g.optimize_subtypes[b].code,"("),g.optimize_subtypes[b].iconcode=g.optimize_subtypes[b].newcode,g.optimize_subtypes[b].newname=h(h(g.optimize_subtypes[b].name,"("),"["))})})}g.refreshList("Booting Delay ")};g.toFixed=function(a,b){return _.isNumber(a)?parseInt(a*Math.pow(10,b))===a*Math.pow(10,b)?a:a.toFixed(b):0},g.refreshList=function(b){_.each(g.optimize_subtypes,function(c){if(b===c.newcode){var d="";g.btn[c.newcode]="check",g.topFiveList=[],_.each(c.top_devices,function(a){"Electric Traffic "===c.newcode&&(a=$.extend(!0,{},a),a.i_data_traffic=a.i_data_traffic/100*3),g.topFiveList.push(a)}),_.each(g.topFiveList,function(a){g.topFiveSequence="-data","Booting Delay "===b||"Install Delay "===b?(a.data=a.i_boot_delay,d="ms"):"CPU Utilization "===b?(a.data=a.i_cpu_utilization,d="%"):"GPU Utilization "===b?(a.data=a.i_gpu_utilization,d="%"):"Frame Rate "===b?(a.data=a.i_frame_rate,d="fps",g.topFiveSequence="data"):"Internal Storage Utilization "===b?(a.data=a.i_mem_utilization,d="kb"):"Data Traffic "===b?(a.data=a.i_data_traffic/1024,d="kb"):"Electric Traffic "===b?(a.data=a.i_data_traffic/1024,d="mAh"):"Temperature "===b&&(a.data=a.i_temperature,d="°C")}),g.list_name=c.listname||c.name,g.optimize_subtype_name=h(g.list_name,"["),g.list_coverage=c.coverage,g.chartData={categories:[],data:[]};var e=["0~100","100~200","200~300","300~400","400以"];_.each(g.performance.performance_distributions,function(a){a[2]===c.code&&("Electric Traffic "==c.newcode&&(a=a.concat(),a[0]=e[g.chartData.length]),g.chartData.categories.push(a[0]),g.chartData.data.push(a[1]))}),a.$broadcast("chart:update",g.chartData)}else g.btn[c.newcode]="uncheck"})},i()}a.$inject=["$scope","$stateParams","$state","$translate","performance","config"],angular.module("report").controller("reportPerformanceCtrl",a)}(),function(){function a(){return function(a){var b="unknown";switch(a){case"F":b="FATAL";break;case"E":b="ERROR";break;case"W":b="WARN";break;case"I":b="INFO";break;case"D":b="DEBUG"}return _.toLower(b)}}angular.module("report_v2").filter("logLevel",a)}(),function(){function a(a,b,c,d,e,f,g,h,i,j){var k=this;k.compatibility=h,k.subtypes=k.compatibility.resultSubtypes,k.testSteps=g.test_steps,k.sortedExceptionTypes=f.getSortedExceptionTypes(),k.subtasks=_.filter(i.subtasks,{is_passed:!1}),k.exceptionDescFilters=_.chain(k.subtasks).map("exception_desc").compact().uniq().value(),k.taskKey=d.key,k.isOffline=e.isOffline,k.isHuawei=e.company_name&&_.includes(e.company_name,"devcloud"),k.filters={logFilter:"",subtasksFilter:""},k.chooseFilter=function(a,b){k.filters[a]=b},k.rioEnabled=e.rioEnabled,k.isOffline=e.isOffline,k.rent=function(a,d,e){var f={};if(k.rioEnabled){if(d){var g=window.open("");return void j.rentDevice(e).then(function(a){g.location.href=a.data.url},function(){g.close()})}f.title=b.instant("预约云手机"),f.text=b.instant("尊敬的用户该手机现在暂时还未开通云手机功能,我们会在此机型上架后与您联系!感谢您对云手机的支持!"),c.open({templateUrl:"apps/report_v2/subtasks/rent.html",controller:"rentControllerV2",controllerAs:"vm",size:"lg",resolve:{deviceName:function(){return a},prompt:function(){return f}}})}}}a.$inject=["$scope","$translate","$uibModal","$stateParams","config","reportV2Service","overview","compatibility","subtasks","taskService"],angular.module("report_v2").controller("reportExceptionsCtrl",a)}(),function(){function a(){return{restrict:"A",scope:{helpText:"="},link:function(a,b,c){b.on("mouseenter",function(a){b.append("")}),b.on("click",function(d){var e=c.tbWordHelpV2,f=a.helpText;"totalNumberOfProblems"==e?(b.before("

    "+f[e]+"

    "),$(".word-help-right").css({bottom:60,right:0}).hide().fadeIn()):(b.before("

    "+f[e]+"

    "),$(".word-help").css({bottom:40,left:0}).hide().fadeIn())}),b.on("mouseleave",function(a){$(".word-help").fadeOut().remove(),$(".word-help-right").fadeOut().remove(),$(".help-prompt").remove()})}}}function b(a){return{restrict:"A",scope:{ctrl:"="},link:function(b,c,d){var e=_.filter(b.ctrl.subtasks,function(a){return""!=a.exception_desc}),f={name:"all",count:e.length,rate:100,coverage:_.sumBy(e,"device_model.coverage")},g=_.chain(e).groupBy("exception_desc").map(function(a,b){return{name:b,count:a.length,rate:Math.round(a.length/f.count*1e3)/10,coverage:_.sumBy(a,"device_model.coverage")}}).value(),h=_.chain(g).orderBy(["count","coverage"],["desc","desc"]).slice(0,5).value(),i={name:"others",count:f.count-_.sumBy(h,"count"),rate:"",coverage:f.coverage-_.sumBy(h,"coverage")};i.rate=Math.round(i.count/f.count*1e3)/10;var j=$("");c.next().after(j),b.ctrl.exceptionLists=h,i.count&&j.show(),j.children("a").click(function(){j.hide(),b.$apply(function(){b.ctrl.exceptionLists=g})});var k=_.map(h,function(a){return{name:a.name,y:a.count}});if(i.count&&k.push({name:"其他",y:i.count}),k.length){var l;c.highcharts({chart:{type:"pie",spacingRight:920,height:300},colors:["#fa575f","#ff7e00","#fdC42c","#fee080","#ffebaa","#9db4ff"],legend:{align:"right",verticalAlign:"middle",layout:"horizontal",itemWidth:400,itemMarginBottom:20,width:800,floating:!0,x:900,symbolWidth:16,symbolHeight:12,itemStyle:{width:"340px",color:"inherit",fontWeight:"normal",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},itemHiddenStyle:{color:"#8e9194",fill:"#8e9194"}},title:{text:''+_.sumBy(k,"y")+'台0台',verticalAlign:"middle",y:0,useHTML:!0},plotOptions:{pie:{innerSize:110,marker:{states:{hover:!1}},allowPointSelect:!0,cursor:"pointer",dataLabels:{enabled:!1},showInLegend:!0},series:{allowPointSelect:!0,cursor:"pointer",point:{events:{click:function(){var b=this;a(function(){b.sliced?($(".amount-count",c).hide(),$(".current-count",c).text(b.y+"台").show()):($(".amount-count",c).show(),$(".current-count",c).hide())})},legendItemClick:function(){a(function(){$(".amount-count",c).text(_.chain(l.series[0].data).filter("visible").sumBy("y").value()+"台")})}}}}},tooltip:{enabled:!1},credits:{enabled:!1},exporting:{enabled:!1},series:[{type:"pie",name:"Browser share",data:k}]},function(a){l=a})}}}}function c(a){return{link:function(b,c){function d(){$(c).highcharts({chart:{type:"line",height:300},title:{text:null},credits:{enabled:!1},exporting:{enabled:!1},legend:{enabled:!1},xAxis:{type:"datetime",gridLineWidth:0},yAxis:b.vm.yAxisArray,plotOptions:{line:{dataLabels:{enabled:!1}},series:{lineWidth:2,allowPointSelect:!0,cursor:"pointer",point:{events:{mouseOver:b.vm.mouseOverFn}},marker:{enabled:!1}}},tooltip:{shared:!0,borderColor:"#fff",formatter:function(){var b="";return _.each(this.points,function(a,c,d){b+=''+a.y+a.series.tooltipOptions.unit+"
    "}),b+=" "+a("date")(this.x,"yyyy-MM-dd HH:mm:ss")+"
    "},crosshairs:[!0,!1]},series:b.vm.series}),b.vm.chart=$(c).highcharts()}b.$watch("vm.yAxisArray",function(){d()},!0)}}}function d(a){return{restrict:"A",scope:{tableList:"=",filters:"="},link:function(b,c){function d(){f+=e,g.length<=f?(f=g.length,isEnd=!0,$loadMore.hide()):$loadMore.show()}var e=50,f=0,g=allList=b.tableList;isEnd=!1,$loadMore=$(""),c.after($loadMore),$loadMore.children("a").click(function(){isEnd||(d(),b.$apply(function(){b.tableList=a("limitTo")(g,f)}))}),b.$watch("filters",function(){g=allList,_.each(b.filters,function(b){filter=_.isObject(b)?b.key:b,g=a("filter")(g,filter)}),d(),b.tableList=a("limitTo")(g,f)},!0)}}}function e(a,b){return{restrict:"A",scope:{ctrl:"="},link:function(c,d){d.on("click",".target-link",function(){a.hash("screen"),b();var d=$(this).attr("subtype-key"),e=$(this).attr("log-key");c.$apply(function(){c.ctrl.filters={logFilter:e||"",subtasksFilter:_.find(c.ctrl.subtypes,{key:d})||""}})})}}}function f(a){return{link:function(b,c,d){function e(){if(0==$("img",c).length||$("img",c).first().height()<=0)a(e,100);else{var d=$(".snapshot",c).first().outerHeight();c.css("minHeight",d*b.vm.rowNumber),$(window).scrollTop($(document).height())}}$(window).on("scroll",function(){$(window).scrollTop()+$(window).height()>=$(document).height()-1&&b.$apply(function(){b.vm.snapshotsLoadTotal+=Number(d.loadSize)})}),b.vm.isScrollToExceptionSnapshot&&e(),b.$on("toSnapshots",function(){e()})}}}function g(){return{link:function(a,b){setTimeout(function(){var a=b.prev().children(".horizontal-group-list").height(),c=50;a>c&&b.removeClass("hide")},0)}}}function h(a){return{restrict:"A",scope:{scrollToLog:"="},link:function(b,c){"true"==b.scrollToLog&&$("img").load(function(){a(function(){$("body").animate({scrollTop:$(".width-full-screen").offset().top},300)},100)})}}}function i(a){return{restrict:"A",link:function(b,c){a.isPgyer&&c.hide()}}}b.$inject=["$timeout"],d.$inject=["$filter"],e.$inject=["$location","$anchorScroll"],c.$inject=["$filter"],f.$inject=["$timeout"],h.$inject=["$timeout"],i.$inject=["config"],angular.module("report_v2").directive("tbWordHelpV2",a).directive("exceptionLogChart",b).directive("tbLoadMore",d).directive("panelSwitch",e).directive("subtaskPerformanceChart",c).directive("scrollToBottomLazyLoad",f).directive("showCollapseBtnIfNeed",g).directive("panelSwitchLogs",h).directive("pgyerHide",i)}(),function(){function a(a,b,c,d,e,f,g,h,i,j,k){function l(){var a={},b=c.instant("未通过"),d=c.instant("通过"),e=c.instant("Issues");0!=m.types.t_r_exception.count?(a.count=m.types.t_r_exception.count,a.name=b):0!=m.types.t_r_need_optimize.count?(a.count=m.types.t_r_need_optimize.count,a.name=e):(a.count=m.types.t_r_success.count,a.name=d);var f=[[b,m.types.t_r_exception.count],[d,m.types.t_r_success.count],[e,m.types.t_r_need_optimize.count]];m.isIos&&(f.length=3),$("#pie-chart").highcharts({chart:{type:"pie",width:190,height:190},title:{text:''+a.count+"",verticalAlign:"middle",y:-10,useHTML:!0},subtitle:{text:''+a.name+"",verticalAlign:"middle",useHTML:!0},plotOptions:{pie:{innerSize:110,dataLabels:{enabled:!1},marker:{states:{hover:!1}},colors:["#fa575f","#46ab2c","#fa8557"]},series:{allowPointSelect:!0,cursor:"pointer",point:{events:{click:function(a){$(".chart-count").html(this.y),$(".chart-name").html(this.name)}}}}},tooltip:{enabled:!1},credits:{enabled:!1},exporting:{enabled:!1},series:[{data:f}]})}var m=this;m.isOffline=j.isOffline||!1,m.isIos=j.isIos,m.isApp=j.isApp,m.testAppType=j.business,m.overview=h,m.compatibility=g,m.performance=i,m.severity=m.overview.task_severity_map,m.types=g.result_json2.types,m.subtypes=m.compatibility.resultSubtypes,m.compIndustryTop=m.overview.industry_exception_top_map,m.compIndustryAvg=m.overview.industry_exception_avg_map,m.compTaskAvg=m.overview.task_exception_avg_map,m.perfIndustryTop=m.performance.industry_performance_top,m.perfIndustryAvg=m.performance.industry_performance_avg,m.perfTaskAvg=m.performance.task_performance_avg,m.needOptimizeCount=m.types.t_r_need_optimize.count,m.exceptionCount=m.types.t_r_exception.count,m.testSuccessedCount=m.types.t_r_success.count,m.unTestedCount=m.types.t_r_untested.count,m.allDeviceCount=m.compatibility.device_count,m.testedCount=m.allDeviceCount-m.unTestedCount,m.gpuEnabled=!1,m.passRate=m.needOptimizeCount+m.testSuccessedCount==0||0==m.testedCount?0:(Math.round((m.needOptimizeCount+m.testSuccessedCount)/m.testedCount*1e4)/100).toFixed(2),a.appName=m.compatibility.name+m.compatibility.app_version,b.$on("toState",function(a,b){"report_v2"==b.name&&setTimeout(l)}),b.$on("$stateChangeSuccess",function(a,b,e,f){var g=d.current.name.match(/\./g)||[];0==g.length?m.childStateName=c.instant("概况"):1==g.length&&(m.childStateName=c.instant(b.title))}),j.setBusiness("应用"==m.overview.test_app_type?"app":"game"),"应用"!=m.overview.test_app_type&&(m.testAppTypeText=m.overview.test_app_type),m.wordHelpText={InstallFailure:c.instant("应用在某款手机上进行安装操作,但是没有安装成功。"),bootFailure:c.instant("应用安装成功,但是无法启动,或者启动后马上自动退出。判断标准:启动后,检测应用画面是否可见。"),crash:c.instant("在应用运行过程中,程序崩溃导致意外退出。判断标准:检测应用主进程是否存在。"),screenLagFrozen:c.instant("在应用运行过程中,应用不流畅,画面切换卡屏,主要原因是cpu或者内存占用过高,需要开发商进行优化。"),frozenScreenLagFrozen:c.instant("手机系统无法正常运行, 不接受输入事件, 但是应用没有闪退, 应用触发了手机的系统级bug, 引起系统崩溃。 "),blackScreen:c.instant("应用无法正常运行,没有显示任何ui界面,但是手机系统正常运行。"),dataException:c.instant("与服务器数据交互异常,但是链接未断开,通常是手机应用与服务器交互接口设计没有经过充分验证,导致异常数据在服务器与手机应用之间流窜。"),uiException:c.instant("应用UI界面显示紊乱,通常原因是分辨率差异或者应用场景切换逻辑代码书写有误。"),connectException:"与服务器的连接发生异常,可能是没有考虑到网络编程中的异常错误处理,或者由于服务器压力过大引发服务器崩溃。",other:c.instant("其他异常。"),linkException:c.instant("与服务器交互链接发生异常,通常由开发人员造成,没有考虑到网络编程中的异常,或者由于服务器压力过大引发服务器崩溃。"),programException:c.instant("应用运行时出现异常提示或现象。"),dataTraffic:c.instant("应用运行过程中所消耗的网络流量,主要集中在应用与服务器交互过程中产生的网络消耗。"),bootDelay:c.instant("对应用发起启动指令,到真正进入应用第一个界面所消耗的时间,反映了应用的加载速度,跟应用资源包大小有关。"),cpuUtilization:c.instant("应用进程占用的CPU资源,cpu使用率过高,说明应用比较耗电,而且容易卡顿。"),memUtilization:c.instant("应用进程所消耗的手机内存,内存占用高容易引起应用卡顿甚至闪退。"),fileSize:c.instant("文件大小。"),temperature:c.instant("通过android温度传感器获取的手机温度,跟手机cpu占用率成正比。"),frameRate:c.instant("应用每一秒内刷新的帧数,反映了应用画面流畅程度。")},m.shareReportUrl=function(){k.getReportShareURL(e.key).then(function(a){window.prompt(c.instant(" Ctrl+C 拷贝到粘贴板~ "),a)})},m.exportReportAsExcel=function(){window.open(k.getExcelExportURL(e.key))}}a.$inject=["$rootScope","$scope","$translate","$state","$stateParams","$location","compatibility","overview","performance","config","reportV2Service"],angular.module("report_v2").controller("reportCtrlV2",a)}(),function(){function a(a,b,c,d,e,f,g){var h=this,i=5;h.exceptionListSize=6,h.compatibility=e,h.subtypes=h.compatibility.result_json2.subtypes;var j=c.instant("高、中、低端手机"),k=c.instant("品牌"),l=c.instant("系统版本"),m=c.instant("Internal storage"),n=c.instant("屏幕尺寸"),o=c.instant("Resolution"),p=c.instant("全部"),q=({"黑屏&白屏":c.instant("黑屏&白屏"),"启动失败":c.instant("启动失败"),"闪退":c.instant("闪退"),"数据异常":c.instant("数据异常"),"卡死":c.instant("卡死"),"安装失败":c.instant("安装失败"),"链接异常":c.instant("链接异常"),"其他异常":c.instant("其他异常"),"程序异常":c.instant("程序异常"),"卡顿":c.instant("卡顿"),"UI异常":c.instant("UI异常"),"连接异常":c.instant("连接异常")},function(){var a={level:j,vendor:k,os:l,ram:m,screen_size:n,cpu:"CPU",resolution:o,gpu:"GPU"};g.isIos&&(delete a.level,delete a.vendor),h.device_distributions=[],h.device_distributionsPageSizes={},_.each(a,function(a,b){h.compatibility.device_distributions[b]&&(h.compatibility.device_distributions[b].key=b,h.compatibility.device_distributions[b].title=a,h.device_distributions.push(h.compatibility.device_distributions[b]),h.device_distributionsPageSizes[b]=i)}),h.num={},_.each(h.compatibility.device_distributions,function(a,b){h.num[b]=0;for(var c=i;ch.theTopOne.count&&(h.theTopOne=a)}),h.theTopOne.count<=h.subtypes.e_r_screen_lag.count+h.subtypes.e_r_frozen_screen.count&&(h.theTopOne={count:h.subtypes.e_r_screen_lag.count+h.subtypes.e_r_frozen_screen.count,name:c.instant("卡顿&卡死")})});h.subtaskExceptionList=h.compatibility.subtask_exception_list,h.value=p,h.searchTheTopName=function(a){var b={};return b.types={3:{count:0}},_.each(a,function(a){a.types[3].count>b.types[3].count&&(b=a)}),b.name},h.exceptionListLoad=function(a){h.exceptionListSize=a},a.open=function(a,b,c){b[c].types[3].count&&openModal(a,b,c)},openModal=function(a,d,e){var g={};g.list=[],g.name=a,_.each(_.filter(f.subtasks,{is_passed:!1}),function(a){if(d.title===l){var b=a.device_model[d.key].split(".");a.device_model[d.key]=b[0]+"."+b[1]}if("CPU"===d.title){var f=a.device_model[d.key];f=f.split(" "),a.device_model[d.key]=f[0]}if(a.device_model[d.key].toLowerCase()===d[e].name.toLowerCase())g.list.push(a);else if(d[e].name===c.instant("Others")){for(var h=0;h=0;d--)a[d].content.subType==b&&c.push(a[d]);return c}}function b(a){return function(a,b){if(a.length){if(b>1)return a.slice(b-2,b+1);var c=[];return c[1]=a[0],a.length>1&&(c[2]=a[1]),c}}}b.$inject=["$filter"],angular.module("report").filter("subType",a).filter("tbCompareLimitTo",b)}(),function(){function a(a,b,c,d){function e(){_.each(h.devices,function(a,b,c){_.each(a.warning_scenes,function(a,b,c){_.each(a,function(a,b,c){h.performances.push({value:a,type:"performance"})})}),h.vendors.push({value:a.device_model.vendor,type:"vendor"}),h.resolutions.push({value:a.device_model.resolution_height+"x"+a.device_model.resolution_width,height:a.device_model.resolution_height,width:a.device_model.resolution_width,type:"resolution"})}),_.each(h.model.scenes,function(a,b,c){h.scenes.push({value:a,type:"scene"})}),_.each(h.model.exception_list,function(a,b,c){h.results.push({value:a.result_subtype_text[0],type:"result"})}),h.performances=_.uniqBy(h.performances,"value"),h.vendors=_.uniqBy(h.vendors,"value"),h.resolutions=_.uniqBy(h.resolutions,"value"),h.results=_.uniqBy(h.results,"value"),h.scenes=_.uniqBy(h.scenes,"value")}function f(){var a=0,b=9;h.optionsModel={performances:h.performances.slice(a,b),vendors:h.vendors.slice(a,b),resolutions:h.resolutions.slice(a,b),results:h.results.slice(a,b),scenes:h.scenes.slice(a,b)}}function g(){i=h.selectedOptions.length,a.$broadcast("reFreshList")}var h=this,i=0,j=b.instant("更多"),k=b.instant("收起"),l=(b.instant("INSTALL"),b.instant("LAUNCH"),50);h.pageSize=l,h.model=c.data,h.devices=_.union(h.model.exception_list,h.model.performance_list),h.performances=[],h.vendors=[],h.resolutions=[],h.results=[],h.scenes=[],h.selectedOptions=[],h.selectedList=h.devices,h.textState={performances:{text:j,more:!1},vendors:{text:j,more:!1},resolutions:{text:j,more:!1},results:{text:j,more:!1},scenes:{text:j,more:!1}},e(),f(),h.changeText=function(a){h.textState[a].more?(h.textState[a].text=j,h.textState[a].more=!1,h.optionsModel[a]=h[a].slice(0,9)):(h.textState[a].text=k,h.textState[a].more=!0,h.optionsModel[a]=h[a])},h.select=function(a){a.isSelected?h.selectedOptions=_.without(h.selectedOptions,a):h.selectedOptions.push(a),a.isSelected=!a.isSelected,h.optionGroup=_.groupBy(h.selectedOptions,"type"),g()},h.fieldFilters=function(a){function b(a,b,c){switch(b){case"performance":var d=!1;return _.each(a.warning_scenes,function(a,b,e){a.indexOf(c)!=-1&&(d=!0)}),d;case"vendor":if(a.device_model.vendor==c)return!0;break;case"resolution":if(a.device_model.resolution==c)return!0;break;case"result":if(a.result_subtype_text[0]==c)return!0;break;case"scene":if(a.exception_scene==c||c in a.warning_scenes)return!0}return!1}var c=!0;return angular.forEach(h.optionGroup,function(d,e){var f=!0;d.length&&(f=_.find(d,function(c){return b(a,e,c.value)})),c=c&&f}),c},h.loadMore=function(a){a?h.pageSize=l:h.pageSize+=l}}function b(a,b,c,d,e,f,g,h,i,j){function k(){var a=0;_.each(u.deviceModel.warning_scenes,function(b){a+=b.length}),u.deviceModel.exception_scene?a++:u.deviceModel.is_passed||a++,u.sceneModel={deviceName:u.deviceModel.device_model.name,issuesCount:a,currentScene:z||u.deviceModel.warning_scenes[0]||"",warningScenes:u.deviceModel.warning_scenes,exceptionScene:u.deviceModel.exception_scene,exceptionPerformanceIndex:_.findIndex(u.logImages,{url:u.deviceModel.exception_image_url}),isSysException:null==u.deviceModel.exception_image_url,exceptionSubtypeText:u.deviceModel.result_subtype_text[0]}}function l(){u.exceptionCount={All:u.log.exception?u.log.exception.length:0,Error:0,NativeCrash:0,Fatal:0,ANR:0,Exception:0,Failure:0,Performance:0},u.subType={name:"All",count:u.log.exception?u.log.exception.length:0},u.log.exception&&_.each(u.log.exception,function(a,b,c){u.exceptionCount[a.content.subType]++,"Fatal"==a.content.subType&&(u.fatalException=a)})}function m(){u.hasSystemRamAvailable=u.log.dataJson[0]&&u.log.dataJson[0].hasOwnProperty("systemRamAvailable"),n(),o(B)}function n(){A=[],B=[],u.images=u.logImages;var a=0;u.issuesObject.CPU&&(A.push({key:"cpu",name:b.instant("CPU Usage (%)"),type:"line",color:"#27a907",yAxis:a++,tooltip:{unit:"%"},data:[]}),B.push({gridLineWidth:0,minRange:1,labels:{style:{color:"#27a907"}},title:{enabled:!1}})),u.issuesObject.Memory&&(A.push({key:"ram",name:b.instant("Memory Usage (kb)"),type:"line",color:"#0070f0",yAxis:a++,tooltip:{unit:"kb"},data:[]}),B.push({gridLineWidth:0,minRange:1,labels:{style:{color:"#0070f0"},format:"{value:.0f}"},title:{enabled:!1}})),u.hasSystemRamAvailable&&u.issuesObject.AvailableMemory&&(A.push({key:"systemRamAvailable",name:b.instant("Available Memory Usage (kb)"),type:"line",color:"#6dc3f9",yAxis:a++,tooltip:{unit:"kb"},data:[]}),B.push({gridLineWidth:0,minRange:1,labels:{style:{color:"#6dc3f9"},format:"{value:.0f}"},title:{enabled:!1}})),u.issuesObject.Frame&&(A.push({key:"fps",name:b.instant("Frame rate (fps)"),type:"line",color:"#ffd200",yAxis:a++,tooltip:{unit:"fps"},data:[]}),B.push({gridLineWidth:0,minRange:1,labels:{style:{color:"#ffd200"}},title:{enabled:!1},opposite:!0})),u.issuesObject.Temperature&&(A.push({key:"temperature",name:b.instant("Temperature (°C)"),type:"line",color:"#ff6c14",yAxis:a++,tooltip:{unit:"°C"},data:[]}),B.push({gridLineWidth:0,minRange:1,labels:{style:{color:"#ff6c14"}},title:{enabled:!1},opposite:!0})),u.issuesObject.DataTraffic&&(A.push({key:"totalFlow",name:b.instant("Data traffic(kb)"),type:"line",color:"#fa575f",yAxis:a++,tooltip:{unit:"kb"},time:"",data:[]}),B.push({gridLineWidth:0,minRange:1,labels:{style:{color:"#fa575f"}},title:{enabled:!1},opposite:!0})),u.issuesObject.GPU&&u.gpuEnabled&&(A.push({key:"gpu",name:b.instant("GPU(%)"),type:"line",color:"#8d66a6",yAxis:a++,tooltip:{unit:"%"},time:"",data:[]}),B.push({gridLineWidth:0,minRange:1,labels:{style:{color:"#8d66a6"}},title:{enabled:!1},opposite:!0})),u.issuesObject.Electric&&u.electricEnabled&&(A.push({key:"electric",name:b.instant("电量(mA)"),type:"line",color:"#013e85",yAxis:a++,tooltip:{unit:"mA"},time:"",data:[]}),B.push({gridLineWidth:0,minRange:1,labels:{style:{color:"#013e85"}},title:{enabled:!1},opposite:!0})),_.each(u.log.dataJson,function(a,b,c){function d(a,b,c){var d=b%a;return d>=a/2&&(d=-1*d%(a/2)),c*d/a}_.each(A,function(c,e,f){var g=c.key,h=a[g];"totalFlow"==g||"systemRamAvailable"==g?(h=a[g]/1024,h=h>=1?Math.floor(h):parseFloat(h.toFixed(2))):"cpu"==g&&(h=parseFloat(a[g].toFixed(2))),u.electricEnabled&&"electric"==g&&(h=300+d(12,b,80)+200*parseInt(a.cpu)*((b%20+1)/20),h=parseFloat(parseFloat(h).toFixed(2))),u.gpuEnabled&&"gpu"==g&&(h=5+parseInt(a.cpu)*((b%20+1)/20), h+=d(8,b,1),h=parseFloat(parseFloat(h).toFixed(2))),c.data.push([q(a.time),h])})}),_.each(A,function(a,b){_.each(a.data,function(c){var d=1;return 0==c[d]&&void(c==_.last(a.data)&&(B[b].tickPositions=[-2,-1,0,1,2]))})}),u.sceneModel.exceptionScene==u.currentScene?(u.currentNumber=u.sceneModel.exceptionPerformanceIndex+1,setTimeout(function(){p()},0)):u.currentNumber=Math.min(u.images.length,1),u.showFancybox=function(a){var b=[],c=u.images.slice(u.currentNumber-2,u.currentNumber+1);if(1==u.currentNumber&&(c=u.images.slice(u.currentNumber-1,u.currentNumber+1),c.splice(0,0,"")),void 0!==a)angular.forEach(c||[],function(a){b.push({href:a.url,title:a.time,helpers:{title:{type:"inside"}}})});else{var d=u.logImages[u.sceneModel.exceptionPerformanceIndex];b=[{href:d.url,title:d.time,helpers:{title:{type:"inside"}}}]}$.fancybox(b,{index:a,loop:!1})}}function o(a){var b=$("#line-chart");b.highcharts({chart:{type:"line",height:300},title:{text:null},credits:{enabled:!1},exporting:{enabled:!1},legend:{enabled:!1},xAxis:{type:"datetime",gridLineWidth:0},yAxis:a,plotOptions:{line:{dataLabels:{enabled:!1}},series:{lineWidth:2,allowPointSelect:!0,cursor:"pointer",point:{events:{mouseOver:u.mouseOverFn}},marker:{enabled:!1}}},tooltip:{shared:!0,borderColor:"#fff",formatter:function(){var a="";return _.each(this.points,function(b,c,d){a+=''+b.y+b.series.tooltipOptions.unit+"
    "}),a+=" "+d("date")(this.x,"yyyy-MM-dd HH:mm:ss")+"
    "},crosshairs:[!0,!1]},series:A}),u.chart=b.highcharts()}function p(){var a=u.images[u.currentNumber-1];if(a){var b=a.time;w&&u.chart.xAxis[0].removePlotLine("plot-line");var c=_.sortedIndexBy(u.log.dataJson,{time:b},"time");c=Math.max(0,Math.min(c,u.log.dataJson.length-1)),u.chart.xAxis[0].addPlotLine({value:q(u.log.dataJson[c].time),color:"red",width:2,id:"plot-line"}),w=!0}}function q(a){var b=a.replace(/[\:\s]/g,"-").split("-"),c=new Date(Date.UTC(b[0],b[1]-1,b[2],b[3]-8,b[4],b[5]));return parseInt(c.getTime())}function r(){return u.currentNumber-1}function s(a){u.currentNumber=a+1,p()}function t(){i.open({templateUrl:"apps/report_v1/issues/snapshots.html",windowClass:"snapshots-dialog",scope:c,controller:"snapshotsCtrl",controllerAs:"vm",resolve:{snapshots:function(){return u.log.snapshots}}})}var u=this,v=50,w=!1,x=0,y=1;u.deviceKey=e.deviceKey,u.rioEnabled=j.rioEnabled,u.gpuEnabled=j.gpuEnabled,u.electricEnabled=j.gpuEnabled,u.currentScene=e.currentScene,u.allSnapshots=t,u.pageSize=v,u.loadMore=function(a){a?u.pageSize=v:u.pageSize+=v},u.allList=_.union(g.data.exception_list,g.data.success_list,g.data.performance_list,g.data.untested_list),_.each(u.allList,function(a,b,c){a.key===e.deviceKey&&(u.deviceModel=a)}),u.scenes=g.data.scenes,u.log=h.data,u.log.dataJson=[],u.logImages=[],u.warningsCount={cpu:0,ram:0,fps:0};var z=e.currentScene||u.deviceModel.exception_scene||_.keys(u.deviceModel.warning_scenes)[0]||u.scenes[0];_.each(u.deviceModel.warning_scenes[z],function(a){u.warningsCount[a]++}),u.log.dataJson=_.filter(u.log.performances,function(a){return!z||z&&a.scene==z}),u.logImages=_.chain(u.log.snapshots).filter(function(a){return!z||z&&a.scene==z}).map(function(a){return{url:a.filePath,time:a.time,scene:a.scene}}).value(),$.ajax({dataType:"json",type:"GET",async:!1,url:u.log.run_log_index_url,success:function(a){u.log.exception=_.filter(a,function(a){return"Performance"!=a.content.subType})}}),u.downloadLog=function(){window.open(u.log.run_log_url+"?download")},u.canRent=u.deviceModel.device_model.rio,u.rent=function(){var a=window.open("");f.rentDevice(u.deviceModel.id).then(function(b){a.location.href=b.data.url},function(){a.close()})},k(),l(),u.showLogModal=function(a){i.open({templateUrl:"apps/report_v1/issues/log.modal.html",windowClass:"log-dialog",controller:"logDetailCtrl",controllerAs:"vm",resolve:{exception:function(){return a},log:function(){return u.log}}})},u.images=[],u.hideBanner=!1,u.issuesObject={CPU:!0,Memory:!0,AvailableMemory:!0,Frame:!0,Temperature:!0,DataTraffic:!0,GPU:!0,Electric:!0},u.redrawChart=function(){setTimeout(function(){m()},0)};var A=[],B=[];u.mouseOverFn=function(){var a=this.index,b=u.log.dataJson[a].time,d=Math.max(0,_.sortedIndexBy(u.images,{time:b},"time"));w&&(u.chart.xAxis[0].removePlotLine("plot-line"),w=!1),x!=d&&(c.$apply(function(){u.imagesLeftIn=d>x,u.currentNumber=d+1}),x=d)},m(),u.preSnapshot=function(){var a=r();u.imagesLeftIn=!0,a>0&&(a=Math.max(a-y,0),s(a))},u.nextSnapshot=function(){var a=r();u.imagesLeftIn=!1,a+y"+a.data+""),b.scrollTop(0)):1==e&&(""==a?$("#next-button").hide():(b.append("
    "+a.data+"
    "),b.scrollTop(b[0].scrollHeight)))})}var g=this;g.exception=c,g.cancel=function(){e.close()};var h={},i=1024;g.setLogIndex=function(){h={startByte:c.index.startByte,endByte:c.index.endByte,originStartByte:c.index.startByte,originEndByte:c.index.endByte}},g.showLogs=function(a){if(0==a){if(h.startByte<=0)return;h.endByte=h.originStartByte,h.startByte=h.endByte-i,h.startByte<0&&(h.startByte=0),h.originStartByte=h.startByte,f(h.startByte,h.endByte,a)}else 1==a&&(h.startByte=h.originEndByte,h.endByte=h.startByte+i,h.originEndByte=h.endByte,f(h.startByte,h.endByte,a))}}function d(a,b,c){var d=this;d.snapshots=c,d.exceptionPerformanceIndex=_.findIndex(d.snapshots,{filePath:a.$parent.vm.deviceModel.exception_image_url}),d.close=function(){b.close()},d.showFancybox=function(a){var b=_.map(d.snapshots,function(a){return{href:a.filePath,time:a.time,helpers:{title:{type:"inside"}}}});$.fancybox(b,{index:a,loop:!1})}}a.$inject=["$scope","$translate","devicesModel","config"],b.$inject=["$state","$translate","$scope","$filter","$stateParams","taskService","devicesModel","analysisModel","$uibModal","config"],c.$inject=["$scope","$http","exception","log","$uibModalInstance"],d.$inject=["$scope","$uibModalInstance","snapshots"],angular.module("report").controller("reportIssuesCtrl",a).controller("issuesDetailCtrl",b).controller("logDetailCtrl",c).controller("snapshotsCtrl",d)}(),function(){function a(){return function(a,b){return _.isEmpty(a)?b||"-":a}}angular.module("report").filter("emptyReplace",a)}(),function(){function a(a){return{restrict:"A",scope:{ctrl:"="},link:function(b,c,d){setTimeout(function(){function d(a){$(".issues-state thead td:nth-child("+(e+1)+")").addClass(a)}var e=0,f=0,g=b.ctrl.scenes,h=b.ctrl.sceneModel.isSysException,i=b.ctrl.sceneModel.exceptionScene,j=b.ctrl.sceneModel.warningScenes,k=b.ctrl.sceneModel.currentScene,l=k||i||_.keys(j)[0]||g[0];if(e=g.indexOf(l),d(l==i?"underline-exception":l in j?"underline-warning":"underline-normal"),_.each(_.keys(j),function(a,b){var c=g.indexOf(i);$(".issues-state tbody td:nth-child("+(c+1)+")").addClass("state-warning")}),f=g.indexOf(i),f!=-1&&($(".issues-state tbody td:nth-child("+(f+1)+")").find(".state").removeClass("state-warning").addClass("state-exception"),h))for(f;f")}),b.on("click",function(d){function e(){"totalNumberOfProblems"==f?(b.before("

    "+g[f]+"

    "),$(".word-help-right").css({bottom:60,right:0}).hide().fadeIn()):(b.before("

    "+g[f]+"

    "),$(".word-help").css({bottom:40,left:0}).hide().fadeIn())}var f=c.tbWordHelp,g=a.helpText;"screenLagFrozen"==f?(b.before("

    "+g[f].screenLag+"

    "+g[f].screenFrozen+"

    "),$(".word-help").css("bottom",40).hide().fadeIn()):e()}),b.on("mouseleave",function(a){$(".word-help").fadeOut().remove(),$(".word-help-right").fadeOut().remove(),$(".help-prompt").remove()})}}}function e(){return{restrict:"A",link:function(a,b,c){b.on("click",function(a){b.find(".angle").toggleClass("fa-angle-down fa-angle-up")})}}}function f(a,b){return{restrict:"A",scope:{ctrl:"="},compile:function(a,c){return function(a,c,d){c.on("click",function(){c.toggleClass("rent-sure"),c.hasClass("rent-sure")?(c.find("span").html(""),c.find("i").removeClass("fa fa-angle-left"),setTimeout(function(){c.find("span").html(b.instant("试用该机型将消耗100TBC/小时点击确认开始")+"
    "+b.instant("Confirm")+"
    "),$(".rent-sure-button").on("click",function(b){b.stopPropagation(),a.ctrl.rent()})},500)):(c.find("span").html(""),setTimeout(function(){c.find("span").html(b.instant("租用手机")),c.find("i").addClass("fa fa-angle-left")},100))})}}}}function g(a){return{restrict:"C",compile:function(b,c){return function(b,c,d){function e(){setTimeout(function(){a.isGame||$(".tb-change-app-type").each(function(){var a=$(this).text().replace(/游戏玩家/g,"用户").replace(/手游|游戏/g,"应用").replace(/玩家/g,"用户").replace(/gamer|player/g,"client").replace(/mobile game|game/g,"application").replace(/Game/g,"Application").replace(/Run time/g,"Running");$(this).text(a)})})}e()}}}}function h(a,b,c,d){return{restrict:"A",compile:function(e,f){var g="f0a32464e950b8cea252b7b40ff3bab11a63fef1",h="9bdde4174bd891af1263839846beb053aedbbae1";return function(e,f,i){function j(e){var f=$(e.currentTarget).attr("issue-key"),i={};i.list=[],c.getDevices(a.key).then(function(a){f===d.instant("卡顿&卡死")?(i.name=f,_.each(a.data.exception_list,function(a){a.result_subtype_json[0].key!==g&&a.result_subtype_json[0].key!==h||i.list.push(a)})):_.each(a.data.exception_list,function(a){a.result_subtype_json[0].key===f&&(i.list.push(a),i.name=a.result_subtype_text[0])})}),b.open({templateUrl:"apps/report_v1/compatibility/locate.html",controller:"locateController",controllerAs:"vm",size:"lg",resolve:{exception:function(){return i}}})}f.on("click",".clickable",j)}}}}function i(){return{restrict:"A",compile:function(a,b){return function(a,b,c){var d,e;$(window).scroll(function(){if(document.getElementById("header-first")){var a=b.offset().top,c=$(window).scrollTop();c>a-60?(b.find("tr").addClass("fixed"),$(".headers").width(e),$(".header0").width(d)):b.find("tr").removeClass("fixed"),d=$(".header0").width(),e=$(".header1").width()}})}}}}function j(){return{restrict:"A",compile:function(a,b){return function(a,b,c){setTimeout(function(){var a=b.find(".selection-head")[0].offsetHeight;b.find("ul").css({lineHeight:a+"px"})})}}}}function k(){return{restrict:"A",scope:{url:"="},link:function(a,b){setTimeout(function(){b.attr("data-original",a.url+"?imageView2/2/w/200/h/200").lazyload({container:$(".images-container"),effect:"fadeIn"})},200)}}}a.$inject=["$state"],b.$inject=["$state"],f.$inject=["$state","$translate"],g.$inject=["config"],h.$inject=["$stateParams","$uibModal","reportService","$translate"],angular.module("report").directive("tbDetailTitle",a).directive("tbSceneIndicator",b).directive("tbExceptionCount",c).directive("tbWordHelp",d).directive("tbAngleUpDown",e).directive("tbRentSure",f).directive("tbFixTableHead",i).directive("tbChangeAppType",g).directive("tbViewDetails",h).directive("tbTextCenter",j).directive("imageLazyLoad",k)}(),function(){function a(){return{restrict:"A",compile:function(a,b){return function(a,b,c){function d(){var b,c;this.attributes.orderBy?(b=this.attributes.orderBy.value,c=$(this).children(".sorting")):(b=this.parentElement.attributes.orderBy.value,c=$(this).closest(".sorting")),this!=e&&($(".sorting").removeClass("light fa-sort-up fa-sort-down"),c.addClass("light fa-sort-up")),c.toggleClass("fa-sort-down fa-sort-up"),e=this,a.$apply(function(){"subtype"==b?a.vm.order="result_subtype_json":a.vm.order="device_model."+b,c.hasClass("fa-sort-up")?a.vm.direction=!1:a.vm.direction=!0})}var e;b.on("click",".testers-sorting",d)}}}}angular.module("report").directive("tbTestersSorting",a)}(),function(){function a(a,b,c,d,e,f,g){var h=this,i=50;h.devices=c.data,h.isCNLocale=g.isCNLocale,h.vendors=[],h.rioEnabled=g.rioEnabled,h.allList=_.union(h.devices.exception_list,h.devices.success_list,h.devices.performance_list,h.devices.untested_list),h.vendors=_.uniq(_.map(h.allList,function(a){return a.device_model.vendor})),h.filter=function(a){h.keywords=a},h.refresh=function(a){h.pageSize=i,h.btnOne="uncheck",h.btnTwo="uncheck",h.btnThree="uncheck",h.subTasks=[],"all"===a?(h.btnOne="check",h.subTasks=h.allList):"exception"===a?(h.btnTwo="check",h.subTasks=h.devices.exception_list):"performance"===a&&(h.btnThree="check",h.subTasks=h.devices.performance_list)},h.refresh("all"),h.loadMore=function(a){a?h.pageSize=i:h.pageSize+=i},h.rent=function(c,e,f){var g={};if(h.rioEnabled){if(e){var i=window.open("");return void b.rentDevice(f).then(function(a){i.location.href=a.data.url},function(){i.close()})}g.title=d.instant("预约云手机"),g.text=d.instant("尊敬的用户该手机现在暂时还未开通云手机功能,我们会在此机型上架后与您联系!感谢您对云手机的支持!"),a.open({templateUrl:"apps/report_v1/devices/rent.html",controller:"rentController",controllerAs:"vm",size:"lg",resolve:{deviceName:function(){return c},prompt:function(){return g}}})}}}function b(a,b,c,d,e,f){var g=this;g.prompt=b,g.cancel=function(){a.dismiss()},g.submit=function(){var b={name:c.nick_name||"unknown",email:c.email||"unknown",message:"预约手机型号:"+d};e.sendMessageByEmail(b),a.close()}}a.$inject=["$uibModal","taskService","devicesModel","$translate","$state","$stateParams","config"],b.$inject=["$uibModalInstance","prompt","config","deviceName","supportService","taskService"],angular.module("report").controller("reportDevicesCtrl",a).controller("rentController",b)}(),function(){function a(a,b,c,d,e,f,g,h,i,j){function k(){var a={},b=c.instant("未通过"),d=c.instant("通过"),e=c.instant("Issues");0!=l.types.t_r_exception.count?(a.count=l.types.t_r_exception.count,a.name=b):0!=l.types.t_r_need_optimize.count?(a.count=l.types.t_r_need_optimize.count,a.name=e):(a.count=l.types.t_r_success.count,a.name=d),$("#pie-chart").highcharts({chart:{type:"pie",width:190,height:190},title:{text:''+a.count+"",verticalAlign:"middle",y:-10,useHTML:!0},subtitle:{text:''+a.name+"",verticalAlign:"middle",useHTML:!0},plotOptions:{pie:{innerSize:110,dataLabels:{enabled:!1},marker:{states:{hover:!1}},colors:["#fa575f","#46ab2c","#fa8557"]},series:{allowPointSelect:!0,cursor:"pointer",point:{events:{click:function(a){$(".chart-count").html(this.y),$(".chart-name").html(this.name)}}}}},tooltip:{enabled:!1},credits:{enabled:!1},exporting:{enabled:!1},series:[{data:[[b,l.types.t_r_exception.count],[d,l.types.t_r_success.count],[e,l.types.t_r_need_optimize.count]],keys:["name","y"]}]})}var l=this;l.overview=g.data,l.compatibility=f.data,l.performance=h.data,l.devices=i.data,l.types=f.data.result_json2.types,l.subTypes=f.data.result_json2.subtypes,l.compIndustryTop=l.overview.industry_exception_top_map,l.compIndustryAvg=l.overview.industry_exception_avg_map,l.compTaskAvg=l.overview.task_exception_avg_map,l.perfIndustryTop=l.performance.industry_performance_top,l.perfIndustryAvg=l.performance.industry_performance_avg,l.perfTaskAvg=l.performance.task_performance_avg,l.needOptimizeCount=l.types.t_r_need_optimize.count,l.exceptionCount=l.types.t_r_exception.count,l.testSuccessedCount=l.types.t_r_success.count,l.unTestedCount=l.types.t_r_untested.count,l.allDeviceCount=l.compatibility.device_count,l.testedCount=l.allDeviceCount-l.unTestedCount,l.gpuEnabled=j.gpuEnabled="485168d596f9439a9da847366351c78b"==e.key||"e39fb309f131442d994f8acde3748d4c"==e.key,l.passRate=l.needOptimizeCount+l.testSuccessedCount==0||0==l.testedCount?0:(Math.round((l.needOptimizeCount+l.testSuccessedCount)/l.testedCount*1e4)/100).toFixed(2),a.appName=l.compatibility.name+l.compatibility.app_version,b.$on("toState",function(a,b){"report"==b.name&&setTimeout(k)}),b.$on("$stateChangeSuccess",function(a,b,e,f){var g=d.current.name.match(/\./g)||[];0==g.length?l.childStateName=c.instant("概况"):1==g.length&&(l.childStateName=c.instant(b.title))}),j.setBusiness("应用"==l.overview.test_app_type?"app":"game"),"应用"!=l.overview.test_app_type&&(l.testAppTypeText=l.overview.test_app_type),l.wordHelpText={InstallFailure:c.instant("应用在某款手机上进行安装操作,但是没有安装成功。"),bootFailure:c.instant("应用安装成功,但是无法启动,或者启动后马上自动退出。判断标准:启动后,检测应用画面是否可见。"),crash:c.instant("在应用运行过程中,程序崩溃导致意外退出。判断标准:检测应用主进程是否存在。"),screenLagFrozen:{screenLag:c.instant("卡顿:在应用运行过程中,应用不流畅,画面切换卡屏,主要原因是cpu或者内存占用过高,需要开发商进行优化。"),screenFrozen:c.instant("卡死: 手机系统无法正常运行, 不接受输入事件, 但是应用没有闪退, 应用触发了手机的系统级bug, 引起系统崩溃。 ")},blackScreen:c.instant("应用无法正常运行,没有显示任何ui界面,但是手机系统正常运行。"),dataException:c.instant("与服务器数据交互异常,但是链接未断开,通常是手机应用与服务器交互接口设计没有经过充分验证,导致异常数据在服务器与手机应用之间流窜。"),uiException:c.instant("应用UI界面显示紊乱,通常原因是分辨率差异或者应用场景切换逻辑代码书写有误。"),connectException:c.instant("与服务器的连接发生异常,可能是没有考虑到网络编程中的异常错误处理,或者由于服务器压力过大引发服务器崩溃。"),other:c.instant("其他异常。"),linkException:c.instant("与服务器交互链接发生异常,通常由开发人员造成,没有考虑到网络编程中的异常,或者由于服务器压力过大引发服务器崩溃。"),programException:c.instant("应用运行时出现异常提示或现象。"),dataTraffic:c.instant("应用运行过程中所消耗的网络流量,主要集中在应用与服务器交互过程中产生的网络消耗。"),bootDelay:c.instant("对应用发起启动指令,到真正进入应用第一个界面所消耗的时间,反映了应用的加载速度,跟应用资源包大小有关。"),cpuUtilization:c.instant("应用进程占用的CPU资源,cpu使用率过高,说明应用比较耗电,而且容易卡顿。"),memUtilization:c.instant("应用进程所消耗的手机内存,内存占用高容易引起应用卡顿甚至闪退。"),fileSize:c.instant("文件大小。"),temperature:c.instant("通过android温度传感器获取的手机温度,跟手机cpu占用率成正比。"),frameRate:c.instant("应用每一秒内刷新的帧数,反映了应用画面流畅程度。")}}a.$inject=["$rootScope","$scope","$translate","$state","$stateParams","compatibilityModel","overviewModel","performanceModel","devicesModel","config"],angular.module("report").controller("reportCtrl",a)}(),function(){function a(a,b,c,d,e,f,g,h){var i=this,j=5;i.exceptionListSize=6,i.overview=e.data,i.compatibility=f.data,i.subtypes=i.compatibility.result_json2.subtypes;var k=c.instant("高、中、低端手机"),l=c.instant("品牌"),m=c.instant("系统版本"),n=c.instant("Internal storage"),o=c.instant("屏幕尺寸"),p=c.instant("Resolution"),q=c.instant("全部"),r=({"黑屏&白屏":c.instant("黑屏&白屏"),"启动失败":c.instant("启动失败"),"闪退":c.instant("闪退"),"数据异常":c.instant("数据异常"),"卡死":c.instant("卡死"),"安装失败":c.instant("安装失败"),"链接异常":c.instant("链接异常"),"其他异常":c.instant("其他异常"),"程序异常":c.instant("程序异常"),"卡顿":c.instant("卡顿"),"UI异常":c.instant("UI异常"),"连接异常":c.instant("连接异常")},function(){var a={level:k,vendor:l,os:m,ram:n,screen_size:o,cpu:"CPU",resolution:p,gpu:"GPU"};i.device_distributions=[],i.device_distributionsPageSizes={},_.each(a,function(a,b){i.compatibility.device_distributions[b]&&(i.compatibility.device_distributions[b].key=b,i.compatibility.device_distributions[b].title=a,i.device_distributions.push(i.compatibility.device_distributions[b]),i.device_distributionsPageSizes[b]=j)}),i.num={},_.each(i.compatibility.device_distributions,function(a,b){i.num[b]=0;for(var c=j;ci.theTopOne.count&&(i.theTopOne=a)}),i.theTopOne.count<=i.subtypes.e_r_screen_lag.count+i.subtypes.e_r_frozen_screen.count&&(i.theTopOne={count:i.subtypes.e_r_screen_lag.count+i.subtypes.e_r_frozen_screen.count,name:c.instant("卡顿&卡死")})});i.subtaskExceptionList=i.compatibility.subtask_exception_list,i.value=q,i.refreshList=function(a){var b=[];a?(_.each(i.compatibility.subtask_exception_list,function(c){c.result_subtype_json[0].key===a.key&&b.push(c)}),i.value=a.name):(b=i.compatibility.subtask_exception_list,i.value=q),i.subtaskExceptionList=b,h.isGame||(i.value=i.value.replace(/手游|游戏/g,"应用"))},i.searchTheTopName=function(a){var b={};return b.types={3:{count:0}},_.each(a,function(a){a.types[3].count>b.types[3].count&&(b=a)}),b.name},i.exceptionListLoad=function(a){i.exceptionListSize=a},a.open=function(a,b,c){b[c].types[3].count&&openModal(a,b,c)},openModal=function(a,d,e){var f={};f.list=[],devices=g.data,f.name=a,_.each(devices.exception_list,function(a){if(d.title===m&&(a.device_model[d.key]=a.device_model[d.key].substr(0,10)),"CPU"===d.title){var b=a.device_model[d.key];b=b.split(" "),a.device_model[d.key]=b[0]}if(a.device_model[d.key].toLowerCase()===d[e].name.toLowerCase())f.list.push(a);else if(d[e].name===c.instant("Others")){for(var g=0;g=0&&a.succ_rate<50?d.data[0].y++:a.succ_rate>=50&&a.succ_rate<60?d.data[1].y++:a.succ_rate>=60&&a.succ_rate<70?d.data[2].y++:a.succ_rate>=70&&a.succ_rate<80?d.data[3].y++:a.succ_rate>=80&&a.succ_rate<90?d.data[4].y++:a.succ_rate>=90&&a.succ_rate<=100&&d.data[5].y++}),d})}var d={yTitle:"机型数(台)",categories:["0-50%","50%-60%","60%-70%","70%-80%","80%-90%","90%-100%"]};return{getTestcases:b,getDistribution:c}}a.$inject=["DataService"],angular.module("report").factory("Testcaseservice",a)}(),function(){angular.module("report").config(["$stateProvider",function(a){a.state("report_v3.testcase",{url:"/testcase",title:"用例列表",target:"Testcase",templateUrl:"apps/report/testcase/templates/testcase.html",controller:"TestcaseCtrl",controllerAs:"vm",resolve:{testcases:["$stateParams","Testcaseservice",function(a,b){return b.getTestcases(a.key)}],distribution:["$stateParams","Testcaseservice",function(a,b){return b.getDistribution(a.key)}]}})}])}(),function(){function a(a,b,c,d,e,f){function g(a){var c=e.getFilters("testcaseId");c.testcaseId.selected.push(a),b.go("report_v3.devices",{filters:c})}function h(a){i.pageSize=a?i.loadCount:i.pageSize+i.loadCount}var i=this;i.pageSize=i.loadCount=50,i.loadMore=h,i.testcases=c.testcases,i.testcaseStatistic=c.testcase_statistic,i.goDevices=g,i.sortField={},i.chartData=d,a.$on("clickedColumn",function(a,c){var d=e.getFilters("succRate");d.succRate.selected.push(c.category),b.go("report_v3.devices",{filters:d})})}a.$inject=["$scope","$state","testcases","distribution","DevicesFiltersService","Testcaseservice"],angular.module("report").controller("TestcaseCtrl",a)}(),function(){function a(a,b,c){function d(b,c){return j?a.when(j):f(b,c).then(function(){return a.when(j)})}function e(b,c){return l.length?a.when(l):g(b,c).then(function(){return _.forEach(k,function(a){l.push(i(a))}),a.when(l)})}function f(a,b){return c.getSubtask(a,b).then(function(a){j=a,h()})}function g(b,c){return k?a.when(k):f(b,c).then(function(){return a.when(k)})}function h(){return k=_.chain(j.problem_list).map(function(a){return a.images}).flatten().uniq().value()}function i(a){var b,c,d=_.findIndex(j.images,{filePath:a});return d>0&&j.performances.length>0&&(c=_.min([_.sortedIndexBy(j.performances,{time:j.images[d].time},"time"),j.performances.length-1]),b=_.clone(j.performances[c]),_.each(b,function(a,c){"totalFlow"==c||"systemRamAvailable"==c?(a/=1024,b[c]=a>=1?Math.floor(a):parseFloat(a.toFixed(2))):"cpu"==c&&(b[c]=parseFloat(a).toFixed(2))})),b}var j,k,l=[];return{getSubtask:d,getExceptionImgs:g,getExceptionPerformances:e}}function b(a){function b(a,b){var c=_.cloneDeep(_.pick(d,b));return c.topScenarios.data=_.chain(a).map(function(a){return c.topScenarios.handle(a)}).uniq().value(),c}function c(a){return _.cloneDeep(_.pick(d,a))}var d={topScenarios:{name:"场景",data:[],selected:[],handle:function(a){return a.top_scenario||"无场景"},filterFunc:function(a){return this.selected.indexOf(this.handle(a))!=-1}},type:{name:"严重等级",data:["致命","严重","一般","提示"],selected:[],handle:function(b){return a.severityType[b.severity]},filterFunc:function(a){return this.selected.indexOf(this.handle(a))!=-1}},result:{name:"问题类型",isHide:!0,data:["安装失败","启动失败","闪退","黑屏/白屏","卡死/卡顿","连接异常","UI异常","功能兼容性异常","其他异常"],selected:[],handle:function(b){var c=_.keyBy(a.sortedExceptionTypes,"id");return c[b.subtype_id]&&c[b.subtype_id].name},filterFunc:function(a){return this.selected.indexOf(this.handle(a))!=-1}}};return{getFilters:c,initFilters:b}}function c(a,b){function c(c){return f[c]?a.when(f[c]):b.get(c,{withCredentials:!1,headers:{"Content-Type":void 0,Token:void 0}}).then(function(a){var b=_.split(a.data,"\n");b[b.length-1]||b.pop();var d=_.map(b,function(a,b){if(config.isIos)return{index:b+1,text:_.trim(a)};var c={},d=[];return d=a.match(/(\d{1,2})-(\d{1,2})\s*(\d{1,2}):(\d{1,2}):(\d{1,2})\s*\.(\d{1,6})\s*([A-Z])\/(.+)\s*\(\s*(\d+)\):(.*)/),d&&(c.index=b+1,c.time=d[1]+"-"+d[2]+" "+d[3]+":"+d[4]+":"+d[5],c.level=d[7],c.tag=d[8],c.pid=d[9],c.text=_.trim(d[10])),c});return f[c]=d})}function d(){return g}function e(a,b,c){var d,e=[];return a&&(a=a.replace(/\(/g,"\\(").replace(/\)/g,"\\)"),d=c?new RegExp(a):new RegExp(a,"i"),_.each(b,function(a,b){var c=a.text.match(d);c&&e.push({filtedIndex:b,logIndex:a.index})})),e}var f={},g=[{text:"fatal","short":"F"},{text:"error","short":"E"},{text:"warn","short":"W"},{text:"info","short":"I"},{text:"debug","short":"D"}],h={getMiniLogs:c,searchMiniLogs:e,getLevels:d};return h}a.$inject=["$q","$stateParams","DataService"],b.$inject=["REPORT_ENUM"],c.$inject=["$q","$http"],angular.module("report").factory("SubtaskService",a).factory("SubtasksFiltersService",b).factory("LogsService",c)}(),function(){angular.module("report").config(["$stateProvider",function(a){a.state("report_v3.device",{url:"/device/:deviceKey",title:"机型信息",target:"device",templateUrl:"apps/report/subtask/templates/device.html",controller:"deviceCtrl",controllerAs:"vm",resolve:{device:["$stateParams","DataService",function(a,b){return b.getDevice(a.key,a.deviceKey)}]}}).state("report_v3.subtask",{url:"/subtask/:subtaskKey",title:"用例信息",target:"subtask",templateUrl:"apps/report/subtask/templates/subtask.financial.html",controller:"subtaskCtrl",controllerAs:"vm",resolve:{subtask:["SubtaskService","$stateParams",function(a,b){return a.getSubtask(b.key,b.subtaskKey)}]},params:{problemIndex:""}}).state("report_v3.subtask.performance",{url:"/performance",title:"用例信息",target:"Performance",templateUrl:"apps/report/subtask/templates/performance.html",controller:"subtaskPerformanceCtrl",controllerAs:"vm",resolve:{exceptionPerformances:["SubtaskService","$stateParams",function(a,b){return a.getExceptionPerformances(b.key,b.subtaskKey)}]}}).state("report_v3.subtask.logs",{url:"/logs/:scrollToLog",title:"用例信息",target:"Logs",templateUrl:"apps/report/subtask/templates/logs.html",controller:"subtaskLogsCtrl",controllerAs:"vm",params:{isGoToExceptionLogLine:!1}}).state("report_v3.subtask.snapshots",{url:"/snapshots",title:"用例信息",target:"Snapshots",controller:"snapshotsCtrl",controllerAs:"vm",templateUrl:"apps/report/subtask/templates/snapshots.html",resolve:{exceptionImgs:["SubtaskService","$stateParams",function(a,b){return a.getExceptionImgs(b.key,b.subtaskKey)}]}})}])}(),function(){function a(a){return{link:function(b,c){function d(){_.isNumber(g.index)&&a(function(){var a,b=$(".log-index-"+g.index,c);0!=b.length&&(a=b.offset().top-$("li",c).first().offset().top-50,g.withAnimation?(g={},c.stop().animate({scrollTop:a})):c.scrollTop(a))})}function e(){if(!g.withAnimation){var a=c.height(),d=c.get(0).scrollHeight,e=c.scrollTop();0==e?b.$apply(function(){g={index:b.vm.logs.data[0].index,withAnimation:!1},b.vm.logs&&b.vm.logs.loadPrevious()}):d-a<=e&&b.$apply(function(){b.vm.logs&&b.vm.logs.loadNext()})}}function f(a){var c,e;g={index:a.logIndex,withAnimation:!0},a.filtedIndex>=b.vm.logs.begin?a.filtedIndex<=b.vm.logs.begin+b.vm.logs.size-30?d():(c=b.vm.logs.begin,e=a.filtedIndex-b.vm.logs.begin+30):(c=a.filtedIndex-10,e=b.vm.logs.size-c+b.vm.logs.begin),_.isNumber(c)&&b.vm.logs&&b.vm.logs.go(c,e)}var g={};c.scroll(e),b.$on("firstDom.complete",d),b.$on("lastDom.complete",d),b.$on("markLog",function(a,b){f(b)})}}}function b(){return{link:function(a,b){a.$watch("$last",function(b){b&&a.$emit("lastDom.complete")}),a.$watch("$first",function(b){b&&a.$emit("firstDom.complete")})}}}function c(a){return{link:function(a,b,c){function d(){var d=b.height(),e=b.get(0).scrollHeight,f=b.scrollTop();e-d<=f&&a.vm.snapshotsLoadTotal0)if(e=$(".snapshot",c).first().outerHeight(),c[0].scrollHeight-1?l.currentFilterLevels.splice(b,1):l.currentFilterLevels.push(a)}l.logs&&l.logs.changeFilter("level",l.currentFilterLevels.length?l.currentFilterLevels:["no-no-no"])}function g(){l.appPidChecked=!l.appPidChecked,l.appPidChecked?l.logs.changeFilter("pid",o):l.logs.deleteFilter("pid")}function h(){l.isCaseSensitive=!l.isCaseSensitive}function i(a){if(n){var b=_.find(a,function(a,b){return a.text&&n.indexOf(a.text)>-1});return b||(b=a[a.length-1]),b}}function j(a){13==(window.event?a.keyCode:a.which)&&(l.marks=d.searchMiniLogs(l.searchText,l.logs.filteredData,l.isCaseSensitive),l.marks.length?(l.showSearchControlled=!0,l.searchError=!1,l.goMarkLog(0)):(l.showSearchControlled=!1,l.searchError=!0))}function k(b){l.currentMarkIndex=b,b<0?l.currentMarkIndex=l.marks.length-1:b==l.marks.length&&(l.currentMarkIndex=0),a.$emit("markLog",l.marks[l.currentMarkIndex])}var l=this,m=c.mini_log_url,n=_.trim(c.raw_exception_desc),o=m.substring(m.indexOf("mini_")+"mini_".length,m.length-".log".length).split("_");l.subtask=c,l.exceptionLog={},l.isCaseSensitive=!1,l.levels=d.getLevels(),l.allLevelValues=["F","E","W","I","D"],l.currentFilterLevels=_.clone(l.allLevelValues),l.appPidChecked=!1,l.changeLevel=f,l.changeAppPid=g,l.changeCaseSensitive=h,l.searchMiniLogs=j,l.goMarkLog=k,e()}function e(a,b,c,d){function e(a){return h.exceptionImgs.indexOf(a)!=-1}function f(a){$.fancybox(h.images,{index:a,loop:!1})}function g(){if(h.exceptionImgs[0]){var a=_.findIndex(h.images,{href:h.exceptionImgs[0]}),b=5;return h.rowNumber=Math.ceil((a+1)/b),h.rowNumber<2&&(h.rowNumber=2),(h.rowNumber+1)*b}return h.loadSize}var h=this;h.loadSize=10,h.isApp="应用"==c.test_app_type,h.showFancybox=f,h.images=_.map(c.images,function(a){return{href:a.filePath,title:a.time,helpers:{title:{type:"inside"}}}}),h.exceptionImgs=b.problemIndex?c.problem_list[b.problemIndex].images:d,h.snapshotsLoadTotal=g(),h.isExceptionImage=e}a.$inject=["$scope","device","REPORT_ENUM"],b.$inject=["$scope","subtask","REPORT_ENUM"],c.$inject=["$scope","exceptionPerformances"],d.$inject=["$scope","FrontendPagination","subtask","LogsService"],e.$inject=["$scope","$stateParams","subtask","exceptionImgs"],angular.module("report").controller("deviceCtrl",a).controller("subtaskCtrl",b).controller("subtaskPerformanceCtrl",c).controller("subtaskLogsCtrl",d).controller("snapshotsCtrl",e)}(),function(){function a(a,b,c,d,e){function f(a){return a=a.replace("VERSION",v),t[a]?c.when(t[a]):b.get(a,{params:u}).then(function(b){return t[a]=b})}function g(b){return f("/api/task/VERSION/"+b+"/overview/").then(function(a){return a.data}).then(function(b){return d.dataVersion=b.data_version,d.isIos=a.isIos="ios"==b.os,a.isMultipleTask=b.task_count>1,b})}function h(a){return f("/api/task/"+a+"/VERSION/compatibility/").then(function(a){return a.data})}function i(a){return f("/api/task/VERSION/"+a+"/performance/").then(function(a){return a.data})}function j(a){return f("/api/task/VERSION/"+a+"/testcases/").then(function(a){return a.data})}function k(a){return f("/api/task/VERSION/"+a+"/devices/").then(function(a){return _.forEach(a.data,function(a){var b=a.device_model.os.split(".");a.device_model.filterOs=b[0]+"."+b[1],a.device_model.filterCpu=a.device_model.cpu.split(" ")[0]}),a.data})}function l(a,b){return f("/api/task/VERSION/"+a+"/device/"+b+"/").then(function(a){return a.data})}function m(a){return f("/api/task/"+a+"/VERSION/subtasks/").then(function(a){return a.data.subtasks})}function n(a,b){return f("/api/task/VERSION/"+a+"/subtask/"+b+"/").then(function(a){return a.data})}function o(a){return f("/api/task/VERSION/"+a+"/statistics/").then(function(a){return a.data})}function p(a){return f("/api/task/VERSION/"+a+"/problems/").then(function(a){return a.data})}function q(a){return f("/api/task/VERSION/"+a+"/test_steps/").then(function(a){return a.data.test_steps})}function r(a){return f("/api/task/VERSION/"+a+"/offline/url/").then(function(a){return a.data.url})}function s(a){return d.urls.ct+"api/task/summary_report/"+a+"/export/excel/"}var t={},u={},v="summary_report";return d.isNoCache&&(u={_:(new Date).getTime()}),{reportFetch:f,getOverview:g,getCompatibility:h,getTestcases:j,getStatistics:o,getPerformance:i,getDevices:k,getDevice:l,getSubtasks:m,getSubtask:n,getProblems:p,getTestSteps:q,getReportShareURL:r,getExcelExportURL:s}}a.$inject=["$rootScope","$http","$q","config","$state"],angular.module("report").factory("DataService",a)}(),function(){function a(a){return{}}a.$inject=["DataService"],angular.module("report").factory("PerformanceService",a)}(),function(){angular.module("report").config(["$stateProvider",function(a){a.state("report_v3.performance",{url:"/performance",title:"性能分析",target:"Performance",templateUrl:"apps/report/performance/templates/performance.financial.html",controller:"PerformanceCtrl",controllerAs:"vm",resolve:{performance:["$stateParams","DataService",function(a,b){return b.getPerformance(a.key)}],overview:["$stateParams","DataService","config",function(a,b,c){return b.getOverview(a.key)}]}})}])}(),function(){function a(a,b,c,d,e,f,g){var h=this;h.performance=e,h.perfIndustryTop=h.performance.industry_performance_top,h.perfIndustryAvg=h.performance.industry_performance_avg,h.perfTaskAvg=h.performance.task_performance_avg,h.wordHelpText=g.wordHelpText,h.taskKey=b.key,h.btn=[],h.hasMoreOptimizeList=8==h.performance.optimize_subtypes.length;var i=function(a,b){return a=a.split(b),a.length>1&&a.pop(),a=a.join()},j=function(){var a=["Booting Delay ","CPU Utilization ","Internal Storage Utilization ","Data Traffic ","Temperature ","Frame Rate "];({"Data Traffic ":d.instant("Data Traffic"),"Booting Delay ":d.instant("Booting Delay"),"CPU Utilization ":d.instant("CPU Utilization"),"Internal Storage Utilization ":d.instant("Internal Storage Utilization"),"Temperature ":d.instant("Temperature"),"Frame Rate ":d.instant("Frame Rate")});if(h.optimize_subtypes=[],_.each(a,function(a,b){_.each(h.performance.optimize_subtypes,function(c){var d=i(c.code,"(");a===d&&(h.optimize_subtypes.push(c),h.optimize_subtypes[b].newcode=i(h.optimize_subtypes[b].code,"("),h.optimize_subtypes[b].iconcode=h.optimize_subtypes[b].newcode,h.optimize_subtypes[b].newname=i(i(h.optimize_subtypes[b].name,"("),"["))})}),h.hasMoreOptimizeList=!1,h.hasMoreOptimizeList){var b=["Battery Usage ","GPU Utilization "];_.each(b,function(a,b){b+=6,_.each(h.performance.optimize_subtypes,function(c){var d=i(c.code,"(");a===d&&(h.optimize_subtypes.push(c),h.optimize_subtypes[b].newcode=i(h.optimize_subtypes[b].code,"("),h.optimize_subtypes[b].iconcode=h.optimize_subtypes[b].newcode,h.optimize_subtypes[b].newname=i(i(h.optimize_subtypes[b].name,"("),"["))})})}h.refreshList("Booting Delay ")};h.toFixed=function(a,b){return _.isNumber(a)?parseInt(a*Math.pow(10,b))===a*Math.pow(10,b)?a:a.toFixed(b):0},h.refreshList=function(b){_.each(h.optimize_subtypes,function(c){if(b===c.newcode){var d="";h.btn[c.newcode]="check",h.topFiveList=[],_.each(c.top_devices,function(a){"Electric Traffic "===c.newcode&&(a=$.extend(!0,{},a),a.i_data_traffic=a.i_data_traffic/100*3),h.topFiveList.push(a)}),_.each(h.topFiveList,function(a){h.topFiveSequence="-data","Booting Delay "===b||"Install Delay "===b?(a.data=a.i_boot_delay,d="ms"):"CPU Utilization "===b||"GPU Utilization "===b?(a.data=a.i_cpu_utilization,d="%"):"Frame Rate "===b?(a.data=a.i_frame_rate,d="fps",h.topFiveSequence="data"):"Internal Storage Utilization "===b?(a.data=a.i_mem_utilization,d="kb"):"Data Traffic "===b?(a.data=a.i_data_traffic/1024,d="kb"):"Electric Traffic "===b?(a.data=a.i_data_traffic/1024,d="mAh"):"Temperature "===b&&(a.data=a.i_temperature,d="°C")}),h.list_name=c.listname||c.name,h.optimize_subtype_name=i(h.list_name,"["),h.list_coverage=c.coverage,h.chartData={yTitle:"设备数(台)",categories:[],data:[]};var e=["0~100","100~200","200~300","300~400","400以"];_.each(h.performance.performance_distributions,function(a){a[2]===c.code&&("Electric Traffic "==c.newcode&&(a=a.concat(),a[0]=e[h.chartData.length]),h.chartData.categories.push(a[0]),h.chartData.data.push(a[1]))}),a.$broadcast("chart:update",h.chartData)}else h.btn[c.newcode]="uncheck"})},j()}a.$inject=["$scope","$stateParams","$state","$translate","performance","config","REPORT_ENUM"],angular.module("report").controller("PerformanceCtrl",a)}(),function(){angular.module("report").config(["$stateProvider",function(a){a.state("report_v3",{url:"/report_v3/:key",target:"Report",templateUrl:"apps/report/templates/report.html",controller:"ReportHomeCtrl",controllerAs:"vm",resolve:{overview:["$stateParams","DataService","config",function(a,b,c){return b.getOverview(a.key)}]}})}]).constant("REPORT_ENUM",{wordHelpText:{InstallFailure:"应用在某款手机上进行安装操作,但是没有安装成功。",bootFailure:"应用安装成功,但是无法启动,或者启动后马上自动退出。判断标准:启动后,检测应用画面是否可见。",crash:"在应用运行过程中,程序崩溃导致意外退出。判断标准:检测应用主进程是否存在。",screenLagFrozen:"在应用运行过程中,应用不流畅,画面切换卡屏,主要原因是cpu或者内存占用过高,需要开发商进行优化。",frozenScreenLagFrozen:"手机系统无法正常运行, 不接受输入事件, 但是应用没有闪退, 应用触发了手机的系统级bug, 引起系统崩溃。 ",blackScreen:"应用无法正常运行,没有显示任何ui界面,但是手机系统正常运行。",dataException:"与服务器数据交互异常,但是链接未断开,通常是手机应用与服务器交互接口设计没有经过充分验证,导致异常数据在服务器与手机应用之间流窜。",uiException:"应用UI界面显示紊乱,通常原因是分辨率差异或者应用场景切换逻辑代码书写有误。",connectException:"与服务器的连接发生异常,可能是没有考虑到网络编程中的异常错误处理,或者由于服务器压力过大引发服务器崩溃。",other:"其他异常。",linkException:"与服务器交互链接发生异常,通常由开发人员造成,没有考虑到网络编程中的异常,或者由于服务器压力过大引发服务器崩溃。",programException:"应用运行时出现异常提示或现象。",dataTraffic:"应用运行过程中所消耗的网络流量,主要集中在应用与服务器交互过程中产生的网络消耗。",bootDelay:"对应用发起启动指令,到真正进入应用第一个界面所消耗的时间,反映了应用的加载速度,跟应用资源包大小有关。",cpuUtilization:"应用进程占用的CPU资源,cpu使用率过高,说明应用比较耗电,而且容易卡顿。",memUtilization:"应用进程所消耗的手机内存,内存占用高容易引起应用卡顿甚至闪退。",fileSize:"文件大小。",temperature:"通过android温度传感器获取的手机温度,跟手机cpu占用率成正比。",frameRate:"应用每一秒内刷新的帧数,反映了应用画面流畅程度。"},distributionsType:[{key:"resolution",name:"分辨率"},{key:"screen_size",name:"屏幕尺寸"},{key:"filterCpu",name:"CPU"},{key:"gpu",name:"GPU"},{key:"ram",name:"内存"},{key:"filterOs",name:"系统版本"},{key:"vendor",name:"品牌"}],sortedExceptionTypes:[{name:"安装失败",key:"5da7cc01277175f36c5242ca480ff3407a6978fd",id:2},{name:"启动失败",key:"f205e4512c8a6dec4b1b39338c6f9119f4c777af",id:3},{name:"闪退",key:"a15719d323e66e6f36ad2179c38a575b7bfba5fe",id:4},{name:"黑屏/白屏",key:"84f0a2685de0c8bd3d6445dcf326d20a8f3b0b03",id:6},{name:"卡死/卡顿",key:"9bdde4174bd891af1263839846beb053aedbbae1",id:9},{name:"卡死/卡顿",key:"f0a32464e950b8cea252b7b40ff3bab11a63fef1",id:8},{name:"连接异常",key:"exception.connect",id:50},{name:"UI异常",key:"1d6805716612348cef9f90b1dc4d6df0bd1f76f7",id:5},{name:"功能兼容性异常",key:"exception.functionality",id:53},{name:"其他异常",key:"1f0ca92769d3c6d05085cf9a7d5a29f9510a961d",id:10}],severityType:{0:"致命",10:"严重",20:"一般",30:"提示"}})}(),function(){function a(){return function(a){var b;switch(a){case"F":b="#e31705";break;case"E":b="#ff5c4e";break;case"W":b="#ffaf25";break;case"I":b="#191e25";break;case"D":b="#0070f0"}return b}}angular.module("report").filter("logTextColor",a)}(),function(){function a(a,b,c){function d(){return m}function e(a,b,c){return n.devices=c||n.devices,f(a,j(b.result))}function f(a,b){var c={};_.countBy(n,"device_model."+a);return h(b,a),_.forEach(k(b),function(b,d){c[d]=g(b,a)}),c["合计"]=g(b,a),c}function g(a,b){var c=_.countBy(a,"device_model."+b),d={"其他":{options:[],count:0},"合计":{options:[],count:a.length}};return _.forEach(c,function(a,b){m.indexOf(b)!=-1?d[b]={options:[b],count:a}:(d["其他"].count+=a,d["其他"].options.push(b))}),d}function h(a,b){m=[];for(var c=_.countBy(a,"device_model."+b),d=0;d<4&&!l(c);){var e=i(c);m.push(e.name),delete c[e.name],d++}!l(c)&&m.push("其他")}function i(a){var b={name:"",num:0};return _.forEach(a,function(a,c){a>b.num&&(b.name=c,b.num=a)}),b}function j(a){return a.selected.length?_.filter(n.devices,function(b){return a.filterFunc(b)}):n.devices}function k(a){var b={};return _.forEach(a,function(a){_.forEach(a.problem_list,function(c){b[c.top_scenario]?b[c.top_scenario].indexOf(a)==-1&&b[c.top_scenario].push(a):b[c.top_scenario]=[a]})}),b}function l(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}var m,n={};return{getDistributionsType:d,init:e}}a.$inject=["$q","$stateParams","DevicesService"],angular.module("report").factory("DistributionService",a)}(),function(){angular.module("report").config(["$stateProvider",function(a){a.state("report_v3.exceptions",{url:"/exceptions",title:"问题定位",target:"Exceptions",templateUrl:"apps/report/exceptions/templates/exceptions.finanial.html",controller:"ExceptionsCtrl",controllerAs:"vm",resolve:{problems:["DataService","$stateParams",function(a,b){return a.getProblems(b.key)}],devices:["$stateParams","DevicesService",function(a,b){return b.getExceptionDevices(a.key)}]},params:{filterSelected:""}})}])}(),function(){function a(a,b,c,d,e,f,g,h,i,j,k,l){function m(a){p.currentDistributionType=a||p.currentDistributionType,p.distributions=h.init(p.currentDistributionType,p.resultFilter,j),p.distributionType=h.getDistributionsType()}function n(a,c){if(a){var d=f.getFilters(p.currentDistributionType)[p.currentDistributionType],e={result:p.resultFilter.result,topScenarios:f.getFilters("topScenarios").topScenarios};"合计"!=c&&(e.topScenarios.selected=[c]),d.selected=a.options,e[p.currentDistributionType]=d,b.go("report_v3.devices",{filters:e})}}function o(a){var c=f.getFilters(["topScenarios","subtypeInfo"]);c.topScenarios.selected.push(a.top_scenario),c.subtypeInfo.selected.push(a.subtype_info),b.go("report_v3.devices",{filters:c})}var p=this;if(p.severityType=l.severityType,p.testcases=i.testcase,p.funcErrorsFilterName="funcErrorsFilter",p.functionalityFilters=g.initFilters(i.functionality,["topScenarios","type"]),p.compatibilityFilterName="compatibilityFilter",p.compatibilityFilters=g.initFilters(i.compatibility,["topScenarios","type","result"]),c.filterSelected){var q=p[c.filterSelected.species];c.filterSelected.topScenarios&&q.topScenarios.selected.push(c.filterSelected.topScenarios),c.filterSelected.type&&q.type.selected.push(l.severityType[c.filterSelected.type]),c.filterSelected.result&&q.result.selected.push(c.filterSelected.result),d.hash(c.filterSelected.species),e()}p.functionality=new k({dataStorage:i.functionality,filters:p.functionalityFilters,sortField:{key:""}}),p.compatibility=new k({dataStorage:i.compatibility,filters:p.compatibilityFilters,sortField:{key:""}}),p.resultFilterName="resultFilterName",p.resultFilter=f.getFilters("result"),p.distributionsType=l.distributionsType,p.currentDistributionType="resolution",p.changeDistribution=m,p.changeDistribution(p.currentDistribution),p.goDevicesByDistributions=n,p.goDevicesByCompatibility=o,a.$on("filtersChange",function(a,b){switch(b){case p.funcErrorsFilterName:p.functionality.refreshDataByFilter();break;case p.compatibilityFilterName:p.compatibility.refreshDataByFilter();break;case p.resultFilterName:p.changeDistribution()}})}a.$inject=["$scope","$state","$stateParams","$location","$anchorScroll","DevicesFiltersService","SubtasksFiltersService","DistributionService","problems","devices","FrontendPagination","REPORT_ENUM"],angular.module("report").controller("ExceptionsCtrl",a)}(),function(){function a(){return{scope:{chartData:"="},link:function(a,b){var c=a.chartData,d=200,e=_.find(c,function(a){return a[1]>0});e||(e=["","没有数据"]),b.highcharts({chart:{type:"pie",width:d,height:d},title:{text:''+e[1]+"",verticalAlign:"middle",y:-10,useHTML:!0},subtitle:{text:''+e[0]+"",verticalAlign:"middle",useHTML:!0},plotOptions:{pie:{innerSize:110,dataLabels:{enabled:!1},marker:{states:{hover:!1}},colors:["#fa575f","#46ab2c","#fa8557"]},series:{allowPointSelect:!0,cursor:"pointer",point:{events:{click:function(a){$(".chart-count",b).html(this.y),$(".chart-name",b).html(this.name)}}}}},tooltip:{enabled:!1},credits:{enabled:!1},exporting:{enabled:!1},series:[{data:c}]})}}}function b(){return{scope:{chartData:"=",hasClickEvent:"="},link:function(a,b){var c=a.hasClickEvent?{fontWeight:"thin",cursor:"pointer",color:"#0070f0","text-decoration":"underline"}:{fontWeight:"thin"},d=new Highcharts.Chart({chart:{type:"column",width:"1120",renderTo:b.context},legend:{enabled:!1},plotOptions:{series:{stacking:"",pointWidth:100,color:"rgba(0, 112, 240, 0.5)",dataLabels:{enabled:!0,format:"{y}",style:c},allowPointSelect:!0,cursor:"pointer",point:{events:{click:function(b){a.hasClickEvent&&a.$emit("clickedColumn",{category:this.category,y:this.y})}}}}},xAxis:{categories:a.chartData.categories},yAxis:{title:{text:a.chartData.yTitle},min:0},tooltip:{enabled:!1},title:{text:""},series:[{data:a.chartData.data}],credits:{enabled:!1},exporting:{enabled:!1}});a.$on("chart:update",function(a,b){d.update({xAxis:{categories:b.categories},series:[{data:b.data}]})})}}}function c(a){return{scope:{testcases:"="},link:function(b,c,d){function e(){$(this).find(".prompt-text").toggle()}function f(){$(this).find(".prompt-text").hide()}function g(){_.forEach(c.find(".prompt-container"),function(a){var c=$(a);testcase=_.find(b.testcases,{id:c.data("testcaseId")}),testcase&&(c.text(testcase.code),testcase.desc&&c.append("
    "+testcase.desc+"
    "))})}a(g),c.find(".prompt-container").off("click mouseleave").on("click",e).on("mouseleave",f)}}}c.$inject=["$timeout"],angular.module("report").directive("reportPieChart",a).directive("columnChart",b).directive("tbShowDesc",c)}(),function(){function a(a,b,c){function d(a){return b.getDevices(a).then(function(a){return h=a,i=_.filter(h,function(a){return 100!=a.succ_rate}),c.initFilters(h),h})}function e(b){return h.length>0?a.when(i):j.getDevices(b).then(function(){return a.when(i)})}function f(b,c,d){var e={data:[],title:c.name};return j.getExceptionDevices(b).then(function(b){return _.each(b,function(a){if(a.device_model[d.filterKey].indexOf(c.name)>-1)e.data.push(a);else if("其他"===c.name){for(var b=0;b-1)return!0;e.data.push(a)}}),a.when(e)})}function g(a,b,c){j.matchDevices(a,b,c).then(function(a){_openModal(a)})}var h=[],i=[],j={getDevices:d,getExceptionDevices:e,showDevices:g,matchDevices:f};return j}function b(a){function b(a){return a?_.cloneDeep(_.pick(e,a)):_.cloneDeep(e)}function c(a){_.forEach(e,function(b,c){b.data.length||(b.data=_.chain(a).map(function(a){return b.handle(a)}).flatten().uniq().value())})}function d(a,b){var c;return _.forEach(a,function(a){return!(c=b.indexOf(a)>-1)}),c}var e={success:{name:"测试结果",data:["成功","失败"],selected:[],handle:function(a){return 100==a.succ_rate},filterFunc:function(a){return 2==this.selected.length||("成功"==this.selected[0]?this.handle(a):!this.handle(a))}},topScenarios:{name:"场景",isHide:!0,data:[],selected:[],handle:function(a){return _.chain(a.problem_list).map(function(a){return a.top_scenario}).uniq().value()},filterFunc:function(a){return d(this.selected,this.handle(a))}},type:{name:"严重等级",isHide:!0,data:["致命","严重","一般","提示"],selected:[],handle:function(b){return _.chain(b.problem_list).map(function(b){return a.severityType[b.severity]}).uniq().value()},filterFunc:function(a){return d(this.selected,this.handle(a))}},result:{name:"问题类型",isHide:!0,data:["安装失败","启动失败","闪退","黑屏/白屏","卡死/卡顿","连接异常","UI异常","功能兼容性异常","其他异常"],selected:[],handle:function(b){return _.chain(b.problem_list).map(function(b){var c=_.keyBy(a.sortedExceptionTypes,"id");return c[b.subtype_id]&&c[b.subtype_id].name}).uniq().value()},filterFunc:function(a){return d(this.selected,this.handle(a))}},subtypeInfo:{name:"问题摘要",isHide:!0,data:[],selected:[],handle:function(a){return _.chain(a.problem_list).map(function(a){return a.subtype_info}).uniq().value()},filterFunc:function(a){return d(this.selected,this.handle(a))}},vendor:{name:"终端品牌",data:[],selected:[],handle:function(a){return a.device_model.vendor},filterFunc:function(a){return this.selected.indexOf(this.handle(a))!=-1}},filterOs:{name:"系统版本",data:[],selected:[],handle:function(a){return a.device_model.filterOs},filterFunc:function(a){return this.selected.indexOf(this.handle(a))!=-1}},resolution:{name:"分辨率",isHide:!0,data:[],selected:[],handle:function(a){return a.device_model.resolution},filterFunc:function(a){return this.selected.indexOf(this.handle(a))!=-1}},ram:{name:"内存",data:[],selected:[],handle:function(a){return a.device_model.ram},filterFunc:function(a){return this.selected.indexOf(this.handle(a))!=-1}},screen_size:{name:"屏幕尺寸",isHide:!0,data:[],selected:[],handle:function(a){return a.device_model.screen_size},filterFunc:function(a){return this.selected.indexOf(this.handle(a))!=-1}},gpu:{name:"GPU",isHide:!0,data:[],selected:[],handle:function(a){return a.device_model.gpu},filterFunc:function(a){return this.selected.indexOf(this.handle(a))!=-1}},filterCpu:{name:"CPU",isHide:!0,data:[],selected:[],handle:function(a){return a.device_model.filterCpu},filterFunc:function(a){return this.selected.indexOf(this.handle(a))!=-1}},testcaseId:{name:"用例ID",isHide:!0,data:[],selected:[],handle:function(b){return _.chain(b.problem_list).map(function(b){return _.find(a.sortedExceptionTypes,{id:b.subtype_id})&&b.testcase_id}).uniq().value()},filterFunc:function(a){return d(this.selected,this.handle(a))}},succRate:{name:"通过率",isHide:!0,data:["0-50%","50%-60%","60%-70%","70%-80%","80%-90%","90%-100%"],selected:[],handle:function(a){return a.succ_rate>=0&&a.succ_rate<50?this.data[0]:a.succ_rate>=50&&a.succ_rate<60?this.data[1]:a.succ_rate>=60&&a.succ_rate<70?this.data[2]:a.succ_rate>=70&&a.succ_rate<80?this.data[3]:a.succ_rate>=80&&a.succ_rate<90?this.data[4]:a.succ_rate>=90&&a.succ_rate<=100?this.data[5]:void 0},filterFunc:function(a){return this.selected.indexOf(this.handle(a))!=-1}}},f={getFilters:b,initFilters:c};return f}a.$inject=["$q","DataService","DevicesFiltersService"],b.$inject=["REPORT_ENUM"],angular.module("report").factory("DevicesService",a).factory("DevicesFiltersService",b)}(),function(){angular.module("report").config(["$stateProvider",function(a){a.state("report_v3.devices",{url:"/devices",title:"设备列表",target:"Devices",templateUrl:"apps/report/devices/templates/devices.html",controller:"DevicesCtrl",controllerAs:"vm",resolve:{devices:["$stateParams","DevicesService",function(a,b){return b.getDevices(a.key)}]},params:{filters:""}})}])}(),function(){function a(){return{scope:{filters:"=",filterName:"="},templateUrl:"apps/report/devices/templates/filters.html",controllerAs:"vm",bindToController:!0,controller:["$scope",function(a){function b(a){a.isCollapse=!a.isCollapse}function c(b,c){f.isSelected(b,c.selected)?c.selected.splice(c.selected.indexOf(b),1):c.selected.unshift(b),a.$emit("filtersChange",f.filterName)}function d(a,b){return b.indexOf(a)>=0}function e(){return _.findKey(f.filters,function(a){return a.selected.length>0})}var f=this;f.collapse=b,f.toggleFilter=c,f.isSelected=d,f.hasFilterSelected=e}]}}angular.module("report").directive("reportFilters",a)}(),function(){function a(a,b,c,d,e){var f=this;f.isIos=config.isIos,f.osText=f.isIos?"iOS版本":"安卓版本",f.pageSize=f.loadCount=50;var g=e.getFilters();f.filters=_.assign(g,b.filters),b.filters&&!b.filters.succRate&&(f.filters.success.selected=["失败"]),f.devices=new c({dataStorage:d,filters:f.filters,sortField:{key:"result_subtype.name"}}),a.$on("filtersChange",function(){f.devices.refreshDataByFilter()})}function b(a,b,c,d,e){var f=this,g=5;f.devices=e,f.listLength=g,f.taskKey=d.key,f.cancel=function(){c.close()},f.loadMore=function(){f.listLength+=g}}a.$inject=["$scope","$stateParams","FrontendPagination","devices","DevicesFiltersService"],b.$inject=["$scope","$state","$uibModalInstance","$stateParams","devices"],angular.module("report").controller("DevicesCtrl",a).controller("DevicesListCtrl",b)}(),function(){function a(a){function b(b){return a.getProblems(b).then(function(a){var b={},d=_.groupBy(a.compatibility,"top_scenario");return _.forEach(d,function(a,d){b[d]=c(a)}),b["合计"]=c(a.compatibility),b})}function c(a){var b={};return _.forEach(a,function(a){8!=a.subtype_id&&9!=a.subtype_id?b[a.subtype_id]=b[a.subtype_id]?b[a.subtype_id]+a.device_count:a.device_count:b[9]=b[8]=b[8]?b[8]+a.device_count:a.device_count}),b}return{getCompatibilityDistributions:b}}a.$inject=["DataService"],angular.module("report").factory("DashboardService",a)}(),function(){angular.module("report").config(["$stateProvider",function(a){a.state("report_v3.dashboard",{url:"/dashboard",title:"概况",target:"Dashboard",templateUrl:"apps/report/dashboard/templates/dashboard.financial.html",controller:"DashboardCtrl",controllerAs:"vm",resolve:{statistics:["$stateParams","DataService",function(a,b){return b.getStatistics(a.key)}],distributions:["DashboardService","$stateParams",function(a,b){return a.getCompatibilityDistributions(b.key)}]}}).state("report_v3.steps",{url:"/steps",title:"测试流程",target:"Steps",templateUrl:"apps/report/dashboard/templates/test-steps.html",controller:"TestStepCtrl",controllerAs:"vm",resolve:{testSteps:["$stateParams","DataService",function(a,b){return b.getTestSteps(a.key)}]}})}])}(),function(){function a(a,b,c,d,e,f,g){function h(a){var b={};return _.forEach(a,function(a){_.forEach(a.severity,function(a,c){b[c]?b[c]+=a:b[c]=a})}),b}function i(a){k.problems&&(k.choosedProblemIndex=a)}function j(b,c,d,e){var f={species:b,topScenarios:"合计"==c?"":c,type:d,result:e};a.go("report_v3.exceptions",{filterSelected:f})}var k=this;k.isIos=d.isIos,k.severityType=g.severityType,k.overview=c,k.devicesAvgProblemCount=(k.overview.problem_count/k.overview.device_count).toFixed(2),k.chartData=[["问题数",k.overview.problem_count]],k.sortedExceptionTypes=b.getFilters("result").result.data,k.compatibilityDistributions=f,k.compatibilityTypes=_.keyBy(g.sortedExceptionTypes,"name"),k.functionalityStatistics=e.functionality.top_scenarios,k.functionalityTotal=h(k.functionalityStatistics),k.compatibilityStatistics=e.compatibility.top_scenarios,k.compatibilityTotal=h(k.compatibilityStatistics),k.goExceptions=j,k.severity=k.overview.task_severity_map,k.showFancybox=$.fancybox,k.problems=c.top_problems,k.chooseProblem=i,k.chooseProblem(0)}function b(a){function b(a){a.isShowImgs=!a.isShowImgs}var c=this;c.testSteps=_.forEach(a,function(a){a.testcases&&(a.scenarios=_.groupBy(a.testcases,"testcase.top_scenario"))}),c.toggleShowImgs=b}a.$inject=["$state","SubtasksFiltersService","overview","config","statistics","distributions","REPORT_ENUM"],b.$inject=["testSteps"],angular.module("report").controller("DashboardCtrl",a).controller("TestStepCtrl",b)}(),function(){function a(a,b,c,d,e,f){function g(){e.getReportShareURL(c.key).then(function(a){window.prompt(" Ctrl+C 拷贝到粘贴板~ ",a)})}function h(){window.open(e.getExcelExportURL(c.key))}function i(){if(k.canRent){var a=window.open("");f.rentDevice(k.deviceId).then(function(b){a.location.href=b.data.url},function(){a.close()})}}function j(){b.params.deviceKey&&e.getDevice(b.params.key,b.params.deviceKey).then(function(a){k.canRent=a.device_model.rio&&0==a.device_model.rio.status,k.deviceId=a.id}),b.params.subtaskKey&&e.getSubtask(b.params.key,b.params.subtaskKey).then(function(a){k.deviceName=a.device_model.name})}var k=this;k.isOffline=config.isOffline,k.isIos=config.isIos,k.overview=d,k.rentDevice=i,k.shareReportUrl=g,k.exportReportAsExcel=h,k.appName=k.overview.name+" "+k.overview.app_version,a.$on("$stateChangeSuccess",function(a,c,d,e,f){"Report"==c.target&&b.go(".dashboard"),k.childStateName=c.title,k.isSteps="测试流程"==c.title,k.isDevice="机型信息"==c.title,k.isSubtask="用例信息"==c.title,k.isMainPage=!(k.isSteps||k.isDevice||k.isSubtask),j()})}a.$inject=["$scope","$state","$stateParams","overview","DataService","taskService"],angular.module("report").controller("ReportHomeCtrl",a)}(),function(){angular.module("problem",["ui.router","ngAnimate"])}(),function(){function a(a){a.state("problem",{url:"/problem",title:"常见问题",templateUrl:"apps/problem/index.html"})}a.$inject=["$stateProvider"],angular.module("problem").config(a)}(),function(){angular.module("header",["ui.router","ngAnimate"])}(),function(){function a(){return{link:function(a,b){$(b).on("click",function(){var a=100,c=$(b).find(".apps-menu"),d=50*c.children("li").length,e=$(window).height();d+a>e?c.css({width:"260px",height:e-a+"px"}):c.css({width:"242px",height:"auto"})})}}}angular.module("header").directive("tbAppsMenuScrollBar",a)}(),function(){function a(a,b,c,d,e,f,g,h,i,j){function k(){f.createApp({data:b.$parent.vm.dropDownApps,source:function(){return g.getTestAppList()},callback:function(){c.go("tasks",{},{reload:!0})}})}function l(a){document.cookie=r+"=;path=/;domain=.testbird.com;expires=Thu, 01 Jan 1970 00:00:00 UTC",window.location=h.urls.dt}function m(a){h.isOffline&&(window.location=h.urls.dt)}function n(a){window.open(h.urls.dt+(a||""))}function o(){e.open({templateUrl:"apps/header/legacy.entry.html",size:"sm",controller:["$scope","$uibModalInstance",function(a,b){a.dismiss=function(){b.dismiss()}}]})}function p(){c.current.name.indexOf("report_v3")>-1?j.getOverview(d.key).then(function(a){c.go(a.task_key?"tasks":"task-v2",{key:a.app_key})}):d.subtaskKey?i.getSubtaskDetail(d.subtaskKey).then(function(a){c.go("tasks",{key:a.app_key})}):i.getSubtasks(d.key).then(function(a){c.go("tasks",{key:a.app_key})})}function q(a){c.go(c.current.name,{key:a})}var r="dt_session",s=this;s.model={isGame:h.isGame,isOffline:h.isOffline,isLab:h.isLab()},c.current.name.indexOf("report")!=-1||c.current.name.indexOf("subtask")!=-1?(s.model.isReport=!0,s.model.appName=a.appName):s.model.isReport=!1,s.isScenarioReport="v3"==h.dataVersion,s.urls=h.urls,s.toState=q,s.gotoTasks=p,s.createApp=k,s.gotoLegacySite=o,s.redirect=n,s.home=m,s.logout=l}a.$inject=["$rootScope","$scope","$state","$stateParams","$uibModal","AppClientService","taskService","config","reportV2Service","DataService"],angular.module("header").controller("headerCtrl",a)}(),angular.module("app").factory("foundationService",["$http","config","TaskV2Service",function(a,b,c){function d(a){a.data;return angular.forEach(a.data,function(b,c){var d=[];angular.forEach(b,function(a){d.push({value:a})}),a.data[c]=d},this),a.data}return{getDeviceAttrList:function(b){return a.get("/api/foundation/device/attr/",{params:{os:b}}).then(d)},getDevicesByFilter:function(b){return a.post("/api/foundation/device/search/",{locale:b.locale,name:b.name,os:b.os,attr_filters:_.filter(b.attr_filters,function(a){return a.values.length})})},getSysTagList:function(c){return a.get("/api/foundation/tag/list/",{params:{register_type:b.register_type,access_locale:b.locale,os:c}}).then(function(a){var b={"热门终端":[],"硬核联盟":[]};return _.forEach(a.data,function(a){"硬核联盟"==a.tag_group?b["硬核联盟"].push(a):b["热门终端"].push(a)}),b})},getSysTagDeviceList:function(b){return a.get("/api/foundation/tag/"+b+"/device/")}}}]),angular.module("app").factory("customerService",["$http","config",function(a,b){return{getCustomTagList:function(b){return a.get("/api/customer/device_set/",{params:{os:b}}).then(function(a){return a.data})},updateCustomerInfo:function(){return a.get("/api/customer/detail/").then(function(a){ $.extend(b,a.data)})}}}]),function(){function a(a){function b(){c.hidden=document.hidden,a.$broadcast("visibilitychange",c.hidden)}var c={hidden:!1};return document.addEventListener("visibilitychange",b,!1),c}function b(a,b,c,d,e,f,g){function h(a){return j("app",a)}function i(a){return j("release",a)}function j(e,h){function i(){return b.when((h.source||angular.noop)()).then(function(a){return a&&a.length==h.data.length?b.reject():a})}var j;k.listeners[e]&&k.listeners[e](),j=d.open({templateUrl:"apps/app/app.prompt.html",backdrop:"static",size:"sm",controller:["$scope","$uibModalInstance",function(a,b){a.cancel=function(){b.dismiss()},a.close=function(){b.close()}}]}),j.result.then(function(a){return a?h.callback(a):(f.show(),void c(function(){i().then(function(a){h.callback(a)})["finally"](function(){f.hide()})},2e3))})["finally"](function(){k.listeners[e]()}),k.listeners[e]=a.$on("visibilitychange",function(a,b){b||c(function(){i().then(function(a){j.close(a)})},1e3)}),window.open(g.urls.dt+k.urls[e].replace("${key}",h.key))}var k={};return k.createApp=h,k.createRelease=i,k.listeners={},k.urls={app:"/home/upload",release:"/home/dashboard/${key}/app/releases"},k}a.$inject=["$rootScope"],b.$inject=["$rootScope","$q","$timeout","$uibModal","PageVisibilityService","spinner","config"],angular.module("app").factory("PageVisibilityService",a).factory("AppClientService",b)}(),angular.module("app").run(["$templateCache",function(a){"use strict";a.put("apps/app/app.prompt.html",'
    \n

    请在新打开的页面上创建应用或版本

    \n

    新建完成前请不要关闭此页面,您在新页面创建成功后本页面会自动刷新。

    \n \n
    \n'),a.put('apps/header/header-report.html',"
    此报告版权归蒲公英所有
    "),a.put("apps/header/header.html",'
    \n
    \n
    \n \n
    \n

    \n {{ vm.taskName }}\n \n

    \n
    \n \n \n \n
    \n \n 我的消息\n
    \n
    \n \n
    \n'),a.put("apps/header/legacy.entry.html",'
    \n \n \n
    \n'),a.put("apps/problem/index.html",'
    \n
    \n
    \n
    \n

    {{\'常见问题\'|translate}}

    \n
    \n
    {{\'兼容性测试收集什么日志?\'|translate}}
    \n
    {{\'兼容性测试平台收集android日志系统的默认日志adb logcat。默认buffer包括:main、system、crash。不过不能保证所有手机的默认buffer是一样的。当出现程序启动失败或者闪退的时候,我们还会打印bugreport信息。\'|translate}}
    \n \n
    \n
    \n
    {{\'为什么查看不到应用打印的日志?\'|translate}}
    \n
    {{"因为应用通常大多数都是Native实现,android logcat默认不会打印Native的日志。需要通过NDK里面的 \'android/log.h\' 来打印才会在logcat里面看到。"|translate}}
    \n
    \n
    \n
    {{\'为什么用了log.h还是看不到应用日志?\'|translate}}
    \n
    {{\'很可能的原因是LOG LEVEL太低。android logcat默认打印LEVEL INFO以上日志,VERBOSE, DEBUG默认不会打印。所以在使用log方法的时候需要注意LOG_LEVEL参数的设置,需要设置到INFO以上才会打印\'|translate}}
    \n
    \n {{\'附:\'|translate}}\n {{\'loggable 官方文档\'|translate}}\n \n
    \n
    \n
    \n
    {{\'如何分析日志中的meminfo(内存占用信息)?\'|translate}}
    \n
    \n {{\'官方文档:\'|translate}}\n {{\'如何分析程序的内存占用情况\'|translate}}\n \n
    \n\n
    \n
    \n
    {{\'兼容性测试如何判断应用闪退?\'|translate}}
    \n
    {{\'应用运行过程中,兼容性测试平台会检查正在运行的进程信息,当发现被测试的应用进程意外终止,就会判断为应用闪退\'|translate}}
    \n
    \n
    \n
    \n
    '),a.put("apps/report/dashboard/templates/dashboard.financial.html",'
    \n \n
    \n \n
    \n
    \n
    测试终端总数
    \n
    {{ vm.overview.device_count }}
    \n
    \n
    \n
    执行用例数
    \n
    {{ vm.overview.testcase_count }}
    \n
    \n
    \n
    发现问题数
    \n
    {{ vm.overview.problem_count }}
    \n
    \n
    \n
    平均每机型问题数
    \n
    {{ vm.devicesAvgProblemCount }}
    \n
    \n
    \n
    测试步骤
    \n 点击查看\n
    \n
    \n
    \n
    \n
    终端用户流失数
    \n
    {{vm.overview.exception_coverage}} 万
    \n
    \n
    \n 应用用户流失率\n {{vm.overview.task_exception_avg_map.t_r_game_player_turnover_coverage}} %\n
    \n
    \n 可能损失用户(每一百万)\n {{vm.overview.task_exception_avg_map.t_r_game_player_turnover_coverage}} 万\n
    \n
    \n
    帮助客户减少损失(每一百万用户)
    \n
    {{vm.overview.task_exception_avg_map.t_r_game_player_turnover_money}} 万元
    \n
    \n
    \n
    \n \n

    兼容性问题统计

    \n \n \n \n \n \n \n \n \n \n \n \n
    场景/问题类型{{type}}
    {{key}}{{distribution[vm.compatibilityTypes[type].id] || 0 }}
    \n

    兼容性问题严重级别统计

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    场景/问题严重级别致命严重一般提示
    {{item.name}}{{item.severity[key] || 0}}
    合计{{vm.compatibilityTotal[key] || 0}}
    \n
    \n

    功能性问题统计

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    致命严重一般提示
    {{item.name}}{{item.severity[key] || 0}}
    合计{{vm.functionalityTotal[key] || 0}}
    \n
    \n
    \n

    问题TOP

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    问题描述{{vm.problems[vm.choosedProblemIndex].desc}}\n \n
    场景{{vm.problems[vm.choosedProblemIndex].top_scenario}}
    类型{{vm.problems[vm.choosedProblemIndex].type}}
    影响机型数量{{vm.problems[vm.choosedProblemIndex].device_count}}
    示例机型查看
    \n
    \n
    \n

    TestBird测试建议

    \n \n \n \n \n \n \n
    建议{{ $index + 1 }}{{proposal.content}}
    \n
    \n
    '),a.put("apps/report/dashboard/templates/test-steps.html",'
    \n
    \n
    {{step.name + ":" + step.desc}}
    \n
    \n

    {{ key }}

    \n
    \n
      用例说明: {{!case.testcase.desc || case.testcase.desc == "无" ? case.testcase.name : case.testcase.desc}}
    \n {{case.isShowImgs ? "收起" : "展开"}}\n
    \n \n
    \n
    \n
    \n
    \n
    '),a.put("apps/report/devices/templates/devices.html",'
    \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
    终端品牌终端型号测试结果{{ \'Coverage\' | translate }}({{ \'*10k\' | translate }})内存{{ \'CPU\' | translate }}分辨率\n 安卓版本\n 终端类型存储空间报告详情通过率
    \n {{ device.device_model.vendor }}\n \n {{ device.device_model.name }}\n \n {{ device.succ_rate==100 ? "成功":"失败" }}\n \n {{ device.device_model.coverage }}\n \n {{ device.device_model.ram }}\n \n {{ device.device_model.cpu }}\n \n {{ device.device_model.resolution }}\n \n {{ device.device_model.os }}\n \n {{ device.device_model.level }}\n \n {{ device.device_model.sdcard }}\n \n 查看\n {{ device.succ_rate }}%
    \n
    '),a.put("apps/report/devices/templates/filters.html",'
    \n
    已选条件:
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
      \n
    • \n
    \n
    \n
    \n {{ filter.isCollapse ? "收起" : "展开" }}\n
    \n
    '),a.put("apps/report/exceptions/templates/exceptions.finanial.html",'
    \n
    \n

    功能问题列表

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    场景问题描述严重等级示例机型
    {{item.top_scenario}}{{item.subtype_info}}{{vm.severityType[item.severity]}}查看
    \n
    \n

    兼容性问题机型数据分析

    \n
    \n
    问题终端属性:
    \n
    \n
      \n
    • {{item.name}}
    • \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    场景{{type}}合计
    {{key}}{{distribution[type].count || 0}}{{distribution["合计"].count}}
    \n

    一个终端多个存在问题时,在同一场景下只计数一次(包括合计),合计可能小于各场景问题数之和

    \n

    兼容性问题列表

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    场景问题描述用例ID问题类型严重等级机型列表
    {{item.top_scenario}}{{item.subtype_info}}{{item.subtype_type}}{{vm.severityType[item.severity]}}{{item.device_count}}
    \n
    '),a.put("apps/report/performance/templates/performance.financial.html",'
    \n

    性能详情

    \n \n
    \n \n {{ \'受影响用户:\' | translate }}   {{ vm.list_coverage }}{{ \'*10k\' | translate }}\n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {{ \'待优化终端Top5\' | translate }}\n \n {{ vm.list_name }}\n
    \n \n {{ list.device_model_name }}\n \n \n {{ vm.toFixed(list.data, 2) }}\n
    \n
    \n

    {{\'行业指标\'|translate}}{{vm.testAppTypeText|translate}}

    \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 \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
    {{\'性能分类\'|translate}}{{\'行业最优指标\'|translate}}{{\'行业平均指标\'|translate}}本应用指标
    流量[kb]{{vm.perfIndustryTop.i_data_traffic__min/1024|number:0}}{{vm.perfIndustryAvg.i_data_traffic__avg/1024|number:0}}{{vm.perfTaskAvg.i_data_traffic__avg/1024|number:0}}
    启动时延[ms]{{vm.perfIndustryTop.i_boot_delay__min|number:2}}{{vm.perfIndustryAvg.i_boot_delay__avg|number:2}}{{vm.perfTaskAvg.i_boot_delay__avg|number:2}}
    CPU占用率[%]{{vm.perfIndustryTop.i_cpu_utilization__min|number:2}}{{vm.perfIndustryAvg.i_cpu_utilization__avg|number:2}}{{vm.perfTaskAvg.i_cpu_utilization__avg|number:2}}
    内存占用[kb]{{vm.perfIndustryTop.i_mem_utilization__min|number:2}}{{vm.perfIndustryAvg.i_mem_utilization__avg|number:2}}{{vm.perfTaskAvg.i_mem_utilization__avg|number:2}}
    文件大小[MB]{{vm.perfIndustryTop.file_size/1024/1024|number:1}}{{vm.perfIndustryAvg.file_size/1024/1024|number:1}}{{vm.perfTaskAvg.file_size/1024/1024|number:1}}
    温度[℃]{{vm.perfIndustryTop.i_temperature__min|number:2}}{{vm.perfIndustryAvg.i_temperature__avg|number:2}}{{vm.perfTaskAvg.i_temperature__avg|number:2}}
    帧速率[fps]{{vm.perfIndustryTop.i_frame_rate__min|number:0}}{{vm.perfIndustryAvg.i_frame_rate__avg|number:0}}{{vm.perfTaskAvg.i_frame_rate__avg|number:1}}
    安装延时[ms]{{vm.perfIndustryTop.i_install_elapse__min|number:0|emptyReplace:'-'}}{{vm.perfIndustryAvg.i_install_elapse__avg|number:0|emptyReplace:'-'}}{{vm.perfTaskAvg.i_install_elapse__avg|number:0}}
    GPU[%]{{vm.perfIndustryTop.i_gpu_utilization__min|number:0|emptyReplace:'-'}}{{vm.perfIndustryAvg.i_gpu_utilization__avg|number:0|emptyReplace:'-'}}{{vm.perfTaskAvg.i_gpu_utilization__avg|number:0}}
    电量[mAh]{{vm.perfIndustryTop.i_battery_usage__min|number:0|emptyReplace:'-'}}{{vm.perfIndustryAvg.i_battery_usage__avg|number:0|emptyReplace:'-'}}{{vm.perfTaskAvg.i_battery_usage__avg|number:0}}
    \n
    \n
    "), a.put("apps/report/subtask/templates/device.html",'
    \n

    机型信息:

    \n
    \n
    \n

    测试机型:{{ vm.deviceModel.name }}

    \n

    CPU:{{ vm.deviceModel.cpu }}

    \n

    系统版本:{{ vm.deviceModel.os }}

    \n
    \n
    \n

    品牌:{{ vm.deviceModel.vendor }}

    \n

    GPU:{{ vm.deviceModel.gpu }}

    \n

    分辨率:{{ vm.deviceModel.resolution }}

    \n
    \n
    \n

    覆盖人群:{{ vm.deviceModel.coverage }}

    \n

    内存大小:{{ vm.deviceModel.ram }}

    \n

    屏幕大小:{{ vm.deviceModel.screen_size }}寸

    \n
    \n
    \n

    用例信息:

    \n \n
    \n
    \n
    用例总数
    \n
    {{vm.summaryStatistic.total}}
    \n
    \n
    \n
    通过用例数
    \n
    {{vm.summaryStatistic.success.count}}
    \n
    \n
    \n
    未通过用例数
    \n
    {{vm.summaryStatistic.failure.count}}
    \n
    \n
    \n
    \n
    \n
    阻塞用例数
    \n
    {{vm.summaryStatistic.block.count}}
    \n
    \n
    \n
    用例通过率
    \n
    {{vm.succRate}}%
    \n
    \n
    \n

    机型问题列表:

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    问题描述用例ID所属模块问题类型严重等级问题详情
    {{ item.subtype_info}}{{ item.top_scenario}}{{ item.subtype_type}}{{ vm.severityType[item.severity]}}查看详情
    \n
    '),a.put("apps/report/subtask/templates/logs.html",'
    \n \n \n 下载日志\n
      \n
    • \n
      \n \n levels\n \n \n
      \n
      行号
      \n
      时间
      \n
      PID
      \n
      Tag
      \n
      text
      \n
    • \n
    • 正在加载数据,请等待...
    • \n
    • 没有相关日志数据!
    • \n
    \n
      \n
    • \n
      \n
      \n
      \n
      \n
      \n
      \n        
    • \n
    \n
    '),a.put("apps/report/subtask/templates/performance.html",'
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    CPU占有率(%)帧速率(fps)温度(°C)内存占用(kb)流量(kb)GPU(%))可用内存占有(kb)
    问题{{ $index + 1 }} {{ exceptionPerformance.cpu || 0 }} {{ exceptionPerformance.fps || 0 }} {{ exceptionPerformance.temperature || 0 }} {{ exceptionPerformance.ram || 0 }} {{ exceptionPerformance.totalFlow || 0 }} {{ exceptionPerformance.gpuUsage || 0 }} {{ exceptionPerformance.systemRamAvailable || 0 }}
    \n
    '),a.put("apps/report/subtask/templates/profile.html",'
    \n
      \n
    • \n
      终端型号
      \n
      \n
    • \n
    • \n
      分辨率
      \n
      \n
    • \n
    • \n
      CPU型号
      \n
      \n
    • \n
    • \n
      内部存储空间
      \n
      \n
    • \n
    • \n
      GPU型号
      \n
      \n
    • \n
    • \n
      SD存储空间
      \n
      \n
    • \n
    • \n
      内存
      \n
      \n
    • \n
    • \n
      操作系统
      \n
      \n
    • \n
    • \n
      网络
      \n
      WIFI
      \n
    • \n
    • \n
      屏幕尺寸
      \n
      \n
    • \n
    \n
    '),a.put("apps/report/subtask/templates/snapshots.html",'
    \n
    \n
    \n \n
    \n
    \n
    \n
    '),a.put("apps/report/subtask/templates/subtask.financial.html",'
    \n

    问题详情

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    问题描述用例ID所属模块问题类型严重等级
    {{ problem.desc}}{{ problem.top_scenario }}{{ vm.subtask.result_subtype.name }}{{ vm.severityType[vm.subtask.severity]}}
    \n \n
    \n
    '),a.put("apps/report/templates/report.html",'
    \n
    \n
    \n icon\n
    \n

    \n

    \n
    \n \n
    \n
    租用手机
    \n
    \n
    \n

    测试机型:{{ vm.deviceName }}

    \n
    \n
    \n \n
    \n
    '),a.put("apps/report/testcase/templates/testcase.html",'
    \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
    用例ID场景用例标题前置条件测试步骤期望结果机型通过率未通过机型列表
    {{item.top_scenario}}{{item.name}}{{item.pre_condition}}{{item.desc}}{{item.expect_result}}{{vm.testcaseStatistic[item.id].succ_rate}}%\n 查看\n

    \n
    \n \n
    '),a.put("apps/report_v1/compatibility/index.html","
    \n \n
    \n \n \n {{ '问题统计' | translate }}\n \n {{ vm.compatibility.result_json2.types.t_r_exception.count }}\n \n \n \n \n {{ '问题最多为:' | translate}} {{ vm.theTopOne.name|translate }}\n \n {{ vm.theTopOne.count}}\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 \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 {{ '功能点' | translate }}\n \n {{ '安装失败' | translate }}\n \n {{ '启动失败' | translate }}\n \n {{ '闪退' | translate }}\n \n {{ '卡顿&卡死' | translate }}\n \n {{ '黑屏&白屏' | translate }}\n \n {{ 'UI异常' | translate }}\n \n {{ '其他异常' | translate }}\n \n {{ 'Total' | translate }}\n \n {{ 'Coverage' | translate }}\n
    {{ 'Install' | translate }}{{vm.subtypes.e_r_install_failure.count }}------{{ vm.subtypes.e_r_install_failure.count }}{{ vm.subtypes.e_r_install_failure.coverage_count }}{{ '*10k' | translate }}
    {{ 'Launch' | translate }}-{{ vm.subtypes.e_r_boot_failure.count }}-----{{ vm.subtypes.e_r_boot_failure.count }}{{ vm.subtypes.e_r_boot_failure.coverage_count }}{{ '*10k' | translate }}
    {{ 'Run time' | translate }}--{{ vm.subtypes.e_r_crash.count }}{{ vm.subtypes.e_r_screen_lag.count + vm.subtypes.e_r_frozen_screen.count }}{{ vm.subtypes.e_r_black_screen.count }}{{ vm.subtypes.e_r_ui_exception.count }}{{ vm.subtypes.e_r_other.count }}{{ vm.overview.task_exception_avg_map.e_r_beginners_guide_device_count }}{{ vm.overview.task_exception_avg_map.e_r_beginners_guide_coverage_count }}{{ '*10k' | translate }}
    {{ '汇总' | translate }}{{ vm.subtypes.e_r_install_failure.count }}{{ vm.subtypes.e_r_boot_failure.count }}{{ vm.subtypes.e_r_crash.count }}{{ vm.subtypes.e_r_screen_lag.count + vm.subtypes.e_r_frozen_screen.count}}{{ vm.subtypes.e_r_black_screen.count }}{{ vm.subtypes.e_r_ui_exception.count }}{{ vm.subtypes.e_r_other.count }}{{ vm.compatibility.result_json2.types.t_r_exception.count }}{{ vm.compatibility.result_json2.types.t_r_exception.coverage_count }}{{ '*10k' | translate }}
    \n
    \n\n \n
    \n

    \n {{ '不兼容终端分布' | translate }}\n

    \n
    \n
    \n \n
    \n \n {{ device_distribution.title | translate }}\n \n
    \n {{ vm.searchTheTopName(device_distribution) }}{{ '机型问题更为突出' | translate }}\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {{ '机型' | translate }}\n \n {{ '未通过|总台数' | translate }}\n
    \n {{ value.name }}\n 0]\" ng-click=\"open(value.name, device_distribution, key)\">\n {{ value.types[3].count }}|{{ value.count }}\n
    \n"+' \n {{ \'还有\' | translate }}{{ vm.num[device_distribution.key] }}{{ \'台\' | translate }}\n \n \n {{ \'收起\' | translate }}\n \n
    \n
     
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n

    \n {{ \'失败终端问题详细描述\' | translate }}\n

    \n
    \n \n {{ \'问题类型:\' | translate }}\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 {{\'问题类型\' | translate}}\n \n {{\'品牌\' | translate}}\n \n {{\'型号\' | translate}}\n \n {{\'详情\' | translate}}\n
    \n {{ subtaskExceptionList.result_subtype_text[0] }}\n \n {{ subtaskExceptionList.device_model.vendor }}\n \n {{ subtaskExceptionList.device_model.name }}\n \n \n \n
    \n \n {{ \'还有\' | translate }}{{ vm.subtaskExceptionList.length - vm.exceptionListSize }}{{ \'台\' | translate }}\n \n \n {{ \'收起\' | translate }}\n \n
    \n
    \n
    \n'),a.put("apps/report_v1/compatibility/locate.html",'
    \n \n \n \n
    '),a.put("apps/report_v1/devices/index.html","
    \n

    \n {{ '测试终端列表' | translate }}\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 \n \n \n \n \n \n
    \n \n \n {{ \'终端品牌\' | translate }}\n \n \n \n {{ \'终端型号\' | translate }}\n \n {{ \'Coverage\' | translate }}({{ \'*10k\' | translate }})\n \n \n \n \n {{ \'测试结果\' | translate }}\n \n \n \n \n {{ \'Internal storage\' | translate }}\n \n \n \n \n {{ \'CPU\' | translate }}\n \n \n \n \n {{ \'GPU\' | translate }}\n \n \n \n \n {{ \'Resolution\' | translate }}\n \n \n \n \n {{ \'安卓版本\' | translate }}\n \n \n \n \n {{ \'终端类型\' | translate }}\n \n \n \n \n 存储空间\n \n \n \n \n {{ \'终端状态\' | translate }}\n \n \n
    \n {{ subTask.device_model.vendor }}\n \n \n {{ subTask.device_model.name }}\n \n \n {{ subTask.device_model.name }}\n \n \n {{ subTask.device_model.coverage }}\n \n
      \n
    • \n {{result}}\n
    • \n
    \n
    \n {{ subTask.device_model.ram }}\n \n {{ subTask.device_model.cpu }}\n \n {{ subTask.device_model.gpu }}\n \n {{ subTask.device_model.resolution }}\n \n {{ subTask.device_model.os }}\n \n {{ subTask.device_model.level }}\n \n {{ subTask.device_model.sdcard }}\n \n \n \n

    \n {{ subTask.device_model.rio.status | tbDeviceStatusText }}\n

    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n'), a.put("apps/report_v1/devices/rent.html",'
    \n \n \n \n \n
    '),a.put("apps/report_v1/index.html",'
    \n
    \n
    \n
    \n
    \n icon\n
    \n

    \n

    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    {{\'通过率\'|translate}}
    {{vm.passRate}}%
    \n
    \n
    {{\'问题终端数\'|translate}}
    {{vm.types.t_r_exception.count}}
    \n
    \n
    {{\'待优化终端\'|translate}}
    {{vm.types.t_r_need_optimize.count}}
    \n
    \n
    {{\'测试终端总数\'|translate}}
    {{vm.compatibility.device_count}}
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n {{\'终端玩家流失数\'|translate}}\n {{vm.types.t_r_exception.coverage_count}} {{ \'万\'|translate }}\n
    \n
    \n {{\'游戏玩家流失率\'|translate}}\n {{vm.overview.task_exception_avg_map.t_r_game_player_turnover_coverage}} %\n
    \n
    \n {{\'可能损失玩家(每一百万)\'|translate}}\n {{vm.overview.task_exception_avg_map.t_r_game_player_turnover_coverage}} {{\'万\'|translate}}\n
    \n
    \n {{\'帮助客户减少损失(每一百万用户)\'|translate}}\n {{vm.overview.task_exception_avg_map.t_r_game_player_turnover_money}} {{\'万元\'|translate}}\n
    \n
    \n
    \n \n
    \n

    {{\'问题统计\'|translate}}

    \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 \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
    {{\'测试场景\'|translate}}{{\'安装失败\'|translate}}{{\'启动失败\'|translate}}{{\'闪退\'|translate}}{{\'卡顿&卡死\'|translate}}{{\'黑屏&白屏\'|translate}}{{\'UI异常\'|translate}}{{\'连接异常\'|translate}}{{\'其他异常\'|translate}}{{\'不兼容数\'|translate}}{{\'Coverage\'|translate}}
    {{\'Install\'|translate}}{{vm.subTypes.e_r_install_failure.count}} -------{{vm.subTypes.e_r_install_failure.count}} {{vm.subTypes.e_r_install_failure.coverage_count}}{{\'*10k\'|translate}}
    {{\'Launch\'|translate}}-{{vm.subTypes.e_r_boot_failure.count}} ------{{vm.subTypes.e_r_boot_failure.count}} {{vm.subTypes.e_r_boot_failure.coverage_count}}{{\'*10k\'|translate}}
    {{\'Running\'|translate}}--{{vm.subTypes.e_r_crash.count}} {{vm.subTypes.e_r_screen_lag.count+vm.subTypes.e_r_frozen_screen.count}} {{vm.subTypes.e_r_black_screen.count}} {{vm.subTypes.e_r_ui_exception.count}} {{vm.subTypes.e_r_connect.count || \'0\' }} {{vm.subTypes.e_r_other.count}} {{ vm.compTaskAvg.e_r_beginners_guide_device_count}} {{ vm.compTaskAvg.e_r_beginners_guide_coverage_count}}{{\'*10k\'|translate}}
    {{\'汇总\'|translate}}{{ vm.subTypes.e_r_install_failure.count }}{{ vm.subTypes.e_r_boot_failure.count }}{{ vm.subTypes.e_r_crash.count }}{{ vm.subTypes.e_r_screen_lag.count+vm.subTypes.e_r_frozen_screen.count }}{{ vm.subTypes.e_r_black_screen.count }}{{ vm.subTypes.e_r_ui_exception.count }}{{ vm.subTypes.e_r_connect.count || \'0\' }}{{ vm.subTypes.e_r_other.count }}{{ vm.types.t_r_exception.count }} {{vm.types.t_r_exception.coverage_count}}{{\'*10k\'|translate}}
    \n
    \n \n
    \n

    {{\'行业指标\'|translate}}{{vm.testAppTypeText|translate}}

    \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
    {{\'测试场景\'|translate}}{{\'行业最优指标(台)\'|translate}}{{\'行业平均指标(台)\'|translate}}{{\'本游戏指标(台)\'|translate}}
    {{\'安装失败\'|translate}}{{vm.compIndustryTop.e_r_install_failure_text}}{{vm.compIndustryAvg.e_r_install_failure_text}}{{vm.compTaskAvg.e_r_install_failure_text}}
    {{'启动失败'|translate}}{{vm.compIndustryTop.e_r_boot_failure_text}}{{vm.compIndustryAvg.e_r_boot_failure_text}}{{vm.compTaskAvg.e_r_boot_failure_text}}
    {{'Running'|translate}}{{vm.compIndustryTop.e_r_beginners_guide_text}}{{vm.compIndustryAvg.e_r_beginners_guide_text}}{{vm.compTaskAvg.e_r_beginners_guide_text}}
    {{'合计'|translate}}{{vm.compIndustryTop.t_r_exception_text}}{{vm.compIndustryAvg.t_r_exception_text}}{{vm.compTaskAvg.t_r_exception_text}}
    {{'通过测试终端'|translate}}{{vm.compIndustryTop.t_r_success_text}}{{vm.compIndustryAvg.t_r_success_text}}{{vm.compTaskAvg.t_r_success_text}}
    \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 \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
    {{'性能分类'|translate}}{{'行业最优指标'|translate}}{{'行业平均指标'|translate}}{{'本游戏指标'|translate}}
    {{'流量'|translate}}[kb]{{vm.perfIndustryTop.i_data_traffic__min/1024|number:0}}{{vm.perfIndustryAvg.i_data_traffic__avg/1024|number:0}}{{vm.perfTaskAvg.i_data_traffic__avg/1024|number:0}}
    {{'启动时延'|translate}}[ms]{{vm.perfIndustryTop.i_boot_delay__min|number:2}}{{vm.perfIndustryAvg.i_boot_delay__avg|number:2}}{{vm.perfTaskAvg.i_boot_delay__avg|number:2}}
    {{'CPU占用率'|translate}}[%]{{vm.perfIndustryTop.i_cpu_utilization__min|number:2}}{{vm.perfIndustryAvg.i_cpu_utilization__avg|number:2}}{{vm.perfTaskAvg.i_cpu_utilization__avg|number:2}}
    {{'内存占用'|translate}}[kb]{{vm.perfIndustryTop.i_mem_utilization__min|number:2}}{{vm.perfIndustryAvg.i_mem_utilization__avg|number:2}}{{vm.perfTaskAvg.i_mem_utilization__avg|number:2}}
    {{'文件大小'|translate}}[MB]{{vm.perfIndustryTop.file_size/1024/1024|number:1}}{{vm.perfIndustryAvg.file_size/1024/1024|number:1}}{{vm.perfTaskAvg.file_size/1024/1024|number:1}}
    {{'温度'|translate}}[℃]{{vm.perfIndustryTop.i_temperature__min|number:2}}{{vm.perfIndustryAvg.i_temperature__avg|number:2}}{{vm.perfTaskAvg.i_temperature__avg|number:2}}
    {{'帧速率'|translate}}[fps]{{vm.perfIndustryTop.i_frame_rate__min|number:0}}{{vm.perfIndustryAvg.i_frame_rate__avg|number:0}}{{vm.perfTaskAvg.i_frame_rate__avg|number:1}}
    {{'安装延时'|translate}}[ms]{{vm.perfIndustryTop.i_install_elapse__min|number:0|emptyReplace:'-'}}{{vm.perfIndustryAvg.i_install_elapse__avg|number:0|emptyReplace:'-'}}{{vm.perfTaskAvg.i_install_elapse__avg|number:0}}
    {{'GPU'|translate}}[%]1.7617.332.42
    {{'电量'|translate}}[mAh]64886322
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n"),a.put("apps/report_v1/issues/detail.html",'
    \n
    \n
    \n
    \n
    \n

    \n \n \n
    \n
    \n
    {{\'租用手机\'|translate}}
    \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

    {{\'The CPU is the unit responsible for carrying out all instructions of an application and all the necessary instructions for running different subsystems that maintain running the Android OS (multimedia, audio, render, etc.)\'|translate}}

    \n {{\'CPU Usage\'|translate}}\n

    {{\'When the CPU usage is high, the user may experience sluggishness or higher battery usage (among some other symptoms). Since the CPU usage is a shared resource, abuse of CPU usage may prevent other running services work incorrectly, affecting the user experience as the proper functioning of Android (and the applications that run there). With higher levels of instructions, the CPU increases its speed with a consequent increase in use of voltage that causes the battery to drain faster\'|translate}}

    \n {{\'告警阀值\'|translate}}\n

    {{\'CPU 占用最大值>= 70%\'|translate}}

    \n {{\'官方文档\'|translate}}\n \n
    \n
    \n
    \n
    \n \n
    \n
    \n

    {{"Random-access memory (RAM) is one of the most valuable resource in any software development environment, but it\'s even more valuable on several mobile operating system where physical memory is constrained."|translate}}

    \n {{\'Memory Usage\'|translate}}\n

    {{\'To maintain a functional multi-tasking environment, Android sets a fixed limit on the Dalvik heap size for each app. The exact Dalvik heap size limit varies across devices, based on how much RAM the device has available overall. If your app has reached the heap capacity and tries to allocate more memory, it will receive an OutOfMemoryError.\'|translate}}

    \n {{\'告警阀值\'|translate}}\n

    >= 128M

    \n {{\'官方文档\'|translate}}\n \n
    \n
    \n
    \n
    \n \n
    \n
    \n

    {{"When building an application, it\'s important to consider exactly what your graphical demands will be. Varying graphical tasks are best accomplished with varying techniques. For example, graphics and animations for a rather static application should be implemented much differently than graphics and animations for an interactive game. No matter what type of application it is, there are certain situations that affect the user experience (response rate, fluency, use of resources, battery etc.). Times drawn reflect possibly some things are not performing in the best possible shape for the type of service you want to provide with this."|translate}}

    \n {{\'Render Time\'|translate}}\n

    {{"To achieve fluid rendering (60 fps) each frame must be completed in less than 16ms. If not, application creates a disruption in the animation and sometimes it \'freeze\'. Also, elevated drawing to the screen needs high CPU and/or GPU usage in order to maintain a constant rate, causing battery drain."|translate}}

    \n {{\'告警阀值\'|translate}}\n

    \n < 30fps

    \n {{\'官方文档\'|translate}}\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
    \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
    • {{\'All\'|translate}}{{vm.exceptionCount.All}}
    • \n
    • {{\'Error\'|translate}}{{vm.exceptionCount.Error}}
    • \n
    • {{\'NativeCrash\'|translate}}{{vm.exceptionCount.NativeCrash}}
    • \n
    • {{\'Fatal\'|translate}}{{vm.exceptionCount.Fatal}}
    • \n
    • {{\'ANR\'|translate}}{{vm.exceptionCount.ANR}}
    • \n
    • {{\'Exception\'|translate}}{{vm.exceptionCount.Exception}}
    • \n
    • {{\'Failure\'|translate}}{{vm.exceptionCount.Failure}}
    • \n
    \n \n

    {{\'No problem detected\'|translate}}

    \n
    \n
    \n
    \n

    \n

    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n'), a.put("apps/report_v1/issues/index.html",'
    \n
    \n
    \n
    \n
    \n
    {{\'已选条件\'|translate}}:
    \n
    \n
    \n
      \n
    • {{selected.value}} 
    • \n
    \n
    \n
    \n
    \n
    \n
    \n
    {{\'性能类别\'|translate}}:
    \n
    \n
    \n
      \n
    • {{performance.value}}
    • \n
    \n
    \n
    \n
    \n
    \n
    {{\'问题场景\'|translate}}:
    \n
    \n
    \n
      \n
    • {{scene.value|translate}}
    • \n
    \n
    \n
    {{vm.textState.scenes.text}}
    \n
    \n
    \n
    \n
    {{\'终端品牌\'|translate}}:
    \n
    \n
    \n
      \n
    • {{vendor.value}}
    • \n
    \n
    \n
    {{vm.textState.vendors.text}}
    \n
    \n
    \n
    \n
    {{\'Resolution\'|translate}}:
    \n
    \n
    \n
      \n
    • {{resolution.value}}
    • \n
    \n
    \n
    {{vm.textState.resolutions.text}}
    \n
    \n
    \n
    \n
    {{\'问题类型\'|translate}}:
    \n
    \n
    \n
      \n
    • {{result.value}}
    • \n
    \n
    \n
    {{vm.textState.results.text}}
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    {{\'问题终端\'|translate}}{{scene.value|translate}}{{\'问题总数\'|translate}}
    {{device.device_model.name}}\n
    \n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n'),a.put("apps/report_v1/issues/log.modal.html",'
    \n \n
    \n
    \n #{{vm.exception.index.line}}\n
    \n
    \n
    {{ vm.exception.content.title }}  {{vm.exception.content.info}}
    \n
    \n
    \n
    '),a.put("apps/report_v1/issues/snapshots.html",'
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    '),a.put("apps/report_v1/summary/index.html",'
    '),a.put("apps/report_v2/compatibility/index.html",'
    \n \n
    \n \n \n {{ \'问题统计\' | translate }}\n \n {{ vm.compatibility.result_json2.types.t_r_exception.count }}\n \n \n \n \n {{ \'问题最多为:\' | translate}} {{ vm.theTopOne.name|translate }}\n \n {{ vm.theTopOne.count}}\n \n \n
    \n\n \n
    \n

    \n {{ \'不兼容终端分布\' | translate }}\n

    \n
    \n
    \n \n
    \n \n {{ device_distribution.title | translate }}\n \n
    \n {{ vm.searchTheTopName(device_distribution) }}{{ \'机型问题更为突出\' | translate }}\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {{ \'机型\' | translate }}\n \n {{ \'未通过|总台数\' | translate }}\n
    \n {{ value.name }}\n \n {{ value.types[3].count }}|{{ value.count }}\n
    \n \n {{ \'还有\' | translate }}{{ vm.num[device_distribution.key] }}{{ \'台\' | translate }}\n \n \n {{ \'收起\' | translate }}\n \n
    \n
     
    \n
    \n
    \n
    \n
    \n'),a.put("apps/report_v2/compatibility/locate.html",'
    \n \n \n \n
    '),a.put("apps/report_v2/exceptions/index.html",'
    \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 {{ vm.sortedExceptionTypes[$index].name }}\n
    终端数{{ subtype.count }}
    覆盖人群{{ subtype.coverage_count }}万
    问题占比{{ subtype.rate*1000/10 }}%
    \n
    \n

    问题摘要分布

    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    问题摘要终端数影响用户数
    {{ list.name }}{{ list.count }}台{{ list.coverage }}万
    \n
    \n

    问题筛选

    \n \n \n
    \n \n {{ vm.filters.logFilter?vm.filters.logFilter:\'全部问题摘要\' }}\n \n \n
    \n \n
    \n \n {{ vm.filters.subtasksFilter.name?vm.filters.subtasksFilter.name:\'全部问题类型\' }}\n \n \n
    \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    测试结果问题摘要问题终端系统版本
    \n
      \n {{ subtask.result_subtype.name }}\n
    \n
    {{ subtask.exception_desc }}{{ subtask.device_model.name }}{{ subtask.device_model.os }}\n 查看详情\n 日志\n\n \n \n

    \n {{ subtask.device_model.rio.status | tbDeviceStatusText }}\n

    \n
    \n
    \n'),a.put("apps/report_v2/index.html",'
    \n
    \n
    \n
    \n
    \n icon\n
    \n

    \n

    \n
    \n \n
    \n
    \n\n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    {{\'通过率\'|translate}}
    {{vm.passRate}}%
    \n
    \n
    {{\'问题终端数\'|translate}}
    {{vm.types.t_r_exception.count}}
    \n
    \n
    {{\'待优化终端\'|translate}}
    {{vm.types.t_r_need_optimize.count}}
    \n
    \n
    {{\'测试终端总数\'|translate}}
    {{vm.testedCount}}
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n {{\'终端玩家流失数\'|translate}}\n {{\'终端用户流失数\'|translate}}\n {{vm.types.t_r_exception.coverage_count}} {{ \'万\'|translate }}\n
    \n
    \n {{\'游戏玩家流失率\'|translate}}\n {{\'终端用户流失率\'|translate}}\n {{vm.overview.task_exception_avg_map.t_r_game_player_turnover_coverage}} %\n
    \n
    \n {{\'可能损失玩家(每一百万)\'|translate}}\n {{\'可能损失用户(每一百万)\'|translate}}\n {{vm.overview.task_exception_avg_map.t_r_game_player_turnover_coverage}} {{\'万\'|translate}}\n
    \n
    \n {{\'帮助客户减少损失(每一百万用户)\'|translate}}\n {{vm.overview.task_exception_avg_map.t_r_game_player_turnover_money}} {{\'万元\'|translate}}\n
    \n
    \n
    \n \n
    \n

    {{\'问题统计\'|translate}}

    \n
    \n
    致命:{{ vm.severity.severity_fatal_count || 0 }}
    \n
    严重:{{ vm.severity.severity_critical_count || 0 }}
    \n
    一般:{{ (vm.severity.severity_normal_count + vm.severity.severity_none_count) || 0 }}
    \n
    提示:{{ (vm.severity.severity_minor_count) || 0 }}
    \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
    安装失败启动失败闪退黑屏&白屏卡死卡顿连接异常UI异常其他异常
    终端数{{ subtype.count }}
    覆盖人群{{ subtype.coverage_count }}万
    问题占比{{ subtype.rate*1000/10 }}%
    \n
    \n \n
    \n

    {{\'行业指标\'|translate}}{{vm.testAppTypeText|translate}}

    \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
    {{\'测试场景\'|translate}}{{\'行业最优指标(台)\'|translate}}{{\'行业平均指标(台)\'|translate}}{{\'本游戏指标(台)\'|translate}}
    {{\'安装失败\'|translate}}{{vm.compIndustryTop.e_r_install_failure_text}}{{vm.compIndustryAvg.e_r_install_failure_text}}{{vm.compTaskAvg.e_r_install_failure_text}}
    {{'启动失败'|translate}}{{vm.compIndustryTop.e_r_boot_failure_text}}{{vm.compIndustryAvg.e_r_boot_failure_text}}{{vm.compTaskAvg.e_r_boot_failure_text}}
    {{'Running'|translate}}{{vm.compIndustryTop.e_r_beginners_guide_text}}{{vm.compIndustryAvg.e_r_beginners_guide_text}}{{vm.compTaskAvg.e_r_beginners_guide_text}}
    {{'合计'|translate}}{{vm.compIndustryTop.t_r_exception_text}}{{vm.compIndustryAvg.t_r_exception_text}}{{vm.compTaskAvg.t_r_exception_text}}
    {{'通过测试终端'|translate}}{{vm.compIndustryTop.t_r_success_text}}{{vm.compIndustryAvg.t_r_success_text}}{{vm.compTaskAvg.t_r_success_text}}
    \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 \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
    {{'性能分类'|translate}}{{'行业最优指标'|translate}}{{'行业平均指标'|translate}}{{'本游戏指标'|translate}}
    {{'流量'|translate}}[KB]{{vm.perfIndustryTop.i_data_traffic__min/1024|number:0}}{{vm.perfIndustryAvg.i_data_traffic__avg/1024|number:0}}{{vm.perfTaskAvg.i_data_traffic__avg/1024|number:0}}
    {{'启动时延'|translate}}[ms]{{vm.perfIndustryTop.i_boot_delay__min|number:2}}{{vm.perfIndustryAvg.i_boot_delay__avg|number:2}}{{vm.perfTaskAvg.i_boot_delay__avg|number:2}}
    {{'CPU占用率'|translate}}[%]{{vm.perfIndustryTop.i_cpu_utilization__min|number:2}}{{vm.perfIndustryAvg.i_cpu_utilization__avg|number:2}}{{vm.perfTaskAvg.i_cpu_utilization__avg|number:2}}
    {{'内存占用'|translate}}[kb]{{vm.perfIndustryTop.i_mem_utilization__min|number:2}}{{vm.perfIndustryAvg.i_mem_utilization__avg|number:2}}{{vm.perfTaskAvg.i_mem_utilization__avg|number:2}}
    {{'文件大小'|translate}}[MB]{{vm.perfIndustryTop.file_size/1024/1024|number:1}}{{vm.perfIndustryAvg.file_size/1024/1024|number:1}}{{vm.perfTaskAvg.file_size/1024/1024|number:1}}
    {{'温度'|translate}}[℃]{{vm.perfIndustryTop.i_temperature__min|number:2}}{{vm.perfIndustryAvg.i_temperature__avg|number:2}}{{vm.perfTaskAvg.i_temperature__avg|number:2}}
    {{'帧速率'|translate}}[fps]{{vm.perfIndustryTop.i_frame_rate__min|number:0}}{{vm.perfIndustryAvg.i_frame_rate__avg|number:0}}{{vm.perfTaskAvg.i_frame_rate__avg|number:1}}
    {{'安装延时'|translate}}[ms]{{vm.perfIndustryTop.i_install_elapse__min|number:0|emptyReplace:'-'}}{{vm.perfIndustryAvg.i_install_elapse__avg|number:0|emptyReplace:'-'}}{{vm.perfTaskAvg.i_install_elapse__avg|number:0}}
    {{'GPU'|translate}}[%]{{vm.perfIndustryTop.i_gpu_utilization__min|number:0|emptyReplace:'-'}}{{vm.perfIndustryAvg.i_gpu_utilization__avg|number:0|emptyReplace:'-'}}{{vm.perfTaskAvg.i_gpu_utilization__avg|number:0}}
    {{'电量'|translate}}[mAh]{{vm.perfIndustryTop.i_battery_usage__min|number:0|emptyReplace:'-'}}{{vm.perfIndustryAvg.i_battery_usage__avg|number:0|emptyReplace:'-'}}{{vm.perfTaskAvg.i_battery_usage__avg|number:0}}
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n"), a.put("apps/report_v2/performance/index.html",'
    \n
    \n

    {{ \'性能详情\' | translate }}

    \n \n
    \n
    \n
    \n \n {{ \'受影响玩家:\' | translate }}   {{ vm.list_coverage }}{{ \'*10k\' | translate }}\n \n
    \n \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {{ \'待优化终端Top5\' | translate }}\n \n {{ vm.list_name }}\n
    \n \n {{ list.device_model_name }}\n \n \n {{ list.device_model_name }}\n \n \n {{ vm.toFixed(list.data, 2) }}\n
    \n
    \n'),a.put("apps/report_v2/subtask_detail/templates/index.html",'
    \n
    \n
    \n
    \n icon\n
    \n

    \n

    \n
    \n
    \n
    \n

    \n \n
    \n
    {{\'租用手机\'|translate}}
    \n 上一部\n \n
    \n
    \n

    问题说明

    \n
    \n \n
    \n
    \n
    \n
    操作系统:
    \n
    问题类型:
    \n
    问题摘要:
    \n 问题摘要: \n
    CPU占用率:
    \n
    内存占用:
    \n
    可用内存:
    \n
    帧速率:
    \n
    温度:
    \n
    流量:
    \n
    \n 在全部截图中显示\n
    \n
    \n \n
    \n
    \n
    '),a.put("apps/report_v2/subtask_detail/templates/logs.html",'
    \n \n 下载日志\n
      \n
    • \n
      \n \n levels\n \n \n
      \n
      行号
      \n
      时间
      \n
      PID
      \n
      Tag
      \n
      text
      \n
    • \n
    • 正在加载数据,请等待...
    • \n
    • 没有相关日志数据!
    • \n
    \n
      \n
    • \n
      \n
      \n
      \n
      \n
      \n
      \n        
    • \n
    \n
    '),a.put("apps/report_v2/subtask_detail/templates/performance.html",'
    \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
    {{ image.time }}
    \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 \n \n \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n
    '),a.put("apps/report_v2/subtask_detail/templates/profile.html",'
    \n
      \n
    • \n
      终端型号
      \n
      \n
    • \n
    • \n
      分辨率
      \n
      \n
    • \n
    • \n
      CPU型号
      \n
      \n
    • \n
    • \n
      内部存储空间
      \n
      \n
    • \n
    • \n
      GPU型号
      \n
      \n
    • \n
    • \n
      SD存储空间
      \n
      \n
    • \n
    • \n
      内存
      \n
      \n
    • \n
    • \n
      操作系统
      \n
      \n
    • \n
    • \n
      网络
      \n
      WIFI
      \n
    • \n
    • \n
      屏幕尺寸
      \n
      \n
    • \n
    \n
    '),a.put("apps/report_v2/subtask_detail/templates/snapshots.html",'
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n'),a.put("apps/report_v2/subtasks/index.html",'
    \n
    \n
    \n
    已选条件:
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
      \n
    • \n
    \n
    \n
    \n \n {{ filter.selectedItems.length>0 ? filter.selectedItems[0].value : \'全部问题摘要\' }}\n \n \n
    \n
    \n {{ filter.isCollapse ? "收起" : "展开" }}\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 {{ \'终端品牌\' | translate }}\n \n \n \n \n \n {{ \'终端型号\' | translate }}\n \n \n \n {{ \'测试结果\' | translate }}\n \n \n \n {{ \'Coverage\' | translate }}({{ \'*10k\' | translate }})\n \n \n \n {{ \'Internal storage\' | translate }}\n \n {{ \'CPU\' | translate }}\n \n {{ \'Resolution\' | translate }}\n \n \n \n {{ vm.osText }}\n \n \n \n {{ \'终端类型\' | translate }}\n \n \n \n 存储空间\n \n \n \n {{ \'远程调试\' | translate }}\n \n \n 报告详情\n
    \n {{ subtask.device_model.vendor }}\n \n \n {{ subtask.device_model.name }}\n \n \n {{ subtask.device_model.name }}\n \n \n {{ subtask.result_subtype.name }}\n \n {{ subtask.device_model.coverage }}\n \n {{ subtask.device_model.ram }}\n \n {{ subtask.device_model.cpu }}\n \n {{ subtask.device_model.resolution }}\n \n {{ subtask.device_model.os }}\n \n {{ subtask.device_model.level }}\n \n {{ subtask.device_model.sdcard }}\n \n \n \n

    \n {{ subtask.device_model.rio.status | tbDeviceStatusText }}\n

    \n
    \n 查看\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n'),a.put("apps/report_v2/subtasks/rent.html",'
    \n \n \n \n \n
    '),a.put("apps/support/index.html",'
    \n
    \n
    \n
    \n
    \n
    \n\n \n \n\n
    '),a.put("apps/task/custom-tag/confirm.html",'\n\n
    \n \n \n
    \n'), a.put("apps/task/custom-tag/confirmV2.html",'\n\n
    \n \n \n
    \n'),a.put("apps/task/custom-tag/tag.html",'\n
    \n \n
    \n \n

    {{\'自定义标签\' | translate}}

    \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
    {{\'最新上架\' | translate}}
    \n
    \n
    \n
      \n
    • \n
      {{\'覆盖人群\' | translate}}\n
      {{device.coverage}}{{\'task_万\' | translate}}
      \n \n \n
      \n
      {{device.name}}
      \n
      {{device.os}},{{device.ram}}
      \n
      ({{device.resolution}})
      \n
      \n
    • \n
    \n
    \n
    \n
    \n
    \n \n
    {{\'已选终端\' | translate}}:{{vm.tag.devices.length}}
    \n
    \n
    \n
      \n
    • \n {{device.name}}\n
    • \n
    \n
    \n
    \n
    \n
    \n \n
    \n \n
    \n\n\n'),a.put("apps/task/custom-tag/tagV2.html",'
    \n
    \n
    \n \n

    {{\'自定义标签\' | translate}}

    \n
    \n \n
    \n \n
    \n
    \n
    \n \n
    \n \n

    请输入1-{{vm.limitCount}}的整数

    \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n \n
    \n\n
    \n \n \n
    \n
    \n'),a.put("apps/tasks/task-steps/templates/app-demand.html",'
    \n
    \n \n
      \n
    • 测试人员根据测试重点录制1个自动化脚本,测试脚本对测试重点对应的APP页面和UI进行覆盖。
    • \n
    • 一次测试操作步骤不超过100个(一个操作步骤指:一次点击、划动、输入登陆账号等,不是指一个功能步骤),且对脚本时长、步骤间停顿时间无要求。
    • \n
    • 客户只需要提供APP、测试帐号(用于登陆)、重点测试页面,无须提供测试用例。
    • \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    测试方式自动化脚本执行
    测试内容安装->启动->注册/登陆->1,2级页面覆盖和UI遍历->卸载
    检查项兼容性问题(安装失败、启动失败、闪退、黑屏&白屏、卡死&卡顿、连接异常、UI异常、其他异常);性能(安装时延、启动时延、CPU、内存、流量、温度、帧速率)
    测试人员1~3年工作经验中级测试工程师
    \n
    \n
    注意:
    \n
      \n
    • 1.单次标准兼容性测试步骤若超出100步,则以100步/次为单位进行兼容性次数折算。如350步脚本测试,须折算为4次标准兼容性进行扣费;
    • \n
    • 2.如对脚本时长、步骤间停顿时间有特殊要求,须由测试人员评估后进行费用确认;
    • \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
    注意:
    \n
    自定义测试为非标准兼容测试,需要TestBird测试专家评估您的测试需求及费用,如需快速创建兼容性测试任务请选择套餐测试。
    \n
    \n
    '),a.put("apps/tasks/task-steps/templates/applet-device.html",'
    \n \n \n
    \n\n
    \n \n
    \n {{tag.name}}\n
    \n
    \n\n
    \n \n \n
    \n\n
    \n
    注意:
    \n
    自定义测试为非标准兼容测试,需要TestBird测试专家评估您的测试需求及费用,如需快速创建兼容性测试任务请选择套餐测试。
    \n
    套餐测试脚本一次测试操作步骤不超过100个(一个操作步骤指:一次点击、划动、输入登陆账号等,不是指一个功能步骤),且脚本执行时长不超过15分钟,如需测试更多时间及步骤,请选择自定义测试。
    \n
    '),a.put("apps/tasks/task-steps/templates/control-demand.html",'
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    测试方式按照程序控件树顺序进行遍历点击,登录和逻辑判断不在测试范围内
    测试内容安装->启动,按照空间树顺序遍历点击
    检查项安装是否成功,启动是否成功,控件点击是否会有程序崩溃等问题,以及遍历期间的APP性能数据
    测试人员1~3年工作经验中级测试工程师
    \n
    \n
    注意:
    \n
      \n
    • 1.该测试不包括登录,以及任何程序逻辑判断
    • \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
    自定义测试为非标准兼容测试,需要TestBird测试专家评估您的测试需求及费用,如需快速创建兼容性测试任务请选择套餐测试。
    \n
    \n
    '),a.put("apps/tasks/task-steps/templates/control-device.html",'

    选择机型

    \n
    \n \n \n
    \n\n
    \n \n
    \n {{tag.name}}\n
    \n
    \n\n
    \n \n \n
    \n\n\n\n

    选择时长

    \n\n
    \n \n
    \n\n
    \n \n
    \n {{tag.name}}\n
    \n
    '),a.put("apps/tasks/task-steps/templates/game-confirm.html",'
    \n \n
    \n \n \n
    '),a.put("apps/tasks/task-steps/templates/game-demand.html",'
    \n \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n 如需增加多个报告接收邮箱,请以“;”进行分隔\n
    \n
    \n
    注意:
    \n
      \n
    • 1.注册登陆如果需要固定账户/手机号码/激活码等信息,请提前告知测试人员;
    • \n
    • 2.特殊需求的请在需求栏备注,如登陆服务器、内存、系统版本等;
    • \n
    • 3.如游戏需要热更,且更新超过30M,请上传全量包;不超过30M的,需确保更新后不能重启及替换版本;
    • \n
    • 4.测试期间,请确认服务器稳定,避免因服务器改动而导致的测试延期/故障;
    • \n
    \n
    '),a.put("apps/tasks/task-steps/templates/game-device.html",'
    \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 \n\n \n \n \n \n
    '),a.put("apps/tasks/task-steps/templates/model-attention.html",'
    \n

    {{model.title}}注意事项\n \n

    \n

    为了提高测试效率与测试准确性,请仔细阅读以下注意事项,并确保待测APP满足以下各项条件:

    \n \n \n
    '),a.put("apps/tasks/task-steps/templates/order-prompt.html",'
    \n

    请在新打开的页面上完成充值

    \n

    充值完成前请不要关闭此页面。

    \n \n
    \n'),a.put("apps/tasks/task-steps/templates/scenario-demand.html",'
    \n \n \n
    \n
    \n
    \n 上传文本用例\n \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n 如需增加多个报告接收邮箱,请以“;”进行分隔。\n
    \n
    \n \n \n
    '),a.put("apps/tasks/task-steps/templates/task-confirm.html",'
    \n
    \n 账户余额:\n {{vm.config.amount || 0 }}\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 \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
    {{(vm.task.testType == \'game\' ? \'游戏\' : \'APP\') + \'名称\'}}{{vm.task.app.name}}
    {{(vm.task.testType == \'game\' ? \'游戏\' : \'APP\') + \'版本\'}}{{vm.task.apk.version}}
    上传时间{{vm.task.apk.updated | dateFilter}}
    {{(vm.task.testType == \'game\' ? \'游戏\' : \'APP\') + \'包名\'}}{{vm.task.app.package_name}}
    测试类型场景测试-{{vm.task.testType==vm.TASKS_ENUM.testType.automatic ? \'自动化测试\' : \'手动测试\'}}控件遍历测试微信小程序测试\n 标准兼容性测试\n -{{vm.TASKTYPE.BASE==vm.task.advance ? \'基础测试\' : \'高级测试\'}}\n
    套餐类型\n 自定义测试 机型数量:{{vm.task.deviceCount}}部\n {{ vm.appOs }}{{ vm.task.tag.name}}\n {{ vm.task.tag.key ? vm.task.tag.name : (vm.task.marketLocale == \'zh_CN\' ? \'国内自选套餐测试(50TB/部)\' : \'海外自选套餐测试(80TB/部)\')}}{{ vm.task.tag.key ? vm.task.tag.name : \'IOS自选套餐(70TB/部)\'}}
    测试时长{{vm.task.duration.count}}分钟
    步骤数量{{vm.task.testcaseCount || \'无\'}}
    步骤数量{{ vm.TASKS_ENUM.deviceType.package == vm.task.deviceType ? \'不超过100步\' : \'待评估\'}}
    脚本时长{{ vm.TASKS_ENUM.deviceType.package == vm.task.deviceType ? \'不超过15分钟\' : \'待评估\'}}
    步骤单价{{vm.task.amounts.price}}
    自选台数{{vm.task.tag.target_device_count}}
    测试需求{{vm.task.requirement}}
    自选备注{{vm.task.tag.desc}}
    联系邮箱{{vm.task.receiveEmail}}
    增值服务\n \n \n \n \n \n \n \n \n
    \n

    说明:

    \n

    自动重测:在本次兼容性测试过程中出现的【安装失败】、【启动失败】、【闪退】问题时,系统再自动测试两次,统计出问题概率并给出所有测试的相关数据

    \n

    加急测试:1.勾选此项后,默认提高该任务的优先级,并缩短反馈时间10小时;2.国家法定节假日勾选此项后,会安排加班执行测试任务。

    \n
    \n
    \n {{ vm.task.amounts.is_estimate ? \'预计扣费\' : \'当前测试任务需要支付\'}}:\n {{vm.task.amounts.amount}}
    \n
    \n\n
    \n
    注意:
    \n
    场景测试需要TestBird测试专家评估您的测试需求及费用,稍后会有专人与您联系说明;之后请在任务列表确认测试费用并开始测试。
    \n
    自定义测试需要TestBird测试专家评估您的测试需求及费用,稍后会有专人与您联系说明;之后请在任务列表确认测试费用并开始测试。
    \n
    \n
    '), a.put("apps/tasks/task-steps/templates/task-device.html",'
    \n \n \n
    \n\n
    \n \n
    \n {{tag.name}}\n
    \n
    \n\n
    \n \n \n
    \n\n
    \n
    注意:
    \n
    自定义测试为非标准兼容测试,需要TestBird测试专家评估您的测试需求及费用,如需快速创建兼容性测试任务请选择套餐测试。
    \n
    套餐测试脚本一次测试操作步骤不超过100个(一个操作步骤指:一次点击、划动、输入登陆账号等,不是指一个功能步骤),且脚本执行时长不超过15分钟,如需测试更多时间及步骤,请选择自定义测试。
    \n
    '),a.put("apps/tasks/task-steps/templates/task-type.html",'
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n \n
    \n
    \n \n \n
    \n
    \n
    注意:
    \n
      \n
    • 1.请上传最新的微信版本,默认也是使用最新的微信版本进行测试;
    • \n
    • 2.若不方便上传请联系销售代为上传;
    • \n
    \n
    \n
    \n \n
    \n
    注意:
    \n
    手动测试包含但不限于图形验证码,真实征信,人工审核,视频连线问答,身份证真实性校验,真实手机号,短信验证码激活,智能语音,蓝牙设备连线、OCR识别等。
    \n
    \n
    '),a.put("apps/tasks/task-table/templates/applet-table.html",'
    \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
    APP版本创建时间测试信息套餐测试需求状态通过率报告
    \n {{item.app_version}}\n {{item.created | dateFilter}}\n \n \n 成功:{{item.success_count || 0}}\n
    不兼容:{{item.exception_count || 0}}\n
    待优化:{{item.need_optimize_count || 0}}\n
    未测试:{{item.untested_count || 0}}\n
    \n
    \n
    {{item.service.tag.access_locales[vm.locale]}}\n
    {{item.requirement}}
    \n
    \n {{item.state_text}}\n 备注:{{item.notes}}\n \n \n 0.00%\n \n {{ (((item.success_count+ item.need_optimize_count )/(item.success_count +item.need_optimize_count+item.exception_count))*100).toFixed(2) }}%\n \n \n 在线报告\n 下载报告\n 在线报告\n \n 复测\n {{item.state == 21 ? \'确认价格\' : \'确认改价\'}}\n
    \n
    '),a.put("apps/tasks/task-table/templates/comptest-table.html",'
    \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
    APP版本创建时间测试信息套餐测试需求状态通过率报告权限管理
    \n {{item.app_version}}\n
    \n 重选版本
    \n
    {{item.created | dateFilter}}\n \n \n 成功:{{item.success_count || 0}}\n
    不兼容:{{item.exception_count || 0}}\n
    待优化:{{item.need_optimize_count || 0}}\n
    未测试:{{item.untested_count || 0}}\n
    \n
    \n
    {{item.service.tag ? item.service.tag.access_locales[vm.locale] : item.service.name}}\n
    {{item.requirement}}
    \n
    \n {{item.state_text}}\n 备注:{{item.notes}}\n \n
    \n \n
    \n
    \n \n 0.00%\n \n {{ (((item.success_count+ item.need_optimize_count )/(item.success_count +item.need_optimize_count+item.exception_count))*100).toFixed(2) }}%\n \n
    \n
    \n 在线报告\n 下载报告\n 在线报告\n \n 复测\n {{item.state == 21 ? \'确认价格\' : \'确认改价\'}}\n \n
    \n 设 置\n
    \n
    \n
    '),a.put("apps/tasks/task-table/templates/control-table.html",'
    \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
    APP版本创建时间测试信息套餐状态通过率报告
    \n {{item.app_version}}\n
    \n 重选版本
    \n
    {{item.created | dateFilter}}\n \n \n 成功:{{item.success_count || 0}}\n
    不兼容:{{item.exception_count || 0}}\n
    待优化:{{item.need_optimize_count || 0}}\n
    未测试:{{item.untested_count || 0}}\n
    \n
    \n
    {{item.service.tag.access_locales[vm.locale]}}\n {{item.state_text}}\n 备注:{{item.notes}}\n \n \n 0.00%\n \n {{ (((item.success_count+ item.need_optimize_count )/(item.success_count +item.need_optimize_count+item.exception_count))*100).toFixed(2) }}%\n \n \n 在线报告\n 下载报告\n 在线报告\n \n {{item.state == 21 ? \'确认价格\' : \'确认改价\'}}\n
    \n
    '),a.put("apps/tasks/task-table/templates/pay.html",'
    \n
    \n
    \n

    {{ vm.taskName }}

    \n
    \n
    \n
    \n
    \n 账户余额:\n {{vm.config.amount || 0 }}\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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    APP名{{vm.app.name}}
    APP版本{{vm.apk.version}}
    上传时间{{vm.apk.updated | dateFilter}}
    APP包名{{vm.apk.name}}
    测试类型{{vm.task.fun_info}}
    套餐类型{{vm.task.ter_type}}
    步骤数量{{vm.task.teststep_count || vm.task.step_count}}
    单机型步骤单价{{vm.task.price}}
    步骤时长{{vm.task.script_time}}分钟
    测试需求{{vm.requirement}}
    联系邮箱{{vm.receiveEmail}}
    已支付{{vm.task.has_paid}}
    总价{{vm.task.pay}}
    \n\n
    \n
    当前测试任务需要{{vm.task.to_pay != vm.task.pay ? \'再\' : \'\'}}支付:\n {{vm.task.to_pay}}
    \n
    \n
    \n
    {{vm.errorMsg}}
    \n
    \n
    \n 取消\n 确定\n
    \n
    \n
    '),a.put("apps/tasks/task-table/templates/permissionSet.html",'\n\n
    \n 正在加载中...\n
    \n\n
    \n \n \n
    \n'),a.put("apps/tasks/task-table/templates/release.html",'\n\n
    \n \n \n
    \n'),a.put("apps/tasks/task-table/templates/scenario-subtask.html",'
    \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
    APP版本创建时间覆盖人群(万)异常终端数状态查看报告
    {{item.app_version}}{{item.file_created | dateFilter}}{{item.coverage}}{{item.exception_count}}{{item.state_text}}\n 在线报告\n 下载报告\n
    \n
    '),a.put("apps/tasks/task-table/templates/scenario-table.html",'
    \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
    APP版本创建时间测试类型套餐步骤数状态子任务报告
    \n {{item.app_version}}\n
    \n 重选版本
    \n
    {{item.created | dateFilter}}{{item.service.test_type_name}}{{ vm.appOsText }}
    {{item.service.device_package_type ==\n vm.TASKS_ENUM.deviceType.package ? \'套餐\' : \'自定义\' }} {{item.service.device_count}}
    {{item.service.teststep_count}}{{item.progress < 1 && item.state == 4 ? vm.scenarioState[3] : vm.scenarioState[item.state] }}备注:{{item.notes}}\n 查看\n 查看\n \n 在线报告\n 下载报告\n 在线报告\n \n {{vm.scenarioState[item.state]}}\n
    \n
    '),a.put("apps/tasks/task-table/templates/summary-table.html",'
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    APP版本创建时间报告名称报告
    {{item.app_version}}{{item.created | dateFilter}}{{item.name}}查看
    \n
    '),a.put("apps/tasks/task-table/templates/test-again.html",'
    \n
    \n
    \n

    问题终端:{{vm.errorDevices.length}}部

    \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 终端品牌终端型号测试结果覆盖人群(万)内存CPU分辨率系统版本终端类型存储空间
    \n \n \n \n {{ subtask.device_model.vendor }}\n {{ subtask.device_model.name }}\n {{ subtask.result_subtype.name }}\n \n {{ subtask.device_model.coverage }}\n \n {{ subtask.device_model.ram }}\n \n {{ subtask.device_model.cpu }}\n \n {{ subtask.device_model.resolution }}\n \n {{ subtask.device_model.os }}\n \n {{ subtask.device_model.level }}\n \n {{ subtask.device_model.sdcard }}\n
    \n
    \n\n
    \n

    版本选择\n 上传新版本\n

    \n \n
    \n\n
    \n

    测试需求

    \n \n
    \n\n
    \n
    当前测试任务需要支付:\n {{vm.amount}}
    \n
    \n\n
    \n
    {{vm.errorMsg}}
    \n
    \n 取消\n 确定\n
    \n
    \n
    '),a.put("apps/tasks/templates/compare-detail.html",'
    \n
    \n
    \n \n
    \n

    \n {{ vm.taskName }}\n \n

    \n
    \n \n \n \n
    \n \n 我的消息\n
    \n
    \n \n
    \n\n
    \n
    \n
    \n
    \n \n

    {{ apps[0].name }}

    \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
    App版本创建时间测试信息套餐测试需求状态通过率报告
    {{ app.app_version }}{{ app.created | dateFilter }}\n \n \n 成功:{{ app.success_count || 0}}\n
    不兼容:{{ app.exception_count || 0}}\n
    待优化:{{ app.need_optimize_count || 0}}\n
    未测试:{{ app.untested_count || 0}}\n
    \n
    \n
    \n {{ app.service.name }}\n \n {{ app.requirement }}\n \n {{ app.state_text }}\n 备注:{{ app.notes }}\n \n
    \n \n
    \n
    \n \n 0.00%\n \n {{ (((app.success_count+ app.need_optimize_count )/(app.success_count +app.need_optimize_count+app.exception_count))*100).toFixed(2) }}%\n \n
    \n
    \n 在线报告\n 下载报告\n 在线报告\n \n 复测\n \n'+" {{ app.state == 21 ? '确认价格' : '确认改价'}}\n
    \n
    \n
    \n\n\n
    \n\n\n"), a.put("apps/tasks/templates/report-create.html",'
    \n
    \n \n
    \n
    \n \n \n
    '),a.put("apps/tasks/templates/report-update.html",'
    \n \n
    \n \n \n
    '),a.put("apps/tasks/templates/task-report.html",'
    \n
    \n
    \n \n
    \n

    \n {{ vm.taskName }}\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 {{ item.name }}\n {{ item.created | date:\'yyyy-MM-dd HH:mm:ss\' }}\n \n {{ items.state }}:{{ items.count || 0}}\n
    \n
    \n
    \n 编辑\n |\n 删除\n
    \n
    \n
    \n'),a.put("apps/tasks/templates/task.html",'
    \n
    \n
    \n

    {{ vm.taskName }}

    \n \n
    \n
    \n
      \n
    • \n
      \n
      {{step.title}}
      \n
    • \n
    \n \n
    {{vm.errorMsg}}
    \n \n
    '),a.put("apps/tasks/templates/tasks.html",'
    \n
    \n

    此应用为演示应用,请添加您自己的应用!

    \n
    \n
    \n \n
    \n
    '),a.put("common/rent-device/appointment.html",'
    \n \n \n \n \n
    '),a.put("vendor/jquery/speed/closest.html",'\n\n\n\tTest .closest() Performance\n\t\n\t\n\t\n\t\n\t\n\n\n\t
    \n\t\t

    Hello

    \n\t\t
    \n\t\t\t
    \n\t\t\t\t

    lorem ipsum

    \n\t\t\t\t

    dolor sit amet

    \n\t\t\t
    \n\t\t
    \n\t
    \n\t
      \n\n\n\n'),a.put("vendor/jquery/speed/css.html",'\n\n\n\tTest Event Handling Performance\n\t\n\t\n\t\n\t\n\t\n\t\n\n\n\t

      Getting Values: Loading...

      \n\t

      Setting Values: Loading...

      \n\n\n'),a.put("vendor/jquery/speed/event.html",'\n\n\n\tTest Event Handling Performance\n\t\n\t\n\t\n\t\n\t\n\n\n\t

      Move the mouse, please!

      \n\t

      \n\n\n'),a.put("vendor/jquery/speed/filter.html",'\n\n\n\tTest .filter() Performance\n\t\n\t\n\t\n\t\n\t\n\n\n\t
      \n\t\t

      Hello

      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t\t
      \n\t
      \n\t
        \n\n\n\n'),a.put("vendor/jquery/speed/find.html",'\n\n\n\tTest .find() Performance\n\t\n\t\n\t\n\t\n\t\n\n\n\t
        \n\t\t

        Hello

        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t\t
        \n\t
        \n\t
          \n\n\n\n'), a.put("vendor/jquery/speed/index.html",'\n\n\n\n\t\n\tSpeed Test\n\t\n\t\n\t\n\t\n\n\n\n\n

          Speed Test

          \n
          \n
          \n

          Using the following selector expressions ( times each):

          \n

          NOTE: Number shown is an average.

          \n
          \n\t\n\t\n\n\t\n\t\n
          \n\n\t\n\t\t\n\t\t\t\n\t\t\t\n\n\t\t\n\t\n\t\n\t\t\n\t\t\t \n\t\t\t \n\t\t\n\t\t\n\t\t\t \n\n\t\t\t \n\t\t \n\t\n\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n\n
          Run?Test
          \n\n\t
          \n\t\n\t\n\t\n\t\n\t\n\n\t
          \n
          \n
          \n\t\n\n\t\n\n\n'),a.put("vendor/jquery/speed/slice.vs.concat.html","\n"),a.put("vendor/jquery/test/data/ajax/unreleasedXHR.html",'\n\n\n\nAttempt to block tests because of dangling XHR requests (IE)\n\n\n\n\n\n\n\n'),a.put("vendor/jquery/test/data/cleanScript.html",'\n\n'),a.put("vendor/jquery/test/data/core/cc_on.html",'\n\n\n\t\n\t\n\t\n\n\n\t\n\n\n'),a.put("vendor/jquery/test/data/core/dynamic_ready.html",'\n\n\n\t\n\t\n\t\n\n\n\n\n\n\n'),a.put("vendor/jquery/test/data/dimensions/documentLarge.html",'\n\n\n\t\n\t\n\n\n\t
          \n\t\t\n\t
          \n\n\n'),a.put("vendor/jquery/test/data/dimensions/documentSmall.html",'\n\n\n\t\n\t\n\n\n\t
          \n\t\t\n\t
          \n\n\n'),a.put("vendor/jquery/test/data/event/focusElem.html",'\n\n\n\t\n\t.focus() (activeElement access #13393)\n\n\t\n\n\n\t\n\t\n\n\n'),a.put("vendor/jquery/test/data/event/onbeforeunload.html",'\n\n\t\n\t\n\n'),a.put("vendor/jquery/test/data/event/promiseReady.html",'\n\n\n\nTest case for jQuery ticket #11470\n\n\n\n\n\n\n\n'),a.put("vendor/jquery/test/data/event/syncReady.html",'\n\n\n\nTest case for jQuery ticket #10067\n\n\n\n\n\n\n\n\n
          \n\n\n'),a.put("vendor/jquery/test/data/iframe.html","\n\t\n\t\tiframe\n\t\n\t\n\t\t
          span text
          \n\t\n\n"),a.put("vendor/jquery/test/data/manipulation/iframe-denied.html",'\n\n\t\n\t\t\n\t\tbody\n\t\n\t\n\t\t
          \n\t\t\n\t\t\n\t\n\n'),a.put("vendor/jquery/test/data/name.html",'ERROR \n'),a.put("vendor/jquery/test/data/offset/absolute.html",'\n\n\t\n\t\t\n\t\tabsolute\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t
          absolute-1\n\t\t\t
          absolute-1-1\n\t\t\t\t
          absolute-1-1-1
          \n\t\t\t
          \n\t\t
          \n\t\t
          absolute-2
          \n\t\t
          Has absolute position but no values set for the location (\'auto\').
          \n\t\t
          \n\t\t

          Click the white box to move the marker to it. Clicking the box also changes the position to absolute (if not already) and sets the position according to the position method.

          \n\t\n\n'),a.put("vendor/jquery/test/data/offset/body.html",'\n\n\t\n\t\t\n\t\tbody\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t
          \n\t\t
          \n\t\n\n'),a.put("vendor/jquery/test/data/offset/fixed.html",'\n\n\t\n\t\t\n\t\tfixed\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t
          \n\t\t
          \n\t\t
          \n\t\t
          \n\t\t
          \n\t\t

          Click the white box to move the marker to it.

          \n\t\n\n'),a.put("vendor/jquery/test/data/offset/relative.html",'\n\n\t\n\t\t\n\t\trelative\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t
          \n\t\t
          \n\t\t
          \n\t\t

          Click the white box to move the marker to it. Clicking the box also changes the position to absolute (if not already) and sets the position according to the position method.

          \n\t\n\n'), a.put("vendor/jquery/test/data/offset/scroll.html",'\n\n\t\n\t\t\n\t\tscroll\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t
          \n\t\t\t
          \n\t\t\t\t
          \n\t\t\t
          \n\t\t
          \n\t\t
          \n\t\t
          \n\t\t

          Click the white box to move the marker to it.

          \n\t\n\n'),a.put("vendor/jquery/test/data/offset/static.html",'\n\n\t\n\t\t\n\t\tstatic\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t
          \n\t\t
          \n\t\t
          \n\t\t

          Click the white box to move the marker to it. Clicking the box also changes the position to absolute (if not already) and sets the position according to the position method.

          \n\t\n\n'),a.put("vendor/jquery/test/data/offset/table.html",'\n\n\t\n\t\t\n\t\ttable\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
          th-1th-2th-3
          td-1td-2td-3
          \n\t\t
          \n\t\t

          Click the white box to move the marker to it.

          \n\t\n\n'),a.put("vendor/jquery/test/data/selector/html5_selector.html",'\n\n\n\t\n\tjQuery selector - attributes\n\n\t\n\n\t\n\n\t\n\n\n\t\n\n\t
          \n\n\t
          \n\t\t\n\t\t\n\t
          \n\n\t\n\t\t\n\t
          \n\n\t\n\n\t\n\n\t
            \n\n\t
            \n\n\t
            \n\n\t
            \n\t\t

            My name is Elizabeth.

            \n\t
            \n\n\t\n\n\t\n\n\t\n\t\t\n\t\n\n\t\n\n\t\n\n\t
            \n\t\t
            Term
            This is the first definition in compact format.
            \n\t\t
            Term
            This is the second definition in compact format.
            \n\t
            \n\n\t\n\n\tScrolling text (non-standard)\n\n\n'),a.put("vendor/jquery/test/data/selector/sizzle_cache.html",'\n\n\n\t\n\tjQuery selector - sizzle cache\n\n\t\n\t\n\n\n\n\t
            \n\t\tWorlds collide\n\t
            \n\n\n'),a.put("vendor/jquery/test/data/support/bodyBackground.html",'\n\n\n\t\n\t\n\n\n\t
            \n\t\t\n\t
            \n\t\n\n\n'),a.put("vendor/jquery/test/data/support/boxSizing.html",'\n\n\n\t\n\t\n\n\n\n\n\n\n'),a.put("vendor/jquery/test/data/support/shrinkWrapBlocks.html",'\n\n\n\t\n\t\n\n\n\t
            \n\t\t\n\t
            \n\t\n\n\n'),a.put("vendor/jquery/test/data/support/testElementCrash.html",'\n\n\n\t\n\t\n\t\n\n\n\t\n\n\n'),a.put("vendor/jquery/test/data/test.html",'html text
            \n\n\nblabla\n'),a.put("vendor/jquery/test/data/test2.html",'\n'),a.put("vendor/jquery/test/data/test3.html",'
            This is a user
            \n
            This is a user
            \n
            This is a teacher
            \n'),a.put("vendor/jquery/test/delegatetest.html",'\n\n\nEvent Delegation Tests\n\n\n\n\n

            Delegate Tests (x)

            \n\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\n\n\n
            \n\t\t\tControls:\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\t
            \n\t\t\t\n\t\t\t
            \n\t\t\t\n\t\t\t\n\t\t
            \n\t\t\t\n\t\t\t
            \n\t\t\t\n\t\t\t
            \n\t\t\t\n\t\t\t\n\t\t
            \n\t\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\t
            \n\t\t\t
            \n\t\t\t
            \n\t\t\t
            \n\t\t
            \n

            NOTE: Only IE supports propertychange, beforeactivate, beforedeactivate; buttons do not support change events.

            \n\n

            Submit Tests

            \n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n
            \n\t\t\tSubmit each:\n\t\t\n\t\t\t
            \n\t\t\t\t\n\t\t\t
            \n\t\t
            \n\t\t\t
            \n\t\t\t\t\n\t\t\t
            \n\t\t
            \n\t\t\t
            \n\t\t\t\t\n\t\t\t
            \n\t\t
            $(document).bind(\'submit\')
            Results:TEXTPASSWORDBUTTONDOCUMENT
            \n\n\t
            \n\n\n\n\n'),a.put("vendor/jquery/test/hovertest.html",'\n\nHover tests\n\n\n \n \n\t

            Hover (mouse{over,out,enter,leave}) Tests

            \n\t

            Be sure to try moving the mouse out of the browser via the left side on each test.

            \n\t
            \n\n\t
            \n\t\t
            \n\t\t\t\n\t\t\t.hover() in/out: 0 / 0\n\t\t
            \n\t\t
            \n\t\t\tMouse over here should NOT trigger the counter.\n\t\t
            \n\t
            \n\t
            \n\t\t
            \n\t\t\t\n\t\t\tLive enter/leave: 0 / 0\n\t\t
            \n\t\t
            \n\t\t\tMouse over here should NOT trigger the counter.\n\t\t
            \n\t
            \n\t
            \n\t\t
            \n\t\t\t\n\t\t\tDelegated enter/leave: 0 / 0\n\t\t
            \n\t\t
            \n\t\t\tMouse over here should NOT trigger the counter.\n\t\t
            \n\t
            \n\n\t
            \n\t\t
            \n\t\t\t\n\t\t\tBind over/out: 0 / 0\n\t\t
            \n\t\t
            \n\t\t\tMouse over here SHOULD trigger the counter.\n\t\t
            \n\t
            \n\t
            \n\t\t
            \n\t\t\t\n\t\t\tLive over/out: 0 / 0\n\t\t
            \n\t\t
            \n\t\t\tMouse over here SHOULD trigger the counter.\n\t\t
            \n\t
            \n\t
            \n\t\t
            \n\t\t\t\n\t\t\tDelegated over/out: 0 / 0\n\t\t
            \n\t\t
            \n\t\t\tMouse over here SHOULD trigger the counter.\n\t\t
            \n\t
            \n\n\t
            \n\n\n\n\n'),a.put("vendor/jquery/test/index.html",'\n\n\n\t\n\t\n\tjQuery Test Suite\n\t\n\t\n\t\n\n\t\n\t\n\n\t\n\n\t\n\t\n\t\n\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\n\t\n\t\n\n\t\n\n\n\n\t
            \n\n\t\n\t\n\t\n\t
            \n\t
            \n\t\t

            See this blog entry for more information.

            \n\t\t

            \n\t\t\tHere are some links in a normal paragraph: Google,\n\t\t\tGoogle Groups (Link).\n\t\t\tThis link has class="blog":\n\t\t\tdiveintomark\n\n\t\t

            \n\t\t
            \n\t\t\t

            Everything inside the red border is inside a div with id="foo".

            \n\t\t\t

            This is a normal link: Yahoo

            \n\t\t\t

            This link has class="blog": Simon Willison\'s Weblog

            \n\n\t\t
            \n\t\t
            \n\t\t\t
            \n\t\t
            \n\t\t\n\t\t

            Try them out:

            \n\t\t
              \n\t\t
                \n\t\t
                \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\n\t\t\ttest element\n\t\t
                \n\t\tFloat test.\n\t\t\n\t\t
                \n\t\t\t\n\t\t\t\n\t\t
                \n\t\t
                \n\n\t\t
                \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
                \n\n\t\t
                \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
                \n\t\t
                \n\t\t\t
                \n\t\t\t\t\n\t\t\t
                \n\t\t\t
                hi there
                \n\t\t\t
                \n\t\t\t\t
                \n\t\t\t
                \n\t\t\t
                \n\t\t\t\t
                \n\t\t\t
                \n\t\t\t
                \n\t\t
                \n\n\t\t
                \n\t\t\t
                  \n\t\t\t\t
                1. Rice
                2. \n\t\t\t\t
                3. Beans
                4. \n\t\t\t\t
                5. Blinis
                6. \n\t\t\t\t
                7. Tofu
                8. \n\t\t\t
                \n\n\t\t\t
                I\'m hungry. I should...
                \n\t\t\t...Eat lots of food... |\n\t\t\t...Eat a little food... |\n\t\t\t...Eat no food...\n\t\t\t...Eat a burger...\n\t\t\t...Eat some funyuns...\n\t\t\t...Eat some funyuns...\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
                \n\n\t\t
                \n\t\t\t\n\t\t\t\n\t\t
                \n\n\t\t
                \n\t\t\t1\n\t\t\t2\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t
                \n\t\t
                \n\t\t\t
                \n\t\t\t\t
                fadeIn
                fadeIn
                \n\t\t\t\t
                fadeOut
                fadeOut
                \n\n\t\t\t\t
                show
                show
                \n\t\t\t\t
                hide
                hide
                \n\t\t\t\t
                hide
                hide
                \n\n\t\t\t\t
                togglein
                togglein
                \n\t\t\t\t
                toggleout
                toggleout
                \n\t\t\t\t
                toggleout
                toggleout
                \n\n\t\t\t\t
                slideUp
                slideUp
                \n\t\t\t\t
                slideDown
                slideDown
                \n\t\t\t\t
                slideUp
                slideUp
                \n\n\t\t\t\t
                slideToggleIn
                slideToggleIn
                \n\t\t\t\t
                slideToggleOut
                slideToggleOut
                \n\n\t\t\t\t
                fadeToggleIn
                fadeToggleIn
                \n\t\t\t\t
                fadeToggleOut
                fadeToggleOut
                \n\n\t\t\t\t
                fadeTo
                fadeTo
                \n\t\t\t
                \n\n\t\t\t
                \n\t\t\t\n\t\t
                \n\t
                \n\t
                \n\t\n\t\t\n\t\n\n\n\n'), a.put("vendor/jquery/test/localfile.html",'\n\n\n\t\n\tjQuery Local File Test\n\t\n\t\n\t\n\n\n\t

                jQuery Local File Test

                \n\t

                \n\t\tIntroduction\n\t

                \n\t
                  \n\t\t
                • \n\t\t\tAccess this file using the "file:" protocol,\n\t\t
                • \n\t\t
                • \n\t\t\ttwo green "OK" strings must appear below,\n\t\t
                • \n\t\t
                • \n\t\t\tEmpty local files will issue errors, it\'s a known limitation.\n\t\t
                • \n\t
                \n\t

                \n\t\tResults\n\t

                \n\t
                  \n\t\t
                • \n\t\t\tSuccess:\n\t\t\t\n\t\t\t\n\t\t
                • \n\t\t
                • \n\t\t\tError:\n\t\t\t\n\t\t\t\n\t\t
                • \n\t
                \n\t

                \n\t\tLogs:\n\t

                \n\t
                  \n\t
                \n\t\n\n'),a.put("vendor/jquery/test/networkerror.html",'\n\n\n\n\t\n\t\tjQuery Network Error Test for Firefox\n\t\n\t\n\t\n\t\n\n\n\t

                \n\t\tjQuery Network Error Test for Firefox\n\t

                \n\t
                \n\t\tThis is a test page for\n\t\t\n\t\t\t#8135\n\t\t\n\t\twhich was reported in Firefox when accessing properties\n\t\tof an XMLHttpRequest object after a network error occurred.\n\t
                \n\t
                Take the following steps:
                \n\t
                  \n\t\t
                1. \n\t\t\tmake sure you accessed this page through a web server,\n\t\t
                2. \n\t\t
                3. \n\t\t\tstop the web server,\n\t\t
                4. \n\t\t
                5. \n\t\t\topen the console,\n\t\t
                6. \n\t\t
                7. \n\t\t\tclick this\n\t\t\t\n\t\t\t,\n\t\t
                8. \n\t\t
                9. \n\t\t\twait for both requests to fail.\n\t\t
                10. \n\t
                \n\t
                \n\t\tTest passes if you get two log lines:\n\t\t
                  \n\t\t\t
                • \n\t\t\t\tthe first starting with "abort",\n\t\t\t
                • \n\t\t\t
                • \n\t\t\t\tthe second starting with "complete",\n\t\t\t
                • \n\t\t
                \n\t
                \n\t
                \n\t\tTest fails if the browser notifies an exception.\n\t
                \n\n\n'),a.put("vendor/jquery/test/readywait.html",'\n\n\n\n\t\n\t\tjQuery.holdReady Test\n\t\n\t\n\t\n\n\t\n\t\n\n\t\n\n\n\t

                \n\t\tjQuery.holdReady Test\n\t

                \n\t

                \n\t\tThis is a test page for jQuery.readyWait and jQuery.holdReady,\n\t\tsee\n\t\t#6781\n\t\tand\n\t\t#8803.\n\t

                \n\t

                \n\tTest for jQuery.holdReady, which can be used\n\tby plugins and other scripts to indicate something\n\timportant to the page is still loading and needs\n\tto block the DOM ready callbacks that are registered\n\twith jQuery.\n\t

                \n\t

                \n\tScript loaders are the most likely kind of script\n\tto use jQuery.holdReady, but it could be used by\n\tother things like a script that loads a CSS file\n\tand wants to pause the DOM ready callbacks.\n\t

                \n\t

                \n\tExpected Result: The text\n\tIt Worked!\n\tappears below after about 2 seconds.\n\t

                \n\t

                \n\tIf there is an error in the console,\n\tor the text does not show up, then the test failed.\n\t

                \n\t
                \n\n\n')}]);