]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fix autocomplete suggestions with numeric user ids 18013/head
authorJoas Schilling <coding@schilljs.com>
Tue, 19 Nov 2019 15:43:46 +0000 (16:43 +0100)
committerRoeland Jago Douma <roeland@famdouma.nl>
Tue, 26 Nov 2019 08:19:49 +0000 (09:19 +0100)
Signed-off-by: Joas Schilling <coding@schilljs.com>
apps/comments/js/comments.js
apps/comments/js/comments.js.map
apps/comments/src/commentstabview.js
core/Controller/AutoCompleteController.php
lib/private/Collaboration/Collaborators/UserPlugin.php
lib/private/Group/Manager.php

index e53e7b984dd83cca2ea3036c6d3011c72cd0158b..3986e3bb0eee0b09f48565502c4a06d96da4e02c 100644 (file)
@@ -1,2 +1,2 @@
-!function(t){var e={};function n(o){if(e[o])return e[o].exports;var i=e[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(o,i,function(e){return t[e]}.bind(null,i));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/js/",n(n.s=3)}([function(t,e){t.exports=jQuery},function(t,e,n){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=function(t,e){var n=t[1]||"",o=t[3];if(!o)return n;if(e&&"function"==typeof btoa){var i=(r=o,s=btoa(unescape(encodeURIComponent(JSON.stringify(r)))),l="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(s),"/*# ".concat(l," */")),a=o.sources.map((function(t){return"/*# sourceURL=".concat(o.sourceRoot).concat(t," */")}));return[n].concat(a).concat([i]).join("\n")}var r,s,l;return[n].join("\n")}(e,t);return e[2]?"@media ".concat(e[2],"{").concat(n,"}"):n})).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var o={},i=0;i<this.length;i++){var a=this[i][0];null!=a&&(o[a]=!0)}for(var r=0;r<t.length;r++){var s=t[r];null!=s[0]&&o[s[0]]||(n&&!s[2]?s[2]=n:n&&(s[2]="(".concat(s[2],") and (").concat(n,")")),e.push(s))}},e}},function(t,e,n){"use strict";function o(t,e){for(var n=[],o={},i=0;i<e.length;i++){var a=e[i],r=a[0],s={id:t+":"+i,css:a[1],media:a[2],sourceMap:a[3]};o[r]?o[r].parts.push(s):n.push(o[r]={id:r,parts:[s]})}return n}n.r(e),n.d(e,"default",(function(){return p}));var i="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!i)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var a={},r=i&&(document.head||document.getElementsByTagName("head")[0]),s=null,l=0,c=!1,m=function(){},u=null,d="data-vue-ssr-id",h="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function p(t,e,n,i){c=n,u=i||{};var r=o(t,e);return f(r),function(e){for(var n=[],i=0;i<r.length;i++){var s=r[i];(l=a[s.id]).refs--,n.push(l)}e?f(r=o(t,e)):r=[];for(i=0;i<n.length;i++){var l;if(0===(l=n[i]).refs){for(var c=0;c<l.parts.length;c++)l.parts[c]();delete a[l.id]}}}}function f(t){for(var e=0;e<t.length;e++){var n=t[e],o=a[n.id];if(o){o.refs++;for(var i=0;i<o.parts.length;i++)o.parts[i](n.parts[i]);for(;i<n.parts.length;i++)o.parts.push(v(n.parts[i]));o.parts.length>n.parts.length&&(o.parts.length=n.parts.length)}else{var r=[];for(i=0;i<n.parts.length;i++)r.push(v(n.parts[i]));a[n.id]={id:n.id,refs:1,parts:r}}}}function g(){var t=document.createElement("style");return t.type="text/css",r.appendChild(t),t}function v(t){var e,n,o=document.querySelector("style["+d+'~="'+t.id+'"]');if(o){if(c)return m;o.parentNode.removeChild(o)}if(h){var i=l++;o=s||(s=g()),e=w.bind(null,o,i,!1),n=w.bind(null,o,i,!0)}else o=g(),e=b.bind(null,o),n=function(){o.parentNode.removeChild(o)};return e(t),function(o){if(o){if(o.css===t.css&&o.media===t.media&&o.sourceMap===t.sourceMap)return;e(t=o)}else n()}}var y,C=(y=[],function(t,e){return y[t]=e,y.filter(Boolean).join("\n")});function w(t,e,n,o){var i=n?"":o.css;if(t.styleSheet)t.styleSheet.cssText=C(e,i);else{var a=document.createTextNode(i),r=t.childNodes;r[e]&&t.removeChild(r[e]),r.length?t.insertBefore(a,r[e]):t.appendChild(a)}}function b(t,e){var n=e.css,o=e.media,i=e.sourceMap;if(o&&t.setAttribute("media",o),u.ssrId&&t.setAttribute(d,e.id),i&&(n+="\n/*# sourceURL="+i.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}},function(t,e,n){"use strict";n.r(e);n(4),n(5),n(6),n(7),n(8),n(9),n(10),n(11),n(12),n(13),n(14),n(15),n(16),n(18);window.OCA.Comments=OCA.Comments},function(t,e){OCA.Comments||(OCA.Comments={})},function(t,e){function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var o,i;o=Handlebars.template,(i=OCA.Comments.Templates=OCA.Comments.Templates||{}).comment=o({1:function(t,e,n,o,i){return" unread"},3:function(t,e,n,o,i){return" collapsed"},5:function(t,e,n,o,i){return" currentUser"},7:function(t,e,n,o,i){var a;return'data-username="'+t.escapeExpression("function"==typeof(a=null!=(a=n.actorId||(null!=e?e.actorId:e))?a:n.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"actorId",hash:{},data:i}):a)+'"'},9:function(t,e,n,o,i){return'\t\t\t<a href="#" class="action more icon icon-more has-tooltip"></a>\n\t\t\t<div class="deleteLoading icon-loading-small hidden"></div>\n'},11:function(t,e,n,o,i){return'\t\t<div class="message-overlay"></div>\n'},compiler:[7,">= 4.0.0"],main:function(t,e,o,i,a){var r,s,l=null!=e?e:t.nullContext||{},c=o.helperMissing,m="function",u=t.escapeExpression;return'<li class="comment'+(null!=(r=o.if.call(l,null!=e?e.isUnread:e,{name:"if",hash:{},fn:t.program(1,a,0),inverse:t.noop,data:a}))?r:"")+(null!=(r=o.if.call(l,null!=e?e.isLong:e,{name:"if",hash:{},fn:t.program(3,a,0),inverse:t.noop,data:a}))?r:"")+'" data-id="'+u(n(s=null!=(s=o.id||(null!=e?e.id:e))?s:c)===m?s.call(l,{name:"id",hash:{},data:a}):s)+'">\n\t<div class="authorRow">\n\t\t<div class="avatar'+(null!=(r=o.if.call(l,null!=e?e.isUserAuthor:e,{name:"if",hash:{},fn:t.program(5,a,0),inverse:t.noop,data:a}))?r:"")+'" '+(null!=(r=o.if.call(l,null!=e?e.actorId:e,{name:"if",hash:{},fn:t.program(7,a,0),inverse:t.noop,data:a}))?r:"")+'> </div>\n\t\t<div class="author'+(null!=(r=o.if.call(l,null!=e?e.isUserAuthor:e,{name:"if",hash:{},fn:t.program(5,a,0),inverse:t.noop,data:a}))?r:"")+'">'+u(n(s=null!=(s=o.actorDisplayName||(null!=e?e.actorDisplayName:e))?s:c)===m?s.call(l,{name:"actorDisplayName",hash:{},data:a}):s)+"</div>\n"+(null!=(r=o.if.call(l,null!=e?e.isUserAuthor:e,{name:"if",hash:{},fn:t.program(9,a,0),inverse:t.noop,data:a}))?r:"")+'\t\t<div class="date has-tooltip live-relative-timestamp" data-timestamp="'+u(n(s=null!=(s=o.timestamp||(null!=e?e.timestamp:e))?s:c)===m?s.call(l,{name:"timestamp",hash:{},data:a}):s)+'" title="'+u(n(s=null!=(s=o.altDate||(null!=e?e.altDate:e))?s:c)===m?s.call(l,{name:"altDate",hash:{},data:a}):s)+'">'+u(n(s=null!=(s=o.date||(null!=e?e.date:e))?s:c)===m?s.call(l,{name:"date",hash:{},data:a}):s)+'</div>\n\t</div>\n\t<div class="message">'+(null!=(r=n(s=null!=(s=o.formattedMessage||(null!=e?e.formattedMessage:e))?s:c)===m?s.call(l,{name:"formattedMessage",hash:{},data:a}):s)?r:"")+"</div>\n"+(null!=(r=o.if.call(l,null!=e?e.isLong:e,{name:"if",hash:{},fn:t.program(11,a,0),inverse:t.noop,data:a}))?r:"")+"</li>\n"},useData:!0}),i.commentsmodifymenu=o({1:function(t,e,o,i,a){var r,s,l=null!=e?e:t.nullContext||{},c=o.helperMissing,m=t.escapeExpression;return'\t\t<li>\n\t\t\t<a href="#" class="menuitem action '+m("function"===n(s=null!=(s=o.name||(null!=e?e.name:e))?s:c)?s.call(l,{name:"name",hash:{},data:a}):s)+' permanent" data-action="'+m("function"===n(s=null!=(s=o.name||(null!=e?e.name:e))?s:c)?s.call(l,{name:"name",hash:{},data:a}):s)+'">\n'+(null!=(r=o.if.call(l,null!=e?e.iconClass:e,{name:"if",hash:{},fn:t.program(2,a,0),inverse:t.program(4,a,0),data:a}))?r:"")+"\t\t\t\t<span>"+m("function"===n(s=null!=(s=o.displayName||(null!=e?e.displayName:e))?s:c)?s.call(l,{name:"displayName",hash:{},data:a}):s)+"</span>\n\t\t\t</a>\n\t\t</li>\n"},2:function(t,e,n,o,i){var a;return'\t\t\t\t\t<span class="icon '+t.escapeExpression("function"==typeof(a=null!=(a=n.iconClass||(null!=e?e.iconClass:e))?a:n.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"iconClass",hash:{},data:i}):a)+'"></span>\n'},4:function(t,e,n,o,i){return'\t\t\t\t\t<span class="no-icon"></span>\n'},compiler:[7,">= 4.0.0"],main:function(t,e,n,o,i){var a;return"<ul>\n"+(null!=(a=n.each.call(null!=e?e:t.nullContext||{},null!=e?e.items:e,{name:"each",hash:{},fn:t.program(1,i,0),inverse:t.noop,data:i}))?a:"")+"</ul>\n"},useData:!0}),i.edit_comment=o({1:function(t,e,n,o,i){var a;return'\t\t\t<div class="action-container">\n\t\t\t\t<a href="#" class="action cancel icon icon-close has-tooltip" title="'+t.escapeExpression("function"==typeof(a=null!=(a=n.cancelText||(null!=e?e.cancelText:e))?a:n.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"cancelText",hash:{},data:i}):a)+'"></a>\n\t\t\t</div>\n'},compiler:[7,">= 4.0.0"],main:function(t,e,o,i,a){var r,s,l=null!=e?e:t.nullContext||{},c=o.helperMissing,m="function",u=t.escapeExpression;return"<"+u(n(s=null!=(s=o.tag||(null!=e?e.tag:e))?s:c)===m?s.call(l,{name:"tag",hash:{},data:a}):s)+' class="newCommentRow comment" data-id="'+u(n(s=null!=(s=o.id||(null!=e?e.id:e))?s:c)===m?s.call(l,{name:"id",hash:{},data:a}):s)+'">\n\t<div class="authorRow">\n\t\t<div class="avatar currentUser" data-username="'+u(n(s=null!=(s=o.actorId||(null!=e?e.actorId:e))?s:c)===m?s.call(l,{name:"actorId",hash:{},data:a}):s)+'"></div>\n\t\t<div class="author currentUser">'+u(n(s=null!=(s=o.actorDisplayName||(null!=e?e.actorDisplayName:e))?s:c)===m?s.call(l,{name:"actorDisplayName",hash:{},data:a}):s)+"</div>\n"+(null!=(r=o.if.call(l,null!=e?e.isEditMode:e,{name:"if",hash:{},fn:t.program(1,a,0),inverse:t.noop,data:a}))?r:"")+'\t</div>\n\t<form class="newCommentForm">\n\t\t<div contentEditable="true" class="message" data-placeholder="'+u(n(s=null!=(s=o.newMessagePlaceholder||(null!=e?e.newMessagePlaceholder:e))?s:c)===m?s.call(l,{name:"newMessagePlaceholder",hash:{},data:a}):s)+'">'+u(n(s=null!=(s=o.message||(null!=e?e.message:e))?s:c)===m?s.call(l,{name:"message",hash:{},data:a}):s)+'</div>\n\t\t<input class="submit icon-confirm has-tooltip" type="submit" value="" title="'+u(n(s=null!=(s=o.submitText||(null!=e?e.submitText:e))?s:c)===m?s.call(l,{name:"submitText",hash:{},data:a}):s)+'"/>\n\t\t<div class="submitLoading icon-loading-small hidden"></div>\n\t</form>\n</'+u(n(s=null!=(s=o.tag||(null!=e?e.tag:e))?s:c)===m?s.call(l,{name:"tag",hash:{},data:a}):s)+">\n"},useData:!0}),i.filesplugin=o({compiler:[7,">= 4.0.0"],main:function(t,e,o,i,a){var r,s=null!=e?e:t.nullContext||{},l=o.helperMissing,c=t.escapeExpression;return'<a class="action action-comment permanent" title="'+c("function"===n(r=null!=(r=o.countMessage||(null!=e?e.countMessage:e))?r:l)?r.call(s,{name:"countMessage",hash:{},data:a}):r)+'" href="#">\n\t<img class="svg" src="'+c("function"===n(r=null!=(r=o.iconUrl||(null!=e?e.iconUrl:e))?r:l)?r.call(s,{name:"iconUrl",hash:{},data:a}):r)+'"/>\n</a>\n'},useData:!0}),i.view=o({compiler:[7,">= 4.0.0"],main:function(t,e,o,i,a){var r,s=null!=e?e:t.nullContext||{},l=o.helperMissing,c=t.escapeExpression;return'<ul class="comments">\n</ul>\n<div class="emptycontent hidden"><div class="icon-comment"></div>\n\t<p>'+c("function"===n(r=null!=(r=o.emptyResultLabel||(null!=e?e.emptyResultLabel:e))?r:l)?r.call(s,{name:"emptyResultLabel",hash:{},data:a}):r)+'</p></div>\n<input type="button" class="showMore hidden" value="'+c("function"===n(r=null!=(r=o.moreLabel||(null!=e?e.moreLabel:e))?r:l)?r.call(s,{name:"moreLabel",hash:{},data:a}):r)+'" name="show-more" id="show-more" />\n<div class="loading hidden" style="height: 50px"></div>\n'},useData:!0})},function(t,e){!function(t,e){_.extend(t.Files.Client,{PROPERTY_FILEID:"{"+t.Files.Client.NS_OWNCLOUD+"}id",PROPERTY_MESSAGE:"{"+t.Files.Client.NS_OWNCLOUD+"}message",PROPERTY_ACTORTYPE:"{"+t.Files.Client.NS_OWNCLOUD+"}actorType",PROPERTY_ACTORID:"{"+t.Files.Client.NS_OWNCLOUD+"}actorId",PROPERTY_ISUNREAD:"{"+t.Files.Client.NS_OWNCLOUD+"}isUnread",PROPERTY_OBJECTID:"{"+t.Files.Client.NS_OWNCLOUD+"}objectId",PROPERTY_OBJECTTYPE:"{"+t.Files.Client.NS_OWNCLOUD+"}objectType",PROPERTY_ACTORDISPLAYNAME:"{"+t.Files.Client.NS_OWNCLOUD+"}actorDisplayName",PROPERTY_CREATIONDATETIME:"{"+t.Files.Client.NS_OWNCLOUD+"}creationDateTime",PROPERTY_MENTIONS:"{"+t.Files.Client.NS_OWNCLOUD+"}mentions"});var n=t.Backbone.Model.extend({sync:t.Backbone.davSync,defaults:{actorType:"users",objectType:"files"},davProperties:{id:t.Files.Client.PROPERTY_FILEID,message:t.Files.Client.PROPERTY_MESSAGE,actorType:t.Files.Client.PROPERTY_ACTORTYPE,actorId:t.Files.Client.PROPERTY_ACTORID,actorDisplayName:t.Files.Client.PROPERTY_ACTORDISPLAYNAME,creationDateTime:t.Files.Client.PROPERTY_CREATIONDATETIME,objectType:t.Files.Client.PROPERTY_OBJECTTYPE,objectId:t.Files.Client.PROPERTY_OBJECTID,isUnread:t.Files.Client.PROPERTY_ISUNREAD,mentions:t.Files.Client.PROPERTY_MENTIONS},parse:function(t){return{id:t.id,message:t.message,actorType:t.actorType,actorId:t.actorId,actorDisplayName:t.actorDisplayName,creationDateTime:t.creationDateTime,objectType:t.objectType,objectId:t.objectId,isUnread:"true"===t.isUnread,mentions:this._parseMentions(t.mentions)}},_parseMentions:function(t){if(_.isUndefined(t))return{};var e={};for(var n in t){var o=t[n];if(!_.isUndefined(o.localName)&&"mention"===o.localName){e[n]={};for(var i=o.firstChild;i;i=i.nextSibling)!_.isUndefined(i.localName)&&i.localName.startsWith("mention")&&(e[n][i.localName]=i.textContent)}}return e}});e.Comments.CommentModel=n}(OC,OCA)},function(t,e){!function(t,e){var n=t.Backbone.Collection.extend({sync:t.Backbone.davSync,model:e.Comments.CommentModel,_objectType:"files",_objectId:null,_endReached:!1,_limit:20,initialize:function(t,e){(e=e||{}).objectType&&(this._objectType=e.objectType),e.objectId&&(this._objectId=e.objectId)},url:function(){return t.linkToRemote("dav")+"/comments/"+encodeURIComponent(this._objectType)+"/"+encodeURIComponent(this._objectId)+"/"},setObjectId:function(t){this._objectId=t},hasMoreResults:function(){return!this._endReached},reset:function(){return this._endReached=!1,this._summaryModel=null,t.Backbone.Collection.prototype.reset.apply(this,arguments)},fetchNext:function(t){var e=this;if(!this.hasMoreResults())return null;var o='<?xml version="1.0" encoding="utf-8" ?>\n<oc:filter-comments xmlns:D="DAV:" xmlns:oc="http://owncloud.org/ns">\n    <oc:limit>'+(this._limit+1)+"</oc:limit>\n    <oc:offset>"+this.length+"</oc:offset>\n</oc:filter-comments>\n",i=(t=t||{}).success;return t=_.extend({remove:!1,parse:!0,data:o,davProperties:n.prototype.model.prototype.davProperties,success:function(n){if(n.length<=e._limit?e._endReached=!0:n=_.initial(n),!e.set(n,t))return!1;i&&i.apply(null,arguments),e.trigger("sync","REPORT",e,t)}},t),this.sync("REPORT",this,t)},getSummaryModel:function(){return this._summaryModel||(this._summaryModel=new e.Comments.CommentSummaryModel({id:this._objectId,objectType:this._objectType})),this._summaryModel},updateReadMarker:function(t,e){return e=e||{},this.getSummaryModel().save({readMarker:(t||new Date).toUTCString()},e)}});e.Comments.CommentCollection=n}(OC,OCA)},function(t,e){!function(t,e){_.extend(t.Files.Client,{PROPERTY_READMARKER:"{"+t.Files.Client.NS_OWNCLOUD+"}readMarker"});var n=t.Backbone.Model.extend({sync:t.Backbone.davSync,_objectType:"files",_objectId:null,davProperties:{readMarker:t.Files.Client.PROPERTY_READMARKER},initialize:function(t,e){(e=e||{}).objectType&&(this._objectType=e.objectType)},url:function(){return t.linkToRemote("dav")+"/comments/"+encodeURIComponent(this._objectType)+"/"+encodeURIComponent(this.id)+"/"}});e.Comments.CommentSummaryModel=n}(OC,OCA)},function(e,n){!function(e,n){var o=n.Files.DetailTabView.extend({id:"commentsTabView",className:"tab commentsTabView",_autoCompleteData:void 0,_commentsModifyMenu:void 0,events:{"submit .newCommentForm":"_onSubmitComment","click .showMore":"_onClickShowMore","click .cancel":"_onClickCloseComment","click .comment":"_onClickComment","keyup div.message":"_onTextChange","change div.message":"_onTextChange","input div.message":"_onTextChange","paste div.message":"_onPaste"},_commentMaxLength:1e3,initialize:function(){n.Files.DetailTabView.prototype.initialize.apply(this,arguments),this.collection=new n.Comments.CommentCollection,this.collection.on("request",this._onRequest,this),this.collection.on("sync",this._onEndRequest,this),this.collection.on("add",this._onAddModel,this),this.collection.on("change:message",this._onChangeModel,this),this._commentMaxThreshold=.9*this._commentMaxLength,_.bindAll(this,"_onTypeComment","_initAutoComplete","_onAutoComplete")},template:function(t){var o=e.getCurrentUser();return n.Comments.Templates.view(_.extend({actorId:o.uid,actorDisplayName:o.displayName},t))},editCommentTemplate:function(o){var i=e.getCurrentUser();return n.Comments.Templates.edit_comment(_.extend({actorId:i.uid,actorDisplayName:i.displayName,newMessagePlaceholder:t("comments","New comment …"),submitText:t("comments","Post"),cancelText:t("comments","Cancel"),tag:"li"},o))},commentTemplate:function(o){return"deleted_users"===(o=_.extend({editTooltip:t("comments","Edit comment"),isUserAuthor:e.getCurrentUser().uid===o.actorId,isLong:this._isLong(o.message)},o)).actorType&&(o.actorId=null,o.actorDisplayName=t("comments","[Deleted user]")),n.Comments.Templates.comment(o)},getLabel:function(){return t("comments","Comments")},getIcon:function(){return"icon-comment"},setFileInfo:function(t){t?(this.model=t,this.render(),this._initAutoComplete($("#commentsTabView").find(".newCommentForm .message")),this.collection.setObjectId(this.model.id),this.collection.reset([],{silent:!0}),this.nextPage()):(this.model=null,this.render(),this.collection.reset())},render:function(){this.$el.html(this.template({emptyResultLabel:t("comments","No comments yet, start the conversation!"),moreLabel:t("comments","More comments …")})),this.$el.find(".comments").before(this.editCommentTemplate({tag:"div"})),this.$el.find(".has-tooltip").tooltip(),this.$container=this.$el.find("ul.comments"),this.$el.find(".avatar").avatar(e.getCurrentUser().uid,32),this.delegateEvents(),this.$el.find(".message").on("keydown input change",this._onTypeComment),autosize(this.$el.find(".newCommentRow .message")),this.$el.find(".newCommentForm .message").focus()},_initAutoComplete:function(t){var n=this,o=10;_.isUndefined(e.appConfig.comments)||(o=e.appConfig.comments.maxAutoCompleteResults),t.atwho({at:"@",limit:o,callbacks:{remoteFilter:n._onAutoComplete,highlighter:function(t){var e=$(t);return e.find(".avatar").avatar(void 0,32),e},sorter:function(t,e){return e}},displayTpl:function(t){return'<li><span class="avatar-name-wrapper"><span class="avatar" data-username="'+escapeHTML(t.id)+'" data-user="'+escapeHTML(t.id)+'" data-user-display-name="'+escapeHTML(t.label)+'"></span><strong>'+escapeHTML(t.label)+"</strong></span></li>"},insertTpl:function(t){return'<span class="avatar-name-wrapper"><span class="avatar" data-username="'+escapeHTML(t.id)+'" data-user="'+escapeHTML(t.id)+'" data-user-display-name="'+escapeHTML(t.label)+'"></span><strong>'+escapeHTML(t.label)+"</strong></span>"},searchKey:"label"}),t.on("inserted.atwho",(function(t,e){n._postRenderItem($(t.target).find('span[data-username="'+e.find("[data-username]").data("username")+'"]').parent(),!0)}))},_onAutoComplete:function(t,n){var o=this;_.isUndefined(this._autoCompleteRequestTimer)||clearTimeout(this._autoCompleteRequestTimer),this._autoCompleteRequestTimer=_.delay((function(){_.isUndefined(this._autoCompleteRequestCall)||this._autoCompleteRequestCall.abort(),this._autoCompleteRequestCall=$.ajax({url:e.linkToOCS("core",2)+"autocomplete/get",data:{search:t,itemType:"files",itemId:o.model.get("id"),sorter:"commenters|share-recipients",limit:e.appConfig.comments.maxAutoCompleteResults},beforeSend:function(t){t.setRequestHeader("Accept","application/json")},success:function(t){n(t.ocs.data)}})}),400)},_formatItem:function(t){var n=new Date(t.get("creationDateTime")).getTime();return _.extend({timestamp:n,date:e.Util.relativeModifiedDate(n),altDate:e.Util.formatDate(n),formattedMessage:this._formatMessage(t.get("message"),t.get("mentions"))},t.attributes)},_toggleLoading:function(t){this._loading=t,this.$el.find(".loading").toggleClass("hidden",!t)},_onRequest:function(t){"REPORT"===t&&(this._toggleLoading(!0),this.$el.find(".showMore").addClass("hidden"))},_onEndRequest:function(t){var e=this.model;(this._toggleLoading(!1),this.$el.find(".emptycontent").toggleClass("hidden",!!this.collection.length),this.$el.find(".showMore").toggleClass("hidden",!this.collection.hasMoreResults()),"REPORT"===t)&&(this.collection.findWhere({isUnread:!0})&&this.collection.updateReadMarker(null,{success:function(){e.set("commentsUnread",0)}}),this.$el.find(".newCommentForm .message").focus())},_onAddModel:function(t,e,n){var o=$(this.commentTemplate(this._formatItem(t)));!_.isUndefined(n.at)&&e.length>1?this.$container.find("li").eq(n.at).before(o):this.$container.append(o),this._postRenderItem(o),$("#commentsTabView").find(".newCommentForm div.message").text("").prop("contenteditable",!0);var i=t.get("mentions"),a=this;t.fetch({success:function(t){if(!_.isEqual(i,t.get("mentions"))){var e=$(a.commentTemplate(a._formatItem(t)));o.html(e.html()),a._postRenderItem(o)}}})},_onChangeModel:function(t){if(t.get("message").trim()!==t.previous("message").trim()){var e=this.$container.find('.comment[data-id="'+t.id+'"] form').closest(".comment"),n=e.data("commentEl");if(!_.isUndefined(n)){var o=this;t.fetch({success:function(t){n.removeClass("hidden"),e.remove();var i=n.find(".message");i.html(o._formatMessage(t.get("message"),t.get("mentions"))).find(".avatar").each((function(){$(this).avatar()})),o._postRenderItem(i)}})}}},_postRenderItem:function(t,o){t.find(".has-tooltip").tooltip();var i=t.find(".message .avatar");$(t.context).hasClass("message")&&(i=t.find(".avatar")),i.each((function(){var t=$(this);t.avatar(t.attr("data-username"),16)})),t.find(".authorRow .avatar").each((function(){var t=$(this);t.avatar(t.attr("data-username"),32)}));var a=t.find(".avatar").data("username");a!==e.getCurrentUser().uid&&t.find(".authorRow .avatar, .authorRow .author").contactsMenu(a,0,t.find(".authorRow"));var r=t.find(".message");if(0===r.length&&(r=t),!o){var s=this,l=new n.Comments.CommentsModifyMenu;t.find(".authorRow").append(l.$el),t.find(".more").on("click",_.bind(l.show,l)),s.listenTo(l,"select:menu-item-clicked",(function(t,e){"edit"===e?s._onClickEditComment(t):"delete"===e&&s._onClickDeleteComment(t)}))}this._postRenderMessage(r,o)},_postRenderMessage:function(t,n){n||t.find(".avatar-name-wrapper").each((function(){var t=$(this),n=t.find(".avatar").data("user");n!==e.getCurrentUser().uid&&t.contactsMenu(n,0,t)}))},_formatMessage:function(t,e,n){for(var o in t=escapeHTML(t).replace(/\n/g,"<br/>"),e){if(!e.hasOwnProperty(o))return;var i="@"+e[o].mentionId;-1!==e[o].mentionId.indexOf(" ")&&(i=_.escape('@"'+e[o].mentionId+'"')),i=i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");var a=new RegExp("(^|\\s)("+i+")\\b","g");-1!==e[o].mentionId.indexOf(" ")&&(a=new RegExp("(^|\\s)("+i+")","g"));var r=this._composeHTMLMention(e[o].mentionId,e[o].mentionDisplayName);t=t.replace(a,(function(t,e){return e+r}))}return!0!==n&&(t=OCP.Comments.plainToRich(t)),t},_composeHTMLMention:function(t,n){var o='<span class="avatar" data-username="'+_.escape(t)+'" data-user="'+_.escape(t)+'" data-user-display-name="'+_.escape(n)+'"></span>';return'<span class="atwho-inserted" contenteditable="false"><span class="avatar-name-wrapper'+(t===e.getCurrentUser().uid?" currentUser":"")+'">'+o+"<strong>"+_.escape(n)+"</strong></span></span>"},nextPage:function(){!this._loading&&this.collection.hasMoreResults()&&this.collection.fetchNext()},_onClickEditComment:function(e){e.preventDefault();var n=$(e.target).closest(".comment"),o=n.data("id"),i=this.collection.get(o),a=$(this.editCommentTemplate(_.extend({isEditMode:!0,submitText:t("comments","Save")},i.attributes)));n.addClass("hidden").removeClass("collapsed"),n.after(a),a.data("commentEl",n),a.find(".message").on("keydown input change",this._onTypeComment),a.find(".avatar:first").replaceWith(n.find(".avatar:first").clone()),a.find(".has-tooltip").tooltip();var r=a.find(".message");r.html(this._formatMessage(i.get("message"),i.get("mentions"),!0)).find(".avatar").each((function(){$(this).avatar()}));return this._postRenderItem(r,!0),autosize(a.find(".message")),this._initAutoComplete(a.find(".message")),!1},_onTypeComment:function(e){var n=$(e.target),o=n.text().length,i=n.data("submitButtonEl");i||(i=n.closest("form").find(".submit"),n.data("submitButtonEl",i)),n.tooltip("hide"),o>this._commentMaxThreshold&&(n.attr("data-original-title",t("comments","Allowed characters {count} of {max}",{count:o,max:this._commentMaxLength})),n.tooltip({trigger:"manual"}),n.tooltip("show"),n.addClass("error"));var a=o>this._commentMaxLength;n.toggleClass("error",a),i.prop("disabled",a),13!==e.keyCode||e.shiftKey||n.atwho("isSelecting")||(i.click(),e.preventDefault())},_onClickComment:function(t){var e=$(t.target);e.is(".comment")||(e=e.closest(".comment")),e.removeClass("collapsed")},_onClickCloseComment:function(t){t.preventDefault();var e=$(t.target).closest(".comment");return e.data("commentEl").removeClass("hidden"),e.remove(),!1},_onClickDeleteComment:function(n){n.preventDefault();var o=$(n.target).closest(".comment"),i=o.data("id"),a=o.find(".deleteLoading"),r=o.find(".more");return o.addClass("disabled"),a.removeClass("hidden"),r.addClass("hidden"),o.data("commentEl",o),this.collection.get(i).destroy({success:function(){o.data("commentEl").remove(),o.remove()},error:function(){a.addClass("hidden"),r.removeClass("hidden"),o.removeClass("disabled"),e.Notification.showTemporary(t("comments","Error occurred while retrieving comment with ID {id}",{id:i}))}}),!1},_onClickShowMore:function(t){t.preventDefault(),this.nextPage()},_onSubmitSuccess:function(t,e){var n=e.find(".submit"),o=e.find(".submitLoading");n.removeClass("hidden"),o.addClass("hidden")},_commentBodyHTML2Plain:function(t){var e,n=t.clone();n.find(".avatar-name-wrapper").each((function(){var t=$(this),e=t.parent(),n=t.find(".avatar").data("username");-1!==n.indexOf(" ")?e.html('@"'+n+'"'):e.html("@"+n)})),n.html(OCP.Comments.richToPlain(n.html()));var o=n.html();do{o=(e=o).replace("<br>","\n")}while(e!==o);return n.html(o),n.text()},_onSubmitComment:function(t){var n=this,o=$(t.target),i=o.closest(".comment").data("id"),a=e.getCurrentUser(),r=o.find(".submit"),s=o.find(".submitLoading"),l=o.find(".message"),c=l.text().trim();if(t.preventDefault(),c.length&&!(c.length>this._commentMaxLength)){if(l.prop("contenteditable",!1),r.addClass("hidden"),s.removeClass("hidden"),c=this._commentBodyHTML2Plain(l),i)this.collection.get(i).save({message:c},{success:function(t){if(n._onSubmitSuccess(t,o),t.get("message").trim()===t.previous("message").trim()){var e=o.closest(".comment");e.data("commentEl").removeClass("hidden"),e.remove()}},error:function(){n._onSubmitError(o,i)}});else this.collection.create({actorId:a.uid,actorDisplayName:a.displayName,actorType:"users",verb:"comment",message:c,creationDateTime:(new Date).toUTCString()},{at:0,wait:!0,success:function(t){n._onSubmitSuccess(t,o)},error:function(){n._onSubmitError(o,void 0)}});return!1}},_onSubmitError:function(n,o){n.find(".submit").removeClass("hidden"),n.find(".submitLoading").addClass("hidden"),n.find(".message").prop("contenteditable",!0),_.isUndefined(o)?e.Notification.show(t("comments","Error occurred while posting comment"),{type:"error"}):e.Notification.show(t("comments","Error occurred while updating comment with id {id}",{id:o}),{type:"error"})},_onTextChange:function(){var t=$("#commentsTabView").find(".newCommentForm div.message");t.text().trim().length||t.empty()},_onPaste:function(t){t.preventDefault();var e=t.originalEvent.clipboardData.getData("text/plain");document.execCommand("insertText",!1,e)},_isLong:function(t){return t.length>250||(t.match(/\n/g)||[]).length>1}});n.Comments.CommentsTabView=o}(OC,OCA)},function(e,n){var o;OC,OCA,o=OC.Backbone.View.extend({tagName:"div",className:"commentsModifyMenu popovermenu bubble menu",_scopes:[{name:"edit",displayName:t("comments","Edit comment"),iconClass:"icon-rename"},{name:"delete",displayName:t("comments","Delete comment"),iconClass:"icon-delete"}],initialize:function(){},events:{"click a.action":"_onClickAction"},_onClickAction:function(t){var e=$(t.currentTarget);e.hasClass("menuitem")||(e=e.closest(".menuitem")),OC.hideMenus(),this.trigger("select:menu-item-clicked",t,e.data("action"))},render:function(){this.$el.html(OCA.Comments.Templates.commentsmodifymenu({items:this._scopes}))},show:function(t){for(var e in this._context=t,this._scopes)this._scopes[e].active=!1;var n=$(t.target),o=n.offset(),i=n.closest(".authorRow").offset(),a={top:o.top-i.top+48,left:"",right:""};a.left=o.left-i.left,a.left>200?(a.left="",a.right=this.$el.closest(".comment").find(".date").width(),this.$el.removeClass("menu-left").addClass("menu-right")):this.$el.removeClass("menu-right").addClass("menu-left"),this.$el.css(a),this.render(),this.$el.removeClass("hidden"),OC.showMenu(null,this.$el)}}),OCA.Comments=OCA.Comments||{},OCA.Comments.CommentsModifyMenu=o},function(e,o){_.extend(OC.Files.Client,{PROPERTY_COMMENTS_UNREAD:"{"+OC.Files.Client.NS_OWNCLOUD+"}comments-unread"}),OCA.Comments=_.extend({},OCA.Comments),OCA.Comments||(OCA.Comments={}),OCA.Comments.FilesPlugin={ignoreLists:["trashbin","files.public"],_formatCommentCount:function(t){return OCA.Comments.Templates.filesplugin({count:t,countMessage:n("comments","%n unread comment","%n unread comments",t),iconUrl:OC.imagePath("core","actions/comment")})},attach:function(e){var o=this;if(!(this.ignoreLists.indexOf(e.id)>=0)){e.registerTabView(new OCA.Comments.CommentsTabView("commentsTabView"));var i=e._getWebdavProperties;e._getWebdavProperties=function(){var t=i.apply(this,arguments);return t.push(OC.Files.Client.PROPERTY_COMMENTS_UNREAD),t},e.filesClient.addFileInfoParser((function(t){var e={},n=t.propStat[0].properties[OC.Files.Client.PROPERTY_COMMENTS_UNREAD];return _.isUndefined(n)||""===n||(e.commentsUnread=parseInt(n,10)),e})),e.$el.addClass("has-comments");var a=e._createRow;e._createRow=function(t){var e=a.apply(this,arguments);return t.commentsUnread&&e.attr("data-comments-unread",t.commentsUnread),e},e.fileActions.registerAction({name:"Comment",displayName:function(e){if(e&&e.$file){var o=parseInt(e.$file.data("comments-unread"),10);if(o>=0)return n("comments","1 new comment","{unread} new comments",o,{unread:o})}return t("comments","Comment")},mime:"all",order:-140,iconClass:"icon-comment",permissions:OC.PERMISSION_READ,type:OCA.Files.FileActions.TYPE_INLINE,render:function(t,e,n){var i=n.$file.data("comments-unread");if(i){var a=$(o._formatCommentCount(i));return n.$file.find("a.name>span.fileactions").append(a),a}return""},actionHandler:function(t,e){e.$file.find(".action-comment").tooltip("hide"),e.fileList.showDetailsView(t,"comments")}});var r=e.elementToFile;e.elementToFile=function(t){var e=r.apply(this,arguments),n=t.data("comments-unread");return n&&(e.commentsUnread=n),e}}}},OC.Plugins.register("OCA.Files.FileList",OCA.Comments.FilesPlugin)},function(t,e){OCA.Comments.ActivityTabViewPlugin={prepareModelForDisplay:function(t,e,n){if("comments"===t.get("app")&&"comments"===t.get("type")&&"ActivityTabView"===n&&(e.addClass("comment"),t.get("message")&&this._isLong(t.get("message")))){e.addClass("collapsed");var o=$("<div>").addClass("message-overlay");e.find(".activitymessage").after(o),e.on("click",this._onClickCollapsedComment)}},_onClickCollapsedComment:function(t){var e=$(t.target);e.is(".comment")||(e=e.closest(".comment")),e.removeClass("collapsed")},_isLong:function(t){return t.length>250||(t.match(/\n/g)||[]).length>1}},OC.Plugins.register("OCA.Activity.RenderingPlugins",OCA.Comments.ActivityTabViewPlugin)},function(t,e){!function(t,e,n){"use strict";var o=function(){this.initialize()};o.prototype={fileList:null,initialize:function(){var o=this;this.fileAppLoaded=function(){return!!e.Files&&!!e.Files.App},this.renderCommentResult=function(e,o){var i;(i=n(".nofilterresults")).hasClass("hidden")||i.addClass("hidden"),this.updateLegacyMimetype(o);var a=n("<div>").addClass("path").text(o.path),r=n("<div>");r.addClass("avatar").css("display","inline-block").css("vertical-align","middle").css("margin","0 5px 2px 3px"),o.authorName?r.avatar(o.authorId,21,void 0,!1,void 0,o.authorName):r.avatar(o.authorId,21),e.find("td.info div.name").after(a).text(o.comment).prepend(n("<span>").addClass("path").css("margin-right","5px").text(o.authorName)).prepend(r),e.find("td.result a").attr("href",o.link),e.find("td.icon").css("background-image","url("+t.imagePath("core","actions/comment")+")").css("opacity",".4");var s=t.dirname(o.path);return s===o.path&&(s="/"),e.find("td.info a").attr("href",t.generateUrl("/apps/files/?dir={dir}&scrollto={scrollto}",{dir:s,scrollto:o.fileName})),e},this.handleCommentClick=function(e,n,i){return!o.fileAppLoaded()||"files"!==o.fileList.id||(o.fileList.changeDirectory(t.dirname(n.path)),o.fileList.scrollTo(n.name),!1)},this.updateLegacyMimetype=function(t){!t.mime&&t.mime_type&&(t.mime=t.mime_type)},this.setFileList=function(t){this.fileList=t},t.Plugins.register("OCA.Search.Core",this)},attach:function(t){t.setRenderer("comment",this.renderCommentResult.bind(this)),t.setHandler("comment",this.handleCommentClick.bind(this))}},e.Search.comment=new o}(OC,OCA,$)},function(t,e,n){var o,i,a;a=this,o=[n(0)],void 0===(i=function(t){return a.returnExportsGlobal=function(t){"use strict";var e,n,o,i,a,r,s,l;e=function(){function e(t){this.$inputor=t,this.domInputor=this.$inputor[0]}return e.prototype.setPos=function(){return this.domInputor},e.prototype.getIEPosition=function(){return this.getPosition()},e.prototype.getPosition=function(){var t,e;return e=this.getOffset(),t=this.$inputor.offset(),e.left-=t.left,e.top-=t.top,e},e.prototype.getOldIEPos=function(){var t,e;return e=r.selection.createRange(),(t=r.body.createTextRange()).moveToElementText(this.domInputor),t.setEndPoint("EndToEnd",e),t.text.length},e.prototype.getPos=function(){var t,e,n;return(n=this.range())?((t=n.cloneRange()).selectNodeContents(this.domInputor),t.setEnd(n.endContainer,n.endOffset),e=t.toString().length,t.detach(),e):r.selection?this.getOldIEPos():void 0},e.prototype.getOldIEOffset=function(){var t,e;return(t=r.selection.createRange().duplicate()).moveStart("character",-1),{height:(e=t.getBoundingClientRect()).bottom-e.top,left:e.left,top:e.top}},e.prototype.getOffset=function(){var e,n,o,i,a;return s.getSelection&&(o=this.range())?(o.endOffset-1>0&&o.endContainer===!this.domInputor&&((e=o.cloneRange()).setStart(o.endContainer,o.endOffset-1),e.setEnd(o.endContainer,o.endOffset),n={height:(i=e.getBoundingClientRect()).height,left:i.left+i.width,top:i.top},e.detach()),n&&0!==(null!=n?n.height:void 0)||(e=o.cloneRange(),a=t(r.createTextNode("|")),e.insertNode(a[0]),e.selectNode(a[0]),n={height:(i=e.getBoundingClientRect()).height,left:i.left,top:i.top},a.remove(),e.detach())):r.selection&&(n=this.getOldIEOffset()),n&&(n.top+=t(s).scrollTop(),n.left+=t(s).scrollLeft()),n},e.prototype.range=function(){var t;if(s.getSelection)return(t=s.getSelection()).rangeCount>0?t.getRangeAt(0):null},e}(),n=function(){function e(t){this.$inputor=t,this.domInputor=this.$inputor[0]}return e.prototype.getIEPos=function(){var t,e,n,o,i,a;return e=this.domInputor,o=0,(i=r.selection.createRange())&&i.parentElement()===e&&(n=e.value.replace(/\r\n/g,"\n").length,(a=e.createTextRange()).moveToBookmark(i.getBookmark()),(t=e.createTextRange()).collapse(!1),o=a.compareEndPoints("StartToEnd",t)>-1?n:-a.moveStart("character",-n)),o},e.prototype.getPos=function(){return r.selection?this.getIEPos():this.domInputor.selectionStart},e.prototype.setPos=function(t){var e,n;return e=this.domInputor,r.selection?((n=e.createTextRange()).move("character",t),n.select()):e.setSelectionRange&&e.setSelectionRange(t,t),e},e.prototype.getIEOffset=function(t){var e;return e=this.domInputor.createTextRange(),t||(t=this.getPos()),e.move("character",t),{left:e.boundingLeft,top:e.boundingTop,height:e.boundingHeight}},e.prototype.getOffset=function(e){var n,o,i;return n=this.$inputor,r.selection?((o=this.getIEOffset(e)).top+=t(s).scrollTop()+n.scrollTop(),o.left+=t(s).scrollLeft()+n.scrollLeft(),o):(o=n.offset(),i=this.getPosition(e),o={left:o.left+i.left-n.scrollLeft(),top:o.top+i.top-n.scrollTop(),height:i.height})},e.prototype.getPosition=function(t){var e,n,i,a,r;return e=this.$inputor,i=function(t){return t=t.replace(/<|>|`|"|&/g,"?").replace(/\r\n|\r|\n/g,"<br/>"),/firefox/i.test(navigator.userAgent)&&(t=t.replace(/\s/g,"&nbsp;")),t},void 0===t&&(t=this.getPos()),r=e.val().slice(0,t),n=e.val().slice(t),a="<span style='position: relative; display: inline;'>"+i(r)+"</span>",a+="<span id='caret' style='position: relative; display: inline;'>|</span>",a+="<span style='position: relative; display: inline;'>"+i(n)+"</span>",new o(e).create(a).rect()},e.prototype.getIEPosition=function(t){var e,n;return n=this.getIEOffset(t),e=this.$inputor.offset(),{left:n.left-e.left,top:n.top-e.top,height:n.height}},e}(),o=function(){function e(t){this.$inputor=t}return e.prototype.css_attr=["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","boxSizing","fontFamily","fontSize","fontWeight","height","letterSpacing","lineHeight","marginBottom","marginLeft","marginRight","marginTop","outlineWidth","overflow","overflowX","overflowY","paddingBottom","paddingLeft","paddingRight","paddingTop","textAlign","textOverflow","textTransform","whiteSpace","wordBreak","wordWrap"],e.prototype.mirrorCss=function(){var e,n=this;return e={position:"absolute",left:-9999,top:0,zIndex:-2e4},"TEXTAREA"===this.$inputor.prop("tagName")&&this.css_attr.push("width"),t.each(this.css_attr,(function(t,o){return e[o]=n.$inputor.css(o)})),e},e.prototype.create=function(e){return this.$mirror=t("<div></div>"),this.$mirror.css(this.mirrorCss()),this.$mirror.html(e),this.$inputor.after(this.$mirror),this},e.prototype.rect=function(){var t,e,n;return n={left:(e=(t=this.$mirror.find("#caret")).position()).left,top:e.top,height:t.height()},this.$mirror.remove(),n},e}(),i={contentEditable:function(t){return!(!t[0].contentEditable||"true"!==t[0].contentEditable)}},a={pos:function(t){return t||0===t?this.setPos(t):this.getPos()},position:function(t){return r.selection?this.getIEPosition(t):this.getPosition(t)},offset:function(t){return this.getOffset(t)}},r=null,s=null,l=function(t){var e;return(e=null!=t?t.iframe:void 0)?(s=e.contentWindow,r=e.contentDocument||s.document):(s=window,r=document)},t.fn.caret=function(o,r,s){var c;return a[o]?(t.isPlainObject(r)?(l(r),r=void 0):l(s),c=i.contentEditable(this)?new e(this):new n(this),a[o].apply(c,[r])):t.error("Method "+o+" does not exist on jQuery.caret")},t.fn.caret.EditableCaret=e,t.fn.caret.InputCaret=n,t.fn.caret.Utils=i,t.fn.caret.apis=a}(t)}.apply(e,o))||(t.exports=i)},function(t,e,n){var o,i;function a(t){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}o=[n(0)],void 0===(i=function(t){return function(t){var e,n,o;n={ESC:27,TAB:9,ENTER:13,CTRL:17,A:65,P:80,N:78,LEFT:37,UP:38,RIGHT:39,DOWN:40,BACKSPACE:8,SPACE:32},e={beforeSave:function(t){return i.arrayToDefaultHash(t)},matcher:function(t,e,n,o){var i,a,r;return t=t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),n&&(t="(?:^|\\s)"+t),i=decodeURI("%C3%80"),a=decodeURI("%C3%BF"),(r=new RegExp(t+"([A-Za-z"+i+"-"+a+"0-9_"+(o?" ":"")+"'.+-]*)$|"+t+"([^\\x00-\\xff]*)$","gi").exec(e))?r[2]||r[1]:null},filter:function(t,e,n){var o,i,a,r;for(o=[],i=0,r=e.length;r>i;i++)a=e[i],~new String(a[n]).toLowerCase().indexOf(t.toLowerCase())&&o.push(a);return o},remoteFilter:null,sorter:function(t,e,n){var o,i,a,r;if(!t)return e;for(o=[],i=0,r=e.length;r>i;i++)(a=e[i]).atwho_order=new String(a[n]).toLowerCase().indexOf(t.toLowerCase()),a.atwho_order>-1&&o.push(a);return o.sort((function(t,e){return t.atwho_order-e.atwho_order}))},tplEval:function(t,e){var n;n=t;try{return"string"!=typeof t&&(n=t(e)),n.replace(/\$\{([^\}]*)\}/g,(function(t,n,o){return e[n]}))}catch(t){return""}},highlighter:function(t,e){var n;return e?(n=new RegExp(">\\s*([^<]*?)("+e.replace("+","\\+")+")([^<]*)\\s*<","ig"),t.replace(n,(function(t,e,n,o){return"> "+e+"<strong>"+n+"</strong>"+o+" <"}))):t},beforeInsert:function(t,e,n){return t},beforeReposition:function(t){return t},afterMatchFailed:function(t,e){}},o=function(){function e(e){this.currentFlag=null,this.controllers={},this.aliasMaps={},this.$inputor=t(e),this.setupRootElement(),this.listen()}return e.prototype.createContainer=function(e){var n;return null!=(n=this.$el)&&n.remove(),t(e.body).append(this.$el=t("<div class='atwho-container'></div>"))},e.prototype.setupRootElement=function(e,n){var o,i;if(null==n&&(n=!1),e)this.window=e.contentWindow,this.document=e.contentDocument||this.window.document,this.iframe=e;else{this.document=this.$inputor[0].ownerDocument,this.window=this.document.defaultView||this.document.parentWindow;try{this.iframe=this.window.frameElement}catch(i){if(o=i,this.iframe=null,t.fn.atwho.debug)throw new Error("iframe auto-discovery is failed.\nPlease use `setIframe` to set the target iframe manually.\n"+o)}}return this.createContainer((this.iframeAsRoot=n)?this.document:document)},e.prototype.controller=function(t){var e,n,o,i;if(this.aliasMaps[t])n=this.controllers[this.aliasMaps[t]];else for(o in i=this.controllers)if(e=i[o],o===t){n=e;break}return n||this.controllers[this.currentFlag]},e.prototype.setContextFor=function(t){return this.currentFlag=t,this},e.prototype.reg=function(t,e){var n,o;return o=(n=this.controllers)[t]||(n[t]=this.$inputor.is("[contentEditable]")?new l(this,t):new s(this,t)),e.alias&&(this.aliasMaps[e.alias]=t),o.init(e),this},e.prototype.listen=function(){return this.$inputor.on("compositionstart",function(t){return function(e){var n;return null!=(n=t.controller())&&n.view.hide(),t.isComposing=!0,null}}(this)).on("compositionend",function(t){return function(e){return t.isComposing=!1,setTimeout((function(e){return t.dispatch(e)})),null}}(this)).on("keyup.atwhoInner",function(t){return function(e){return t.onKeyup(e)}}(this)).on("keydown.atwhoInner",function(t){return function(e){return t.onKeydown(e)}}(this)).on("blur.atwhoInner",function(t){return function(e){var n;return(n=t.controller())?(n.expectedQueryCBId=null,n.view.hide(e,n.getOpt("displayTimeout"))):void 0}}(this)).on("click.atwhoInner",function(t){return function(e){return t.dispatch(e)}}(this)).on("scroll.atwhoInner",function(t){return function(){var e;return e=t.$inputor.scrollTop(),function(n){var o,i;return o=n.target.scrollTop,e!==o&&null!=(i=t.controller())&&i.view.hide(n),e=o,!0}}}(this)())},e.prototype.shutdown=function(){var t,e;for(t in e=this.controllers)e[t].destroy(),delete this.controllers[t];return this.$inputor.off(".atwhoInner"),this.$el.remove()},e.prototype.dispatch=function(t){var e,n,o,i;for(e in i=[],o=this.controllers)n=o[e],i.push(n.lookUp(t));return i},e.prototype.onKeyup=function(e){var o;switch(e.keyCode){case n.ESC:e.preventDefault(),null!=(o=this.controller())&&o.view.hide();break;case n.DOWN:case n.UP:case n.CTRL:case n.ENTER:t.noop();break;case n.P:case n.N:e.ctrlKey||this.dispatch(e);break;default:this.dispatch(e)}},e.prototype.onKeydown=function(e){var o,i;if((i=null!=(o=this.controller())?o.view:void 0)&&i.visible())switch(e.keyCode){case n.ESC:e.preventDefault(),i.hide(e);break;case n.UP:e.preventDefault(),i.prev();break;case n.DOWN:e.preventDefault(),i.next();break;case n.P:if(!e.ctrlKey)return;e.preventDefault(),i.prev();break;case n.N:if(!e.ctrlKey)return;e.preventDefault(),i.next();break;case n.TAB:case n.ENTER:case n.SPACE:if(!i.visible())return;if(!this.controller().getOpt("spaceSelectsMatch")&&e.keyCode===n.SPACE)return;if(!this.controller().getOpt("tabSelectsMatch")&&e.keyCode===n.TAB)return;i.highlighted()?(e.preventDefault(),i.choose(e)):i.hide(e);break;default:t.noop()}},e}();var i,r=[].slice;i=function(){function n(e,n){this.app=e,this.at=n,this.$inputor=this.app.$inputor,this.id=this.$inputor[0].id||this.uid(),this.expectedQueryCBId=null,this.setting=null,this.query=null,this.pos=0,this.range=null,0===(this.$el=t("#atwho-ground-"+this.id,this.app.$el)).length&&this.app.$el.append(this.$el=t("<div id='atwho-ground-"+this.id+"'></div>")),this.model=new c(this),this.view=new m(this)}return n.prototype.uid=function(){return(Math.random().toString(16)+"000000000").substr(2,8)+(new Date).getTime()},n.prototype.init=function(e){return this.setting=t.extend({},this.setting||t.fn.atwho.default,e),this.view.init(),this.model.reload(this.setting.data)},n.prototype.destroy=function(){return this.trigger("beforeDestroy"),this.model.destroy(),this.view.destroy(),this.$el.remove()},n.prototype.callDefault=function(){var n,o,i,a;a=arguments[0],n=2<=arguments.length?r.call(arguments,1):[];try{return e[a].apply(this,n)}catch(i){return o=i,t.error(o+" Or maybe At.js doesn't have function "+a)}},n.prototype.trigger=function(t,e){var n,o;return null==e&&(e=[]),e.push(this),o=(n=this.getOpt("alias"))?t+"-"+n+".atwho":t+".atwho",this.$inputor.trigger(o,e)},n.prototype.callbacks=function(t){return this.getOpt("callbacks")[t]||e[t]},n.prototype.getOpt=function(t,e){try{return this.setting[t]}catch(t){return null}},n.prototype.insertContentFor=function(e){var n,o;return o=this.getOpt("insertTpl"),n=t.extend({},e.data("item-data"),{"atwho-at":this.at}),this.callbacks("tplEval").call(this,o,n,"onInsert")},n.prototype.renderView=function(t){var e;return e=this.getOpt("searchKey"),t=this.callbacks("sorter").call(this,this.query.text,t.slice(0,1001),e),this.view.render(t.slice(0,this.getOpt("limit")))},n.arrayToDefaultHash=function(e){var n,o,i,a;if(!t.isArray(e))return e;for(a=[],n=0,i=e.length;i>n;n++)o=e[n],t.isPlainObject(o)?a.push(o):a.push({name:o});return a},n.prototype.lookUp=function(t){var e,n;if((!t||"click"!==t.type||this.getOpt("lookUpOnClick"))&&(!this.getOpt("suspendOnComposing")||!this.app.isComposing))return(e=this.catchQuery(t))?(this.app.setContextFor(this.at),(n=this.getOpt("delay"))?this._delayLookUp(e,n):this._lookUp(e),e):(this.expectedQueryCBId=null,e)},n.prototype._delayLookUp=function(t,e){var n,o;return n=Date.now?Date.now():(new Date).getTime(),this.previousCallTime||(this.previousCallTime=n),(o=e-(n-this.previousCallTime))>0&&e>o?(this.previousCallTime=n,this._stopDelayedCall(),this.delayedCallTimeout=setTimeout(function(e){return function(){return e.previousCallTime=0,e.delayedCallTimeout=null,e._lookUp(t)}}(this),e)):(this._stopDelayedCall(),this.previousCallTime!==n&&(this.previousCallTime=0),this._lookUp(t))},n.prototype._stopDelayedCall=function(){return this.delayedCallTimeout?(clearTimeout(this.delayedCallTimeout),this.delayedCallTimeout=null):void 0},n.prototype._generateQueryCBId=function(){return{}},n.prototype._lookUp=function(e){var n;return n=function(t,e){return t===this.expectedQueryCBId?e&&e.length>0?this.renderView(this.constructor.arrayToDefaultHash(e)):this.view.hide():void 0},this.expectedQueryCBId=this._generateQueryCBId(),this.model.query(e.text,t.proxy(n,this,this.expectedQueryCBId))},n}();var s,l,c,m,u,d=function(t,e){function n(){this.constructor=t}for(var o in e)h.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},h={}.hasOwnProperty;s=function(e){function n(){return n.__super__.constructor.apply(this,arguments)}return d(n,e),n.prototype.catchQuery=function(){var t,e,n,o,i,a,r;return e=this.$inputor.val(),t=this.$inputor.caret("pos",{iframe:this.app.iframe}),r=e.slice(0,t),(o="string"==typeof(i=this.callbacks("matcher").call(this,this.at,r,this.getOpt("startWithSpace"),this.getOpt("acceptSpaceBar"))))&&i.length<this.getOpt("minLen",0)?void 0:(o&&i.length<=this.getOpt("maxLen",20)?(n=(a=t-i.length)+i.length,this.pos=a,i={text:i,headPos:a,endPos:n},this.trigger("matched",[this.at,i.text])):(i=null,this.view.hide()),this.query=i)},n.prototype.rect=function(){var e,n,o;if(e=this.$inputor.caret("offset",this.pos-1,{iframe:this.app.iframe}))return this.app.iframe&&!this.app.iframeAsRoot&&(n=t(this.app.iframe).offset(),e.left+=n.left,e.top+=n.top),o=this.app.document.selection?0:2,{left:e.left,top:e.top,bottom:e.top+e.height+o}},n.prototype.insert=function(t,e){var n,o,i,a,r;return r=""+(i=(o=(n=this.$inputor).val()).slice(0,Math.max(this.query.headPos-this.at.length,0)))+(t+=a=""===(a=this.getOpt("suffix"))?a:a||" ")+o.slice(this.query.endPos||0),n.val(r),n.caret("pos",i.length+t.length,{iframe:this.app.iframe}),n.is(":focus")||n.focus(),n.change()},n}(i),d=function(t,e){function n(){this.constructor=t}for(var o in e)h.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},h={}.hasOwnProperty,l=function(e){function o(){return o.__super__.constructor.apply(this,arguments)}return d(o,e),o.prototype._getRange=function(){var t;return(t=this.app.window.getSelection()).rangeCount>0?t.getRangeAt(0):void 0},o.prototype._setRange=function(e,n,o){return null==o&&(o=this._getRange()),o&&n?(n=t(n)[0],"after"===e?(o.setEndAfter(n),o.setStartAfter(n)):(o.setEndBefore(n),o.setStartBefore(n)),o.collapse(!1),this._clearRange(o)):void 0},o.prototype._clearRange=function(t){var e;return null==t&&(t=this._getRange()),e=this.app.window.getSelection(),null==this.ctrl_a_pressed?(e.removeAllRanges(),e.addRange(t)):void 0},o.prototype._movingEvent=function(t){var e;return"click"===t.type||(e=t.which)===n.RIGHT||e===n.LEFT||e===n.UP||e===n.DOWN},o.prototype._unwrap=function(e){var n;return(n=(e=t(e).unwrap().get(0)).nextSibling)&&n.nodeValue&&(e.nodeValue+=n.nodeValue,t(n).remove()),e},o.prototype.catchQuery=function(e){var o,i,a,r,s,l,c,m,u,d,h,p;if((p=this._getRange())&&p.collapsed){if(e.which===n.ENTER)return(i=t(p.startContainer).closest(".atwho-query")).contents().unwrap(),i.is(":empty")&&i.remove(),(i=t(".atwho-query",this.app.document)).text(i.text()).contents().last().unwrap(),void this._clearRange();if(/firefox/i.test(navigator.userAgent)){if(t(p.startContainer).is(this.$inputor))return void this._clearRange();e.which===n.BACKSPACE&&p.startContainer.nodeType===document.ELEMENT_NODE&&(u=p.startOffset-1)>=0?((a=p.cloneRange()).setStart(p.startContainer,u),t(a.cloneContents()).contents().last().is(".atwho-inserted")&&(s=t(p.startContainer).contents().get(u),this._setRange("after",t(s).contents().last()))):e.which===n.LEFT&&p.startContainer.nodeType===document.TEXT_NODE&&(o=t(p.startContainer.previousSibling)).is(".atwho-inserted")&&0===p.startOffset&&this._setRange("after",o.contents().last())}if(t(p.startContainer).closest(".atwho-inserted").addClass("atwho-query").siblings().removeClass("atwho-query"),(i=t(".atwho-query",this.app.document)).length>0&&i.is(":empty")&&0===i.text().length&&i.remove(),this._movingEvent(e)||i.removeClass("atwho-inserted"),i.length>0)switch(e.which){case n.LEFT:return this._setRange("before",i.get(0),p),void i.removeClass("atwho-query");case n.RIGHT:return this._setRange("after",i.get(0).nextSibling,p),void i.removeClass("atwho-query")}if(i.length>0&&(h=i.attr("data-atwho-at-query"))&&(i.empty().html(h).attr("data-atwho-at-query",null),this._setRange("after",i.get(0),p)),(a=p.cloneRange()).setStart(p.startContainer,0),l="string"==typeof(m=this.callbacks("matcher").call(this,this.at,a.toString(),this.getOpt("startWithSpace"),this.getOpt("acceptSpaceBar"))),0===i.length&&l&&(r=p.startOffset-this.at.length-m.length)>=0&&(p.setStart(p.startContainer,r),i=t("<span/>",this.app.document).attr(this.getOpt("editableAtwhoQueryAttrs")).addClass("atwho-query"),p.surroundContents(i.get(0)),(c=i.contents().last().get(0))&&(/firefox/i.test(navigator.userAgent)?(p.setStart(c,c.length),p.setEnd(c,c.length),this._clearRange(p)):this._setRange("after",c,p))),!(l&&m.length<this.getOpt("minLen",0)))return l&&m.length<=this.getOpt("maxLen",20)?(d={text:m,el:i},this.trigger("matched",[this.at,d.text]),this.query=d):(this.view.hide(),this.query={el:i},i.text().indexOf(this.at)>=0&&(this._movingEvent(e)&&i.hasClass("atwho-inserted")?i.removeClass("atwho-query"):!1!==this.callbacks("afterMatchFailed").call(this,this.at,i)&&this._setRange("after",this._unwrap(i.text(i.text()).contents().first()))),null)}},o.prototype.rect=function(){var e,n;return(n=this.query.el.offset())&&this.query.el[0].getClientRects().length?(this.app.iframe&&!this.app.iframeAsRoot&&(e=t(this.app.iframe).offset(),n.left+=e.left-this.$inputor.scrollLeft(),n.top+=e.top-this.$inputor.scrollTop()),n.bottom=n.top+this.query.el.height(),n):void 0},o.prototype.insert=function(t,e){var n,o,i,a,r;return this.$inputor.is(":focus")||this.$inputor.focus(),(o=this.getOpt("functionOverrides")).insert?o.insert.call(this,t,e):(a=""===(a=this.getOpt("suffix"))?a:a||" ",n=e.data("item-data"),this.query.el.removeClass("atwho-query").addClass("atwho-inserted").html(t).attr("data-atwho-at-query",""+n["atwho-at"]+this.query.text).attr("contenteditable","false"),(i=this._getRange())&&(this.query.el.length&&i.setEndAfter(this.query.el[0]),i.collapse(!1),i.insertNode(r=this.app.document.createTextNode(""+a)),this._setRange("after",r,i)),this.$inputor.is(":focus")||this.$inputor.focus(),this.$inputor.change())},o}(i),c=function(){function e(t){this.context=t,this.at=this.context.at,this.storage=this.context.$inputor}return e.prototype.destroy=function(){return this.storage.data(this.at,null)},e.prototype.saved=function(){return this.fetch()>0},e.prototype.query=function(t,e){var n,o,i;return o=this.fetch(),i=this.context.getOpt("searchKey"),o=this.context.callbacks("filter").call(this.context,t,o,i)||[],n=this.context.callbacks("remoteFilter"),o.length>0||!n&&0===o.length?e(o):n.call(this.context,t,e)},e.prototype.fetch=function(){return this.storage.data(this.at)||[]},e.prototype.save=function(t){return this.storage.data(this.at,this.context.callbacks("beforeSave").call(this.context,t||[]))},e.prototype.load=function(t){return!this.saved()&&t?this._load(t):void 0},e.prototype.reload=function(t){return this._load(t)},e.prototype._load=function(e){return"string"==typeof e?t.ajax(e,{dataType:"json"}).done(function(t){return function(e){return t.save(e)}}(this)):this.save(e)},e}(),m=function(){function e(e){this.context=e,this.$el=t("<div class='atwho-view'><ul class='atwho-view-ul'></ul></div>"),this.$elUl=this.$el.children(),this.timeoutID=null,this.context.$el.append(this.$el),this.bindEvent()}return e.prototype.init=function(){var t,e;return e=this.context.getOpt("alias")||this.context.at.charCodeAt(0),(t=this.context.getOpt("headerTpl"))&&1===this.$el.children().length&&this.$el.prepend(t),this.$el.attr({id:"at-view-"+e})},e.prototype.destroy=function(){return this.$el.remove()},e.prototype.bindEvent=function(){var e,n,o;return e=this.$el.find("ul"),n=0,o=0,e.on("mousemove.atwho-view","li",(function(i){var a;if((n!==i.clientX||o!==i.clientY)&&(n=i.clientX,o=i.clientY,!(a=t(i.currentTarget)).hasClass("cur")))return e.find(".cur").removeClass("cur"),a.addClass("cur")})).on("click.atwho-view","li",function(n){return function(o){return e.find(".cur").removeClass("cur"),t(o.currentTarget).addClass("cur"),n.choose(o),o.preventDefault()}}(this))},e.prototype.visible=function(){return t.expr.filters.visible(this.$el[0])},e.prototype.highlighted=function(){return this.$el.find(".cur").length>0},e.prototype.choose=function(t){var e,n;return(e=this.$el.find(".cur")).length&&(n=this.context.insertContentFor(e),this.context._stopDelayedCall(),this.context.insert(this.context.callbacks("beforeInsert").call(this.context,n,e,t),e),this.context.trigger("inserted",[e,t]),this.hide(t)),this.context.getOpt("hideWithoutSuffix")?this.stopShowing=!0:void 0},e.prototype.reposition=function(e){var n,o,i,a;return n=this.context.app.iframeAsRoot?this.context.app.window:window,e.bottom+this.$el.height()-t(n).scrollTop()>t(n).height()&&(e.bottom=e.top-this.$el.height()),e.left>(i=t(n).width()-this.$el.width()-5)&&(e.left=i),o={left:e.left,top:e.bottom},null!=(a=this.context.callbacks("beforeReposition"))&&a.call(this.context,o),this.$el.offset(o),this.context.trigger("reposition",[o])},e.prototype.next=function(){var t,e,n;return(t=this.$el.find(".cur").removeClass("cur").next()).length||(t=this.$el.find("li:first")),t.addClass("cur"),n=(e=t[0]).offsetTop+e.offsetHeight+(e.nextSibling?e.nextSibling.offsetHeight:0),this.scrollTop(Math.max(0,n-this.$el.height()))},e.prototype.prev=function(){var t,e,n;return(e=this.$el.find(".cur").removeClass("cur").prev()).length||(e=this.$el.find("li:last")),e.addClass("cur"),t=(n=e[0]).offsetTop+n.offsetHeight+(n.nextSibling?n.nextSibling.offsetHeight:0),this.scrollTop(Math.max(0,t-this.$el.height()))},e.prototype.scrollTop=function(t){var e;return(e=this.context.getOpt("scrollDuration"))?this.$elUl.animate({scrollTop:t},e):this.$elUl.scrollTop(t)},e.prototype.show=function(){var t;return this.stopShowing?void(this.stopShowing=!1):(this.visible()||(this.$el.show(),this.$el.scrollTop(0),this.context.trigger("shown")),(t=this.context.rect())?this.reposition(t):void 0)},e.prototype.hide=function(t,e){var n;if(this.visible())return isNaN(e)?(this.$el.hide(),this.context.trigger("hidden",[t])):(n=function(t){return function(){return t.hide()}}(this),clearTimeout(this.timeoutID),this.timeoutID=setTimeout(n,e))},e.prototype.render=function(e){var n,o,i,a,r,s,l;if(t.isArray(e)&&e.length>0){for(this.$el.find("ul").empty(),o=this.$el.find("ul"),l=this.context.getOpt("displayTpl"),i=0,r=e.length;r>i;i++)a=e[i],a=t.extend({},a,{"atwho-at":this.context.at}),s=this.context.callbacks("tplEval").call(this.context,l,a,"onDisplay"),(n=t(this.context.callbacks("highlighter").call(this.context,s,this.context.query.text))).data("item-data",a),o.append(n);return this.show(),this.context.getOpt("highlightFirst")?o.find("li:first").addClass("cur"):void 0}this.hide()},e}(),u={load:function(t,e){var n;return(n=this.controller(t))?n.model.load(e):void 0},isSelecting:function(){var t;return!!(null!=(t=this.controller())?t.view.visible():void 0)},hide:function(){var t;return null!=(t=this.controller())?t.view.hide():void 0},reposition:function(){var t;return(t=this.controller())?t.view.reposition(t.rect()):void 0},setIframe:function(t,e){return this.setupRootElement(t,e),null},run:function(){return this.dispatch()},destroy:function(){return this.shutdown(),this.$inputor.data("atwho",null)}},t.fn.atwho=function(e){var n,i;return n=arguments,i=null,this.filter('textarea, input, [contenteditable=""], [contenteditable=true]').each((function(){var r,s;return(s=(r=t(this)).data("atwho"))||r.data("atwho",s=new o(this)),"object"!=a(e)&&e?u[e]&&s?i=u[e].apply(s,Array.prototype.slice.call(n,1)):t.error("Method "+e+" does not exist on jQuery.atwho"):s.reg(e.at,e)})),null!=i?i:this},t.fn.atwho.default={at:void 0,alias:void 0,data:null,displayTpl:"<li>${name}</li>",insertTpl:"${atwho-at}${name}",headerTpl:null,callbacks:e,functionOverrides:{},searchKey:"name",suffix:void 0,hideWithoutSuffix:!1,startWithSpace:!0,acceptSpaceBar:!1,highlightFirst:!0,limit:5,maxLen:20,minLen:0,displayTimeout:300,delay:null,spaceSelectsMatch:!1,tabSelectsMatch:!0,editableAtwhoQueryAttrs:{},scrollDuration:150,suspendOnComposing:!0,lookUpOnClick:!0},t.fn.atwho.debug=!1}(t)}.apply(e,o))||(t.exports=i)},function(t,e,n){var o=n(17);"string"==typeof o&&(o=[[t.i,o,""]]),o.locals&&(t.exports=o.locals);(0,n(2).default)("8e87fa8e",o,!0,{})},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,".atwho-view{position:absolute;top:0;left:0;display:none;margin-top:18px;background:var(--color-main-background);color:var(--color-main-text);border:1px solid var(--color-border);border-radius:var(--border-radius);box-shadow:0 0 5px var(--color-box-shadow);min-width:120px;z-index:11110 !important}.atwho-view .atwho-header{padding:5px;margin:5px;cursor:pointer;border-bottom:solid 1px var(--color-border);color:var(--color-main-text);font-size:11px;font-weight:bold}.atwho-view .atwho-header .small{color:var(--color-main-text);float:right;padding-top:2px;margin-right:-5px;font-size:12px;font-weight:normal}.atwho-view .atwho-header:hover{cursor:default}.atwho-view .cur{background:var(--color-primary);color:var(--color-primary-text)}.atwho-view .cur small{color:var(--color-primary-text)}.atwho-view strong{color:var(--color-main-text);font-weight:normal}.atwho-view .cur strong{color:var(--color-primary-text);font-weight:normal}.atwho-view ul{list-style:none;padding:0;margin:auto;max-height:200px;overflow-y:auto}.atwho-view ul li{display:block;padding:5px 10px;border-bottom:1px solid var(--color-border);cursor:pointer}.atwho-view small{font-size:smaller;color:var(--color-main-text);font-weight:normal}\n",""])},function(t,e,n){var o=n(19);"string"==typeof o&&(o=[[t.i,o,""]]),o.locals&&(t.exports=o.locals);(0,n(2).default)("477a5c21",o,!0,{})},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"#commentsTabView .emptycontent{margin-top:0}#commentsTabView .newCommentForm{margin-left:36px;position:relative}#commentsTabView .newCommentForm .message{width:100%;padding:10px;min-height:44px;margin:0;padding-right:30px}#commentsTabView .newCommentForm .submit,#commentsTabView .newCommentForm .submitLoading{width:44px;height:44px;margin:0;padding:13px;background-color:transparent;border:none;opacity:.3;position:absolute;bottom:0;right:0}#commentsTabView .deleteLoading{padding:14px;vertical-align:middle}#commentsTabView .newCommentForm .submit:not(:disabled):hover,#commentsTabView .newCommentForm .submit:not(:disabled):focus{opacity:1}#commentsTabView .newCommentForm div.message{resize:none}#commentsTabView .newCommentForm div.message:empty:before{content:attr(data-placeholder);color:grey}#commentsTabView .comment{position:relative;padding:10px 0 15px}#commentsTabView .comments .comment{border-top:1px solid var(--color-border)}#commentsTabView .comment .avatar,.atwho-view-ul * .avatar{width:32px;height:32px;line-height:32px;margin-right:5px}#commentsTabView .comment .message .avatar,.atwho-view-ul * .avatar{display:inline-block}#activityTabView li.comment.collapsed .activitymessage,#commentsTabView .comment.collapsed .message{white-space:pre-wrap}#activityTabView li.comment.collapsed .activitymessage,#commentsTabView .comment.collapsed .message{max-height:70px;overflow:hidden}#activityTabView li.comment .message-overlay,#commentsTabView .comment .message-overlay{display:none}#activityTabView li.comment.collapsed .message-overlay,#commentsTabView .comment.collapsed .message-overlay{display:block;position:absolute;z-index:2;height:50px;pointer-events:none;left:0;right:0;bottom:0;background:-moz-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background:-webkit-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background:-o-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background:-ms-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background:linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background-repeat:no-repeat}#commentsTabView .hidden{display:none !important}#commentsTabView .comment .authorRow{min-height:44px}#commentsTabView .comment .authorRow .tooltip{margin-top:5px}.atwho-view-ul * .avatar-name-wrapper,#commentsTabView .comment .authorRow{position:relative;display:inline-flex;align-items:center;width:100%}#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser),#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser) .avatar,#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser) .avatar img,#commentsTabView .comment .authorRow .avatar:not(.currentUser),#commentsTabView .comment .authorRow .author:not(.currentUser){cursor:pointer}.atwho-view-ul .avatar-name-wrapper,.atwho-view-ul .avatar-name-wrapper .avatar,.atwho-view-ul .avatar-name-wrapper .avatar img{cursor:pointer}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper{position:relative;display:inline;vertical-align:top;background-color:var(--color-background-dark);border-radius:50vh;padding:1px 7px 1px 1px;white-space:nowrap}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper .avatar,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper .avatar{height:16px;width:16px;vertical-align:middle;padding:1px;margin-top:-3px;margin-left:0;margin-right:2px}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper .avatar img,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper .avatar img{vertical-align:top}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper strong,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper strong{font-weight:bold}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper.currentUser,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper.currentUser{background-color:var(--color-primary);color:var(--color-primary-text)}.atwho-view-ul * .avatar-name-wrapper{white-space:nowrap}#commentsTabView .comment .author,#commentsTabView .comment .date{opacity:.5}#commentsTabView .comment .author{max-width:210px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}#commentsTabView .comment .date{margin-left:auto;padding:10px 0px}#commentsTabView .comments>li:not(.newCommentRow) .message{padding-left:40px;word-wrap:break-word;overflow-wrap:break-word}#commentsTabView .comment .action{opacity:0.3;padding:14px;display:block}#commentsTabView .comment .action:hover,#commentsTabView .comment .action:focus{opacity:1}#commentsTabView .newCommentRow .action-container{margin-left:auto}#commentsTabView .comment.disabled .message{opacity:0.3}#commentsTabView .comment.disabled .action{display:none}#commentsTabView .message.error{color:#e9322d;border-color:#e9322d;box-shadow:0 0 6px #f8b9b7}.app-files .action-comment{padding:16px 14px}#commentsTabView .comment .message .contactsmenu-popover{left:-6px;top:24px}\n",""])}]);
+!function(t){var e={};function n(o){if(e[o])return e[o].exports;var i=e[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(o,i,function(e){return t[e]}.bind(null,i));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/js/",n(n.s=3)}([function(t,e){t.exports=jQuery},function(t,e,n){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=function(t,e){var n=t[1]||"",o=t[3];if(!o)return n;if(e&&"function"==typeof btoa){var i=(r=o,s=btoa(unescape(encodeURIComponent(JSON.stringify(r)))),l="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(s),"/*# ".concat(l," */")),a=o.sources.map((function(t){return"/*# sourceURL=".concat(o.sourceRoot).concat(t," */")}));return[n].concat(a).concat([i]).join("\n")}var r,s,l;return[n].join("\n")}(e,t);return e[2]?"@media ".concat(e[2],"{").concat(n,"}"):n})).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var o={},i=0;i<this.length;i++){var a=this[i][0];null!=a&&(o[a]=!0)}for(var r=0;r<t.length;r++){var s=t[r];null!=s[0]&&o[s[0]]||(n&&!s[2]?s[2]=n:n&&(s[2]="(".concat(s[2],") and (").concat(n,")")),e.push(s))}},e}},function(t,e,n){"use strict";function o(t,e){for(var n=[],o={},i=0;i<e.length;i++){var a=e[i],r=a[0],s={id:t+":"+i,css:a[1],media:a[2],sourceMap:a[3]};o[r]?o[r].parts.push(s):n.push(o[r]={id:r,parts:[s]})}return n}n.r(e),n.d(e,"default",(function(){return p}));var i="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!i)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var a={},r=i&&(document.head||document.getElementsByTagName("head")[0]),s=null,l=0,c=!1,m=function(){},u=null,d="data-vue-ssr-id",h="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function p(t,e,n,i){c=n,u=i||{};var r=o(t,e);return f(r),function(e){for(var n=[],i=0;i<r.length;i++){var s=r[i];(l=a[s.id]).refs--,n.push(l)}e?f(r=o(t,e)):r=[];for(i=0;i<n.length;i++){var l;if(0===(l=n[i]).refs){for(var c=0;c<l.parts.length;c++)l.parts[c]();delete a[l.id]}}}}function f(t){for(var e=0;e<t.length;e++){var n=t[e],o=a[n.id];if(o){o.refs++;for(var i=0;i<o.parts.length;i++)o.parts[i](n.parts[i]);for(;i<n.parts.length;i++)o.parts.push(v(n.parts[i]));o.parts.length>n.parts.length&&(o.parts.length=n.parts.length)}else{var r=[];for(i=0;i<n.parts.length;i++)r.push(v(n.parts[i]));a[n.id]={id:n.id,refs:1,parts:r}}}}function g(){var t=document.createElement("style");return t.type="text/css",r.appendChild(t),t}function v(t){var e,n,o=document.querySelector("style["+d+'~="'+t.id+'"]');if(o){if(c)return m;o.parentNode.removeChild(o)}if(h){var i=l++;o=s||(s=g()),e=w.bind(null,o,i,!1),n=w.bind(null,o,i,!0)}else o=g(),e=b.bind(null,o),n=function(){o.parentNode.removeChild(o)};return e(t),function(o){if(o){if(o.css===t.css&&o.media===t.media&&o.sourceMap===t.sourceMap)return;e(t=o)}else n()}}var y,C=(y=[],function(t,e){return y[t]=e,y.filter(Boolean).join("\n")});function w(t,e,n,o){var i=n?"":o.css;if(t.styleSheet)t.styleSheet.cssText=C(e,i);else{var a=document.createTextNode(i),r=t.childNodes;r[e]&&t.removeChild(r[e]),r.length?t.insertBefore(a,r[e]):t.appendChild(a)}}function b(t,e){var n=e.css,o=e.media,i=e.sourceMap;if(o&&t.setAttribute("media",o),u.ssrId&&t.setAttribute(d,e.id),i&&(n+="\n/*# sourceURL="+i.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}},function(t,e,n){"use strict";n.r(e);n(4),n(5),n(6),n(7),n(8),n(9),n(10),n(11),n(12),n(13),n(14),n(15),n(16),n(18);window.OCA.Comments=OCA.Comments},function(t,e){OCA.Comments||(OCA.Comments={})},function(t,e){function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var o,i;o=Handlebars.template,(i=OCA.Comments.Templates=OCA.Comments.Templates||{}).comment=o({1:function(t,e,n,o,i){return" unread"},3:function(t,e,n,o,i){return" collapsed"},5:function(t,e,n,o,i){return" currentUser"},7:function(t,e,n,o,i){var a;return'data-username="'+t.escapeExpression("function"==typeof(a=null!=(a=n.actorId||(null!=e?e.actorId:e))?a:n.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"actorId",hash:{},data:i}):a)+'"'},9:function(t,e,n,o,i){return'\t\t\t<a href="#" class="action more icon icon-more has-tooltip"></a>\n\t\t\t<div class="deleteLoading icon-loading-small hidden"></div>\n'},11:function(t,e,n,o,i){return'\t\t<div class="message-overlay"></div>\n'},compiler:[7,">= 4.0.0"],main:function(t,e,o,i,a){var r,s,l=null!=e?e:t.nullContext||{},c=o.helperMissing,m="function",u=t.escapeExpression;return'<li class="comment'+(null!=(r=o.if.call(l,null!=e?e.isUnread:e,{name:"if",hash:{},fn:t.program(1,a,0),inverse:t.noop,data:a}))?r:"")+(null!=(r=o.if.call(l,null!=e?e.isLong:e,{name:"if",hash:{},fn:t.program(3,a,0),inverse:t.noop,data:a}))?r:"")+'" data-id="'+u(n(s=null!=(s=o.id||(null!=e?e.id:e))?s:c)===m?s.call(l,{name:"id",hash:{},data:a}):s)+'">\n\t<div class="authorRow">\n\t\t<div class="avatar'+(null!=(r=o.if.call(l,null!=e?e.isUserAuthor:e,{name:"if",hash:{},fn:t.program(5,a,0),inverse:t.noop,data:a}))?r:"")+'" '+(null!=(r=o.if.call(l,null!=e?e.actorId:e,{name:"if",hash:{},fn:t.program(7,a,0),inverse:t.noop,data:a}))?r:"")+'> </div>\n\t\t<div class="author'+(null!=(r=o.if.call(l,null!=e?e.isUserAuthor:e,{name:"if",hash:{},fn:t.program(5,a,0),inverse:t.noop,data:a}))?r:"")+'">'+u(n(s=null!=(s=o.actorDisplayName||(null!=e?e.actorDisplayName:e))?s:c)===m?s.call(l,{name:"actorDisplayName",hash:{},data:a}):s)+"</div>\n"+(null!=(r=o.if.call(l,null!=e?e.isUserAuthor:e,{name:"if",hash:{},fn:t.program(9,a,0),inverse:t.noop,data:a}))?r:"")+'\t\t<div class="date has-tooltip live-relative-timestamp" data-timestamp="'+u(n(s=null!=(s=o.timestamp||(null!=e?e.timestamp:e))?s:c)===m?s.call(l,{name:"timestamp",hash:{},data:a}):s)+'" title="'+u(n(s=null!=(s=o.altDate||(null!=e?e.altDate:e))?s:c)===m?s.call(l,{name:"altDate",hash:{},data:a}):s)+'">'+u(n(s=null!=(s=o.date||(null!=e?e.date:e))?s:c)===m?s.call(l,{name:"date",hash:{},data:a}):s)+'</div>\n\t</div>\n\t<div class="message">'+(null!=(r=n(s=null!=(s=o.formattedMessage||(null!=e?e.formattedMessage:e))?s:c)===m?s.call(l,{name:"formattedMessage",hash:{},data:a}):s)?r:"")+"</div>\n"+(null!=(r=o.if.call(l,null!=e?e.isLong:e,{name:"if",hash:{},fn:t.program(11,a,0),inverse:t.noop,data:a}))?r:"")+"</li>\n"},useData:!0}),i.commentsmodifymenu=o({1:function(t,e,o,i,a){var r,s,l=null!=e?e:t.nullContext||{},c=o.helperMissing,m=t.escapeExpression;return'\t\t<li>\n\t\t\t<a href="#" class="menuitem action '+m("function"===n(s=null!=(s=o.name||(null!=e?e.name:e))?s:c)?s.call(l,{name:"name",hash:{},data:a}):s)+' permanent" data-action="'+m("function"===n(s=null!=(s=o.name||(null!=e?e.name:e))?s:c)?s.call(l,{name:"name",hash:{},data:a}):s)+'">\n'+(null!=(r=o.if.call(l,null!=e?e.iconClass:e,{name:"if",hash:{},fn:t.program(2,a,0),inverse:t.program(4,a,0),data:a}))?r:"")+"\t\t\t\t<span>"+m("function"===n(s=null!=(s=o.displayName||(null!=e?e.displayName:e))?s:c)?s.call(l,{name:"displayName",hash:{},data:a}):s)+"</span>\n\t\t\t</a>\n\t\t</li>\n"},2:function(t,e,n,o,i){var a;return'\t\t\t\t\t<span class="icon '+t.escapeExpression("function"==typeof(a=null!=(a=n.iconClass||(null!=e?e.iconClass:e))?a:n.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"iconClass",hash:{},data:i}):a)+'"></span>\n'},4:function(t,e,n,o,i){return'\t\t\t\t\t<span class="no-icon"></span>\n'},compiler:[7,">= 4.0.0"],main:function(t,e,n,o,i){var a;return"<ul>\n"+(null!=(a=n.each.call(null!=e?e:t.nullContext||{},null!=e?e.items:e,{name:"each",hash:{},fn:t.program(1,i,0),inverse:t.noop,data:i}))?a:"")+"</ul>\n"},useData:!0}),i.edit_comment=o({1:function(t,e,n,o,i){var a;return'\t\t\t<div class="action-container">\n\t\t\t\t<a href="#" class="action cancel icon icon-close has-tooltip" title="'+t.escapeExpression("function"==typeof(a=null!=(a=n.cancelText||(null!=e?e.cancelText:e))?a:n.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"cancelText",hash:{},data:i}):a)+'"></a>\n\t\t\t</div>\n'},compiler:[7,">= 4.0.0"],main:function(t,e,o,i,a){var r,s,l=null!=e?e:t.nullContext||{},c=o.helperMissing,m="function",u=t.escapeExpression;return"<"+u(n(s=null!=(s=o.tag||(null!=e?e.tag:e))?s:c)===m?s.call(l,{name:"tag",hash:{},data:a}):s)+' class="newCommentRow comment" data-id="'+u(n(s=null!=(s=o.id||(null!=e?e.id:e))?s:c)===m?s.call(l,{name:"id",hash:{},data:a}):s)+'">\n\t<div class="authorRow">\n\t\t<div class="avatar currentUser" data-username="'+u(n(s=null!=(s=o.actorId||(null!=e?e.actorId:e))?s:c)===m?s.call(l,{name:"actorId",hash:{},data:a}):s)+'"></div>\n\t\t<div class="author currentUser">'+u(n(s=null!=(s=o.actorDisplayName||(null!=e?e.actorDisplayName:e))?s:c)===m?s.call(l,{name:"actorDisplayName",hash:{},data:a}):s)+"</div>\n"+(null!=(r=o.if.call(l,null!=e?e.isEditMode:e,{name:"if",hash:{},fn:t.program(1,a,0),inverse:t.noop,data:a}))?r:"")+'\t</div>\n\t<form class="newCommentForm">\n\t\t<div contentEditable="true" class="message" data-placeholder="'+u(n(s=null!=(s=o.newMessagePlaceholder||(null!=e?e.newMessagePlaceholder:e))?s:c)===m?s.call(l,{name:"newMessagePlaceholder",hash:{},data:a}):s)+'">'+u(n(s=null!=(s=o.message||(null!=e?e.message:e))?s:c)===m?s.call(l,{name:"message",hash:{},data:a}):s)+'</div>\n\t\t<input class="submit icon-confirm has-tooltip" type="submit" value="" title="'+u(n(s=null!=(s=o.submitText||(null!=e?e.submitText:e))?s:c)===m?s.call(l,{name:"submitText",hash:{},data:a}):s)+'"/>\n\t\t<div class="submitLoading icon-loading-small hidden"></div>\n\t</form>\n</'+u(n(s=null!=(s=o.tag||(null!=e?e.tag:e))?s:c)===m?s.call(l,{name:"tag",hash:{},data:a}):s)+">\n"},useData:!0}),i.filesplugin=o({compiler:[7,">= 4.0.0"],main:function(t,e,o,i,a){var r,s=null!=e?e:t.nullContext||{},l=o.helperMissing,c=t.escapeExpression;return'<a class="action action-comment permanent" title="'+c("function"===n(r=null!=(r=o.countMessage||(null!=e?e.countMessage:e))?r:l)?r.call(s,{name:"countMessage",hash:{},data:a}):r)+'" href="#">\n\t<img class="svg" src="'+c("function"===n(r=null!=(r=o.iconUrl||(null!=e?e.iconUrl:e))?r:l)?r.call(s,{name:"iconUrl",hash:{},data:a}):r)+'"/>\n</a>\n'},useData:!0}),i.view=o({compiler:[7,">= 4.0.0"],main:function(t,e,o,i,a){var r,s=null!=e?e:t.nullContext||{},l=o.helperMissing,c=t.escapeExpression;return'<ul class="comments">\n</ul>\n<div class="emptycontent hidden"><div class="icon-comment"></div>\n\t<p>'+c("function"===n(r=null!=(r=o.emptyResultLabel||(null!=e?e.emptyResultLabel:e))?r:l)?r.call(s,{name:"emptyResultLabel",hash:{},data:a}):r)+'</p></div>\n<input type="button" class="showMore hidden" value="'+c("function"===n(r=null!=(r=o.moreLabel||(null!=e?e.moreLabel:e))?r:l)?r.call(s,{name:"moreLabel",hash:{},data:a}):r)+'" name="show-more" id="show-more" />\n<div class="loading hidden" style="height: 50px"></div>\n'},useData:!0})},function(t,e){!function(t,e){_.extend(t.Files.Client,{PROPERTY_FILEID:"{"+t.Files.Client.NS_OWNCLOUD+"}id",PROPERTY_MESSAGE:"{"+t.Files.Client.NS_OWNCLOUD+"}message",PROPERTY_ACTORTYPE:"{"+t.Files.Client.NS_OWNCLOUD+"}actorType",PROPERTY_ACTORID:"{"+t.Files.Client.NS_OWNCLOUD+"}actorId",PROPERTY_ISUNREAD:"{"+t.Files.Client.NS_OWNCLOUD+"}isUnread",PROPERTY_OBJECTID:"{"+t.Files.Client.NS_OWNCLOUD+"}objectId",PROPERTY_OBJECTTYPE:"{"+t.Files.Client.NS_OWNCLOUD+"}objectType",PROPERTY_ACTORDISPLAYNAME:"{"+t.Files.Client.NS_OWNCLOUD+"}actorDisplayName",PROPERTY_CREATIONDATETIME:"{"+t.Files.Client.NS_OWNCLOUD+"}creationDateTime",PROPERTY_MENTIONS:"{"+t.Files.Client.NS_OWNCLOUD+"}mentions"});var n=t.Backbone.Model.extend({sync:t.Backbone.davSync,defaults:{actorType:"users",objectType:"files"},davProperties:{id:t.Files.Client.PROPERTY_FILEID,message:t.Files.Client.PROPERTY_MESSAGE,actorType:t.Files.Client.PROPERTY_ACTORTYPE,actorId:t.Files.Client.PROPERTY_ACTORID,actorDisplayName:t.Files.Client.PROPERTY_ACTORDISPLAYNAME,creationDateTime:t.Files.Client.PROPERTY_CREATIONDATETIME,objectType:t.Files.Client.PROPERTY_OBJECTTYPE,objectId:t.Files.Client.PROPERTY_OBJECTID,isUnread:t.Files.Client.PROPERTY_ISUNREAD,mentions:t.Files.Client.PROPERTY_MENTIONS},parse:function(t){return{id:t.id,message:t.message,actorType:t.actorType,actorId:t.actorId,actorDisplayName:t.actorDisplayName,creationDateTime:t.creationDateTime,objectType:t.objectType,objectId:t.objectId,isUnread:"true"===t.isUnread,mentions:this._parseMentions(t.mentions)}},_parseMentions:function(t){if(_.isUndefined(t))return{};var e={};for(var n in t){var o=t[n];if(!_.isUndefined(o.localName)&&"mention"===o.localName){e[n]={};for(var i=o.firstChild;i;i=i.nextSibling)!_.isUndefined(i.localName)&&i.localName.startsWith("mention")&&(e[n][i.localName]=i.textContent)}}return e}});e.Comments.CommentModel=n}(OC,OCA)},function(t,e){!function(t,e){var n=t.Backbone.Collection.extend({sync:t.Backbone.davSync,model:e.Comments.CommentModel,_objectType:"files",_objectId:null,_endReached:!1,_limit:20,initialize:function(t,e){(e=e||{}).objectType&&(this._objectType=e.objectType),e.objectId&&(this._objectId=e.objectId)},url:function(){return t.linkToRemote("dav")+"/comments/"+encodeURIComponent(this._objectType)+"/"+encodeURIComponent(this._objectId)+"/"},setObjectId:function(t){this._objectId=t},hasMoreResults:function(){return!this._endReached},reset:function(){return this._endReached=!1,this._summaryModel=null,t.Backbone.Collection.prototype.reset.apply(this,arguments)},fetchNext:function(t){var e=this;if(!this.hasMoreResults())return null;var o='<?xml version="1.0" encoding="utf-8" ?>\n<oc:filter-comments xmlns:D="DAV:" xmlns:oc="http://owncloud.org/ns">\n    <oc:limit>'+(this._limit+1)+"</oc:limit>\n    <oc:offset>"+this.length+"</oc:offset>\n</oc:filter-comments>\n",i=(t=t||{}).success;return t=_.extend({remove:!1,parse:!0,data:o,davProperties:n.prototype.model.prototype.davProperties,success:function(n){if(n.length<=e._limit?e._endReached=!0:n=_.initial(n),!e.set(n,t))return!1;i&&i.apply(null,arguments),e.trigger("sync","REPORT",e,t)}},t),this.sync("REPORT",this,t)},getSummaryModel:function(){return this._summaryModel||(this._summaryModel=new e.Comments.CommentSummaryModel({id:this._objectId,objectType:this._objectType})),this._summaryModel},updateReadMarker:function(t,e){return e=e||{},this.getSummaryModel().save({readMarker:(t||new Date).toUTCString()},e)}});e.Comments.CommentCollection=n}(OC,OCA)},function(t,e){!function(t,e){_.extend(t.Files.Client,{PROPERTY_READMARKER:"{"+t.Files.Client.NS_OWNCLOUD+"}readMarker"});var n=t.Backbone.Model.extend({sync:t.Backbone.davSync,_objectType:"files",_objectId:null,davProperties:{readMarker:t.Files.Client.PROPERTY_READMARKER},initialize:function(t,e){(e=e||{}).objectType&&(this._objectType=e.objectType)},url:function(){return t.linkToRemote("dav")+"/comments/"+encodeURIComponent(this._objectType)+"/"+encodeURIComponent(this.id)+"/"}});e.Comments.CommentSummaryModel=n}(OC,OCA)},function(e,n){!function(e,n){var o=n.Files.DetailTabView.extend({id:"commentsTabView",className:"tab commentsTabView",_autoCompleteData:void 0,_commentsModifyMenu:void 0,events:{"submit .newCommentForm":"_onSubmitComment","click .showMore":"_onClickShowMore","click .cancel":"_onClickCloseComment","click .comment":"_onClickComment","keyup div.message":"_onTextChange","change div.message":"_onTextChange","input div.message":"_onTextChange","paste div.message":"_onPaste"},_commentMaxLength:1e3,initialize:function(){n.Files.DetailTabView.prototype.initialize.apply(this,arguments),this.collection=new n.Comments.CommentCollection,this.collection.on("request",this._onRequest,this),this.collection.on("sync",this._onEndRequest,this),this.collection.on("add",this._onAddModel,this),this.collection.on("change:message",this._onChangeModel,this),this._commentMaxThreshold=.9*this._commentMaxLength,_.bindAll(this,"_onTypeComment","_initAutoComplete","_onAutoComplete")},template:function(t){var o=e.getCurrentUser();return n.Comments.Templates.view(_.extend({actorId:o.uid,actorDisplayName:o.displayName},t))},editCommentTemplate:function(o){var i=e.getCurrentUser();return n.Comments.Templates.edit_comment(_.extend({actorId:i.uid,actorDisplayName:i.displayName,newMessagePlaceholder:t("comments","New comment …"),submitText:t("comments","Post"),cancelText:t("comments","Cancel"),tag:"li"},o))},commentTemplate:function(o){return"deleted_users"===(o=_.extend({editTooltip:t("comments","Edit comment"),isUserAuthor:e.getCurrentUser().uid===o.actorId,isLong:this._isLong(o.message)},o)).actorType&&(o.actorId=null,o.actorDisplayName=t("comments","[Deleted user]")),n.Comments.Templates.comment(o)},getLabel:function(){return t("comments","Comments")},getIcon:function(){return"icon-comment"},setFileInfo:function(t){t?(this.model=t,this.render(),this._initAutoComplete($("#commentsTabView").find(".newCommentForm .message")),this.collection.setObjectId(this.model.id),this.collection.reset([],{silent:!0}),this.nextPage()):(this.model=null,this.render(),this.collection.reset())},render:function(){this.$el.html(this.template({emptyResultLabel:t("comments","No comments yet, start the conversation!"),moreLabel:t("comments","More comments …")})),this.$el.find(".comments").before(this.editCommentTemplate({tag:"div"})),this.$el.find(".has-tooltip").tooltip(),this.$container=this.$el.find("ul.comments"),this.$el.find(".avatar").avatar(e.getCurrentUser().uid,32),this.delegateEvents(),this.$el.find(".message").on("keydown input change",this._onTypeComment),autosize(this.$el.find(".newCommentRow .message")),this.$el.find(".newCommentForm .message").focus()},_initAutoComplete:function(t){var n=this,o=10;_.isUndefined(e.appConfig.comments)||(o=e.appConfig.comments.maxAutoCompleteResults),t.atwho({at:"@",limit:o,callbacks:{remoteFilter:n._onAutoComplete,highlighter:function(t){var e=$(t);return e.find(".avatar").avatar(void 0,32),e},sorter:function(t,e){return e}},displayTpl:function(t){return'<li><span class="avatar-name-wrapper"><span class="avatar" data-username="'+escapeHTML(t.id)+'" data-user="'+escapeHTML(t.id)+'" data-user-display-name="'+escapeHTML(t.label)+'"></span><strong>'+escapeHTML(t.label)+"</strong></span></li>"},insertTpl:function(t){return'<span class="avatar-name-wrapper"><span class="avatar" data-username="'+escapeHTML(t.id)+'" data-user="'+escapeHTML(t.id)+'" data-user-display-name="'+escapeHTML(t.label)+'"></span><strong>'+escapeHTML(t.label)+"</strong></span>"},searchKey:"label"}),t.on("inserted.atwho",(function(t,e){n._postRenderItem($(t.target).find('span[data-username="'+e.find("[data-username]").data("username")+'"]').parent(),!0)}))},_onAutoComplete:function(t,n){var o=this;_.isUndefined(this._autoCompleteRequestTimer)||clearTimeout(this._autoCompleteRequestTimer),this._autoCompleteRequestTimer=_.delay((function(){_.isUndefined(this._autoCompleteRequestCall)||this._autoCompleteRequestCall.abort(),this._autoCompleteRequestCall=$.ajax({url:e.linkToOCS("core",2)+"autocomplete/get",data:{search:t,itemType:"files",itemId:o.model.get("id"),sorter:"commenters|share-recipients",limit:e.appConfig.comments.maxAutoCompleteResults},beforeSend:function(t){t.setRequestHeader("Accept","application/json")},success:function(t){n(t.ocs.data)}})}),400)},_formatItem:function(t){var n=new Date(t.get("creationDateTime")).getTime();return _.extend({timestamp:n,date:e.Util.relativeModifiedDate(n),altDate:e.Util.formatDate(n),formattedMessage:this._formatMessage(t.get("message"),t.get("mentions"))},t.attributes)},_toggleLoading:function(t){this._loading=t,this.$el.find(".loading").toggleClass("hidden",!t)},_onRequest:function(t){"REPORT"===t&&(this._toggleLoading(!0),this.$el.find(".showMore").addClass("hidden"))},_onEndRequest:function(t){var e=this.model;(this._toggleLoading(!1),this.$el.find(".emptycontent").toggleClass("hidden",!!this.collection.length),this.$el.find(".showMore").toggleClass("hidden",!this.collection.hasMoreResults()),"REPORT"===t)&&(this.collection.findWhere({isUnread:!0})&&this.collection.updateReadMarker(null,{success:function(){e.set("commentsUnread",0)}}),this.$el.find(".newCommentForm .message").focus())},_onAddModel:function(t,e,n){var o=$(this.commentTemplate(this._formatItem(t)));!_.isUndefined(n.at)&&e.length>1?this.$container.find("li").eq(n.at).before(o):this.$container.append(o),this._postRenderItem(o),$("#commentsTabView").find(".newCommentForm div.message").text("").prop("contenteditable",!0);var i=t.get("mentions"),a=this;t.fetch({success:function(t){if(!_.isEqual(i,t.get("mentions"))){var e=$(a.commentTemplate(a._formatItem(t)));o.html(e.html()),a._postRenderItem(o)}}})},_onChangeModel:function(t){if(t.get("message").trim()!==t.previous("message").trim()){var e=this.$container.find('.comment[data-id="'+t.id+'"] form').closest(".comment"),n=e.data("commentEl");if(!_.isUndefined(n)){var o=this;t.fetch({success:function(t){n.removeClass("hidden"),e.remove();var i=n.find(".message");i.html(o._formatMessage(t.get("message"),t.get("mentions"))).find(".avatar").each((function(){$(this).avatar()})),o._postRenderItem(i)}})}}},_postRenderItem:function(t,o){t.find(".has-tooltip").tooltip();var i=t.find(".message .avatar");$(t.context).hasClass("message")&&(i=t.find(".avatar")),i.each((function(){var t=$(this);t.avatar(t.attr("data-username"),16)})),t.find(".authorRow .avatar").each((function(){var t=$(this);t.avatar(t.attr("data-username"),32)}));var a=t.find(".avatar").data("username");a!==e.getCurrentUser().uid&&t.find(".authorRow .avatar, .authorRow .author").contactsMenu(a,0,t.find(".authorRow"));var r=t.find(".message");if(0===r.length&&(r=t),!o){var s=this,l=new n.Comments.CommentsModifyMenu;t.find(".authorRow").append(l.$el),t.find(".more").on("click",_.bind(l.show,l)),s.listenTo(l,"select:menu-item-clicked",(function(t,e){"edit"===e?s._onClickEditComment(t):"delete"===e&&s._onClickDeleteComment(t)}))}this._postRenderMessage(r,o)},_postRenderMessage:function(t,n){n||t.find(".avatar-name-wrapper").each((function(){var t=$(this),n=t.find(".avatar").data("user");n!==e.getCurrentUser().uid&&t.contactsMenu(n,0,t)}))},_formatMessage:function(t,e,n){for(var o in t=escapeHTML(t).replace(/\n/g,"<br/>"),e){if(!e.hasOwnProperty(o))return;var i="@"+e[o].mentionId;-1!==e[o].mentionId.indexOf(" ")&&(i=_.escape('@"'+e[o].mentionId+'"')),i=i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");var a=new RegExp("(^|\\s)("+i+")\\b","g");-1!==e[o].mentionId.indexOf(" ")&&(a=new RegExp("(^|\\s)("+i+")","g"));var r=this._composeHTMLMention(e[o].mentionId,e[o].mentionDisplayName);t=t.replace(a,(function(t,e){return e+r}))}return!0!==n&&(t=OCP.Comments.plainToRich(t)),t},_composeHTMLMention:function(t,n){var o='<span class="avatar" data-username="'+_.escape(t)+'" data-user="'+_.escape(t)+'" data-user-display-name="'+_.escape(n)+'"></span>';return'<span class="atwho-inserted" contenteditable="false"><span class="avatar-name-wrapper'+(t===e.getCurrentUser().uid?" currentUser":"")+'">'+o+"<strong>"+_.escape(n)+"</strong></span></span>"},nextPage:function(){!this._loading&&this.collection.hasMoreResults()&&this.collection.fetchNext()},_onClickEditComment:function(e){e.preventDefault();var n=$(e.target).closest(".comment"),o=n.data("id"),i=this.collection.get(o),a=$(this.editCommentTemplate(_.extend({isEditMode:!0,submitText:t("comments","Save")},i.attributes)));n.addClass("hidden").removeClass("collapsed"),n.after(a),a.data("commentEl",n),a.find(".message").on("keydown input change",this._onTypeComment),a.find(".avatar:first").replaceWith(n.find(".avatar:first").clone()),a.find(".has-tooltip").tooltip();var r=a.find(".message");r.html(this._formatMessage(i.get("message"),i.get("mentions"),!0)).find(".avatar").each((function(){$(this).avatar()}));return this._postRenderItem(r,!0),autosize(a.find(".message")),this._initAutoComplete(a.find(".message")),!1},_onTypeComment:function(e){var n=$(e.target),o=n.text().length,i=n.data("submitButtonEl");i||(i=n.closest("form").find(".submit"),n.data("submitButtonEl",i)),n.tooltip("hide"),o>this._commentMaxThreshold&&(n.attr("data-original-title",t("comments","Allowed characters {count} of {max}",{count:o,max:this._commentMaxLength})),n.tooltip({trigger:"manual"}),n.tooltip("show"),n.addClass("error"));var a=o>this._commentMaxLength;n.toggleClass("error",a),i.prop("disabled",a),13!==e.keyCode||e.shiftKey||n.atwho("isSelecting")||(i.click(),e.preventDefault())},_onClickComment:function(t){var e=$(t.target);e.is(".comment")||(e=e.closest(".comment")),e.removeClass("collapsed")},_onClickCloseComment:function(t){t.preventDefault();var e=$(t.target).closest(".comment");return e.data("commentEl").removeClass("hidden"),e.remove(),!1},_onClickDeleteComment:function(n){n.preventDefault();var o=$(n.target).closest(".comment"),i=o.data("id"),a=o.find(".deleteLoading"),r=o.find(".more");return o.addClass("disabled"),a.removeClass("hidden"),r.addClass("hidden"),o.data("commentEl",o),this.collection.get(i).destroy({success:function(){o.data("commentEl").remove(),o.remove()},error:function(){a.addClass("hidden"),r.removeClass("hidden"),o.removeClass("disabled"),e.Notification.showTemporary(t("comments","Error occurred while retrieving comment with ID {id}",{id:i}))}}),!1},_onClickShowMore:function(t){t.preventDefault(),this.nextPage()},_onSubmitSuccess:function(t,e){var n=e.find(".submit"),o=e.find(".submitLoading");n.removeClass("hidden"),o.addClass("hidden")},_commentBodyHTML2Plain:function(t){var e,n=t.clone();n.find(".avatar-name-wrapper").each((function(){var t=$(this),e=t.parent(),n=t.find(".avatar").data("username").toString();-1!==n.indexOf(" ")?e.html('@"'+n+'"'):e.html("@"+n)})),n.html(OCP.Comments.richToPlain(n.html()));var o=n.html();do{o=(e=o).replace("<br>","\n")}while(e!==o);return n.html(o),n.text()},_onSubmitComment:function(t){var n=this,o=$(t.target),i=o.closest(".comment").data("id"),a=e.getCurrentUser(),r=o.find(".submit"),s=o.find(".submitLoading"),l=o.find(".message"),c=l.text().trim();if(t.preventDefault(),c.length&&!(c.length>this._commentMaxLength)){if(l.prop("contenteditable",!1),r.addClass("hidden"),s.removeClass("hidden"),c=this._commentBodyHTML2Plain(l),i)this.collection.get(i).save({message:c},{success:function(t){if(n._onSubmitSuccess(t,o),t.get("message").trim()===t.previous("message").trim()){var e=o.closest(".comment");e.data("commentEl").removeClass("hidden"),e.remove()}},error:function(){n._onSubmitError(o,i)}});else this.collection.create({actorId:a.uid,actorDisplayName:a.displayName,actorType:"users",verb:"comment",message:c,creationDateTime:(new Date).toUTCString()},{at:0,wait:!0,success:function(t){n._onSubmitSuccess(t,o)},error:function(){n._onSubmitError(o,void 0)}});return!1}},_onSubmitError:function(n,o){n.find(".submit").removeClass("hidden"),n.find(".submitLoading").addClass("hidden"),n.find(".message").prop("contenteditable",!0),_.isUndefined(o)?e.Notification.show(t("comments","Error occurred while posting comment"),{type:"error"}):e.Notification.show(t("comments","Error occurred while updating comment with id {id}",{id:o}),{type:"error"})},_onTextChange:function(){var t=$("#commentsTabView").find(".newCommentForm div.message");t.text().trim().length||t.empty()},_onPaste:function(t){t.preventDefault();var e=t.originalEvent.clipboardData.getData("text/plain");document.execCommand("insertText",!1,e)},_isLong:function(t){return t.length>250||(t.match(/\n/g)||[]).length>1}});n.Comments.CommentsTabView=o}(OC,OCA)},function(e,n){var o;OC,OCA,o=OC.Backbone.View.extend({tagName:"div",className:"commentsModifyMenu popovermenu bubble menu",_scopes:[{name:"edit",displayName:t("comments","Edit comment"),iconClass:"icon-rename"},{name:"delete",displayName:t("comments","Delete comment"),iconClass:"icon-delete"}],initialize:function(){},events:{"click a.action":"_onClickAction"},_onClickAction:function(t){var e=$(t.currentTarget);e.hasClass("menuitem")||(e=e.closest(".menuitem")),OC.hideMenus(),this.trigger("select:menu-item-clicked",t,e.data("action"))},render:function(){this.$el.html(OCA.Comments.Templates.commentsmodifymenu({items:this._scopes}))},show:function(t){for(var e in this._context=t,this._scopes)this._scopes[e].active=!1;var n=$(t.target),o=n.offset(),i=n.closest(".authorRow").offset(),a={top:o.top-i.top+48,left:"",right:""};a.left=o.left-i.left,a.left>200?(a.left="",a.right=this.$el.closest(".comment").find(".date").width(),this.$el.removeClass("menu-left").addClass("menu-right")):this.$el.removeClass("menu-right").addClass("menu-left"),this.$el.css(a),this.render(),this.$el.removeClass("hidden"),OC.showMenu(null,this.$el)}}),OCA.Comments=OCA.Comments||{},OCA.Comments.CommentsModifyMenu=o},function(e,o){_.extend(OC.Files.Client,{PROPERTY_COMMENTS_UNREAD:"{"+OC.Files.Client.NS_OWNCLOUD+"}comments-unread"}),OCA.Comments=_.extend({},OCA.Comments),OCA.Comments||(OCA.Comments={}),OCA.Comments.FilesPlugin={ignoreLists:["trashbin","files.public"],_formatCommentCount:function(t){return OCA.Comments.Templates.filesplugin({count:t,countMessage:n("comments","%n unread comment","%n unread comments",t),iconUrl:OC.imagePath("core","actions/comment")})},attach:function(e){var o=this;if(!(this.ignoreLists.indexOf(e.id)>=0)){e.registerTabView(new OCA.Comments.CommentsTabView("commentsTabView"));var i=e._getWebdavProperties;e._getWebdavProperties=function(){var t=i.apply(this,arguments);return t.push(OC.Files.Client.PROPERTY_COMMENTS_UNREAD),t},e.filesClient.addFileInfoParser((function(t){var e={},n=t.propStat[0].properties[OC.Files.Client.PROPERTY_COMMENTS_UNREAD];return _.isUndefined(n)||""===n||(e.commentsUnread=parseInt(n,10)),e})),e.$el.addClass("has-comments");var a=e._createRow;e._createRow=function(t){var e=a.apply(this,arguments);return t.commentsUnread&&e.attr("data-comments-unread",t.commentsUnread),e},e.fileActions.registerAction({name:"Comment",displayName:function(e){if(e&&e.$file){var o=parseInt(e.$file.data("comments-unread"),10);if(o>=0)return n("comments","1 new comment","{unread} new comments",o,{unread:o})}return t("comments","Comment")},mime:"all",order:-140,iconClass:"icon-comment",permissions:OC.PERMISSION_READ,type:OCA.Files.FileActions.TYPE_INLINE,render:function(t,e,n){var i=n.$file.data("comments-unread");if(i){var a=$(o._formatCommentCount(i));return n.$file.find("a.name>span.fileactions").append(a),a}return""},actionHandler:function(t,e){e.$file.find(".action-comment").tooltip("hide"),e.fileList.showDetailsView(t,"comments")}});var r=e.elementToFile;e.elementToFile=function(t){var e=r.apply(this,arguments),n=t.data("comments-unread");return n&&(e.commentsUnread=n),e}}}},OC.Plugins.register("OCA.Files.FileList",OCA.Comments.FilesPlugin)},function(t,e){OCA.Comments.ActivityTabViewPlugin={prepareModelForDisplay:function(t,e,n){if("comments"===t.get("app")&&"comments"===t.get("type")&&"ActivityTabView"===n&&(e.addClass("comment"),t.get("message")&&this._isLong(t.get("message")))){e.addClass("collapsed");var o=$("<div>").addClass("message-overlay");e.find(".activitymessage").after(o),e.on("click",this._onClickCollapsedComment)}},_onClickCollapsedComment:function(t){var e=$(t.target);e.is(".comment")||(e=e.closest(".comment")),e.removeClass("collapsed")},_isLong:function(t){return t.length>250||(t.match(/\n/g)||[]).length>1}},OC.Plugins.register("OCA.Activity.RenderingPlugins",OCA.Comments.ActivityTabViewPlugin)},function(t,e){!function(t,e,n){"use strict";var o=function(){this.initialize()};o.prototype={fileList:null,initialize:function(){var o=this;this.fileAppLoaded=function(){return!!e.Files&&!!e.Files.App},this.renderCommentResult=function(e,o){var i;(i=n(".nofilterresults")).hasClass("hidden")||i.addClass("hidden"),this.updateLegacyMimetype(o);var a=n("<div>").addClass("path").text(o.path),r=n("<div>");r.addClass("avatar").css("display","inline-block").css("vertical-align","middle").css("margin","0 5px 2px 3px"),o.authorName?r.avatar(o.authorId,21,void 0,!1,void 0,o.authorName):r.avatar(o.authorId,21),e.find("td.info div.name").after(a).text(o.comment).prepend(n("<span>").addClass("path").css("margin-right","5px").text(o.authorName)).prepend(r),e.find("td.result a").attr("href",o.link),e.find("td.icon").css("background-image","url("+t.imagePath("core","actions/comment")+")").css("opacity",".4");var s=t.dirname(o.path);return s===o.path&&(s="/"),e.find("td.info a").attr("href",t.generateUrl("/apps/files/?dir={dir}&scrollto={scrollto}",{dir:s,scrollto:o.fileName})),e},this.handleCommentClick=function(e,n,i){return!o.fileAppLoaded()||"files"!==o.fileList.id||(o.fileList.changeDirectory(t.dirname(n.path)),o.fileList.scrollTo(n.name),!1)},this.updateLegacyMimetype=function(t){!t.mime&&t.mime_type&&(t.mime=t.mime_type)},this.setFileList=function(t){this.fileList=t},t.Plugins.register("OCA.Search.Core",this)},attach:function(t){t.setRenderer("comment",this.renderCommentResult.bind(this)),t.setHandler("comment",this.handleCommentClick.bind(this))}},e.Search.comment=new o}(OC,OCA,$)},function(t,e,n){var o,i,a;a=this,o=[n(0)],void 0===(i=function(t){return a.returnExportsGlobal=function(t){"use strict";var e,n,o,i,a,r,s,l;e=function(){function e(t){this.$inputor=t,this.domInputor=this.$inputor[0]}return e.prototype.setPos=function(){return this.domInputor},e.prototype.getIEPosition=function(){return this.getPosition()},e.prototype.getPosition=function(){var t,e;return e=this.getOffset(),t=this.$inputor.offset(),e.left-=t.left,e.top-=t.top,e},e.prototype.getOldIEPos=function(){var t,e;return e=r.selection.createRange(),(t=r.body.createTextRange()).moveToElementText(this.domInputor),t.setEndPoint("EndToEnd",e),t.text.length},e.prototype.getPos=function(){var t,e,n;return(n=this.range())?((t=n.cloneRange()).selectNodeContents(this.domInputor),t.setEnd(n.endContainer,n.endOffset),e=t.toString().length,t.detach(),e):r.selection?this.getOldIEPos():void 0},e.prototype.getOldIEOffset=function(){var t,e;return(t=r.selection.createRange().duplicate()).moveStart("character",-1),{height:(e=t.getBoundingClientRect()).bottom-e.top,left:e.left,top:e.top}},e.prototype.getOffset=function(){var e,n,o,i,a;return s.getSelection&&(o=this.range())?(o.endOffset-1>0&&o.endContainer===!this.domInputor&&((e=o.cloneRange()).setStart(o.endContainer,o.endOffset-1),e.setEnd(o.endContainer,o.endOffset),n={height:(i=e.getBoundingClientRect()).height,left:i.left+i.width,top:i.top},e.detach()),n&&0!==(null!=n?n.height:void 0)||(e=o.cloneRange(),a=t(r.createTextNode("|")),e.insertNode(a[0]),e.selectNode(a[0]),n={height:(i=e.getBoundingClientRect()).height,left:i.left,top:i.top},a.remove(),e.detach())):r.selection&&(n=this.getOldIEOffset()),n&&(n.top+=t(s).scrollTop(),n.left+=t(s).scrollLeft()),n},e.prototype.range=function(){var t;if(s.getSelection)return(t=s.getSelection()).rangeCount>0?t.getRangeAt(0):null},e}(),n=function(){function e(t){this.$inputor=t,this.domInputor=this.$inputor[0]}return e.prototype.getIEPos=function(){var t,e,n,o,i,a;return e=this.domInputor,o=0,(i=r.selection.createRange())&&i.parentElement()===e&&(n=e.value.replace(/\r\n/g,"\n").length,(a=e.createTextRange()).moveToBookmark(i.getBookmark()),(t=e.createTextRange()).collapse(!1),o=a.compareEndPoints("StartToEnd",t)>-1?n:-a.moveStart("character",-n)),o},e.prototype.getPos=function(){return r.selection?this.getIEPos():this.domInputor.selectionStart},e.prototype.setPos=function(t){var e,n;return e=this.domInputor,r.selection?((n=e.createTextRange()).move("character",t),n.select()):e.setSelectionRange&&e.setSelectionRange(t,t),e},e.prototype.getIEOffset=function(t){var e;return e=this.domInputor.createTextRange(),t||(t=this.getPos()),e.move("character",t),{left:e.boundingLeft,top:e.boundingTop,height:e.boundingHeight}},e.prototype.getOffset=function(e){var n,o,i;return n=this.$inputor,r.selection?((o=this.getIEOffset(e)).top+=t(s).scrollTop()+n.scrollTop(),o.left+=t(s).scrollLeft()+n.scrollLeft(),o):(o=n.offset(),i=this.getPosition(e),o={left:o.left+i.left-n.scrollLeft(),top:o.top+i.top-n.scrollTop(),height:i.height})},e.prototype.getPosition=function(t){var e,n,i,a,r;return e=this.$inputor,i=function(t){return t=t.replace(/<|>|`|"|&/g,"?").replace(/\r\n|\r|\n/g,"<br/>"),/firefox/i.test(navigator.userAgent)&&(t=t.replace(/\s/g,"&nbsp;")),t},void 0===t&&(t=this.getPos()),r=e.val().slice(0,t),n=e.val().slice(t),a="<span style='position: relative; display: inline;'>"+i(r)+"</span>",a+="<span id='caret' style='position: relative; display: inline;'>|</span>",a+="<span style='position: relative; display: inline;'>"+i(n)+"</span>",new o(e).create(a).rect()},e.prototype.getIEPosition=function(t){var e,n;return n=this.getIEOffset(t),e=this.$inputor.offset(),{left:n.left-e.left,top:n.top-e.top,height:n.height}},e}(),o=function(){function e(t){this.$inputor=t}return e.prototype.css_attr=["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","boxSizing","fontFamily","fontSize","fontWeight","height","letterSpacing","lineHeight","marginBottom","marginLeft","marginRight","marginTop","outlineWidth","overflow","overflowX","overflowY","paddingBottom","paddingLeft","paddingRight","paddingTop","textAlign","textOverflow","textTransform","whiteSpace","wordBreak","wordWrap"],e.prototype.mirrorCss=function(){var e,n=this;return e={position:"absolute",left:-9999,top:0,zIndex:-2e4},"TEXTAREA"===this.$inputor.prop("tagName")&&this.css_attr.push("width"),t.each(this.css_attr,(function(t,o){return e[o]=n.$inputor.css(o)})),e},e.prototype.create=function(e){return this.$mirror=t("<div></div>"),this.$mirror.css(this.mirrorCss()),this.$mirror.html(e),this.$inputor.after(this.$mirror),this},e.prototype.rect=function(){var t,e,n;return n={left:(e=(t=this.$mirror.find("#caret")).position()).left,top:e.top,height:t.height()},this.$mirror.remove(),n},e}(),i={contentEditable:function(t){return!(!t[0].contentEditable||"true"!==t[0].contentEditable)}},a={pos:function(t){return t||0===t?this.setPos(t):this.getPos()},position:function(t){return r.selection?this.getIEPosition(t):this.getPosition(t)},offset:function(t){return this.getOffset(t)}},r=null,s=null,l=function(t){var e;return(e=null!=t?t.iframe:void 0)?(s=e.contentWindow,r=e.contentDocument||s.document):(s=window,r=document)},t.fn.caret=function(o,r,s){var c;return a[o]?(t.isPlainObject(r)?(l(r),r=void 0):l(s),c=i.contentEditable(this)?new e(this):new n(this),a[o].apply(c,[r])):t.error("Method "+o+" does not exist on jQuery.caret")},t.fn.caret.EditableCaret=e,t.fn.caret.InputCaret=n,t.fn.caret.Utils=i,t.fn.caret.apis=a}(t)}.apply(e,o))||(t.exports=i)},function(t,e,n){var o,i;function a(t){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}o=[n(0)],void 0===(i=function(t){return function(t){var e,n,o;n={ESC:27,TAB:9,ENTER:13,CTRL:17,A:65,P:80,N:78,LEFT:37,UP:38,RIGHT:39,DOWN:40,BACKSPACE:8,SPACE:32},e={beforeSave:function(t){return i.arrayToDefaultHash(t)},matcher:function(t,e,n,o){var i,a,r;return t=t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),n&&(t="(?:^|\\s)"+t),i=decodeURI("%C3%80"),a=decodeURI("%C3%BF"),(r=new RegExp(t+"([A-Za-z"+i+"-"+a+"0-9_"+(o?" ":"")+"'.+-]*)$|"+t+"([^\\x00-\\xff]*)$","gi").exec(e))?r[2]||r[1]:null},filter:function(t,e,n){var o,i,a,r;for(o=[],i=0,r=e.length;r>i;i++)a=e[i],~new String(a[n]).toLowerCase().indexOf(t.toLowerCase())&&o.push(a);return o},remoteFilter:null,sorter:function(t,e,n){var o,i,a,r;if(!t)return e;for(o=[],i=0,r=e.length;r>i;i++)(a=e[i]).atwho_order=new String(a[n]).toLowerCase().indexOf(t.toLowerCase()),a.atwho_order>-1&&o.push(a);return o.sort((function(t,e){return t.atwho_order-e.atwho_order}))},tplEval:function(t,e){var n;n=t;try{return"string"!=typeof t&&(n=t(e)),n.replace(/\$\{([^\}]*)\}/g,(function(t,n,o){return e[n]}))}catch(t){return""}},highlighter:function(t,e){var n;return e?(n=new RegExp(">\\s*([^<]*?)("+e.replace("+","\\+")+")([^<]*)\\s*<","ig"),t.replace(n,(function(t,e,n,o){return"> "+e+"<strong>"+n+"</strong>"+o+" <"}))):t},beforeInsert:function(t,e,n){return t},beforeReposition:function(t){return t},afterMatchFailed:function(t,e){}},o=function(){function e(e){this.currentFlag=null,this.controllers={},this.aliasMaps={},this.$inputor=t(e),this.setupRootElement(),this.listen()}return e.prototype.createContainer=function(e){var n;return null!=(n=this.$el)&&n.remove(),t(e.body).append(this.$el=t("<div class='atwho-container'></div>"))},e.prototype.setupRootElement=function(e,n){var o,i;if(null==n&&(n=!1),e)this.window=e.contentWindow,this.document=e.contentDocument||this.window.document,this.iframe=e;else{this.document=this.$inputor[0].ownerDocument,this.window=this.document.defaultView||this.document.parentWindow;try{this.iframe=this.window.frameElement}catch(i){if(o=i,this.iframe=null,t.fn.atwho.debug)throw new Error("iframe auto-discovery is failed.\nPlease use `setIframe` to set the target iframe manually.\n"+o)}}return this.createContainer((this.iframeAsRoot=n)?this.document:document)},e.prototype.controller=function(t){var e,n,o,i;if(this.aliasMaps[t])n=this.controllers[this.aliasMaps[t]];else for(o in i=this.controllers)if(e=i[o],o===t){n=e;break}return n||this.controllers[this.currentFlag]},e.prototype.setContextFor=function(t){return this.currentFlag=t,this},e.prototype.reg=function(t,e){var n,o;return o=(n=this.controllers)[t]||(n[t]=this.$inputor.is("[contentEditable]")?new l(this,t):new s(this,t)),e.alias&&(this.aliasMaps[e.alias]=t),o.init(e),this},e.prototype.listen=function(){return this.$inputor.on("compositionstart",function(t){return function(e){var n;return null!=(n=t.controller())&&n.view.hide(),t.isComposing=!0,null}}(this)).on("compositionend",function(t){return function(e){return t.isComposing=!1,setTimeout((function(e){return t.dispatch(e)})),null}}(this)).on("keyup.atwhoInner",function(t){return function(e){return t.onKeyup(e)}}(this)).on("keydown.atwhoInner",function(t){return function(e){return t.onKeydown(e)}}(this)).on("blur.atwhoInner",function(t){return function(e){var n;return(n=t.controller())?(n.expectedQueryCBId=null,n.view.hide(e,n.getOpt("displayTimeout"))):void 0}}(this)).on("click.atwhoInner",function(t){return function(e){return t.dispatch(e)}}(this)).on("scroll.atwhoInner",function(t){return function(){var e;return e=t.$inputor.scrollTop(),function(n){var o,i;return o=n.target.scrollTop,e!==o&&null!=(i=t.controller())&&i.view.hide(n),e=o,!0}}}(this)())},e.prototype.shutdown=function(){var t,e;for(t in e=this.controllers)e[t].destroy(),delete this.controllers[t];return this.$inputor.off(".atwhoInner"),this.$el.remove()},e.prototype.dispatch=function(t){var e,n,o,i;for(e in i=[],o=this.controllers)n=o[e],i.push(n.lookUp(t));return i},e.prototype.onKeyup=function(e){var o;switch(e.keyCode){case n.ESC:e.preventDefault(),null!=(o=this.controller())&&o.view.hide();break;case n.DOWN:case n.UP:case n.CTRL:case n.ENTER:t.noop();break;case n.P:case n.N:e.ctrlKey||this.dispatch(e);break;default:this.dispatch(e)}},e.prototype.onKeydown=function(e){var o,i;if((i=null!=(o=this.controller())?o.view:void 0)&&i.visible())switch(e.keyCode){case n.ESC:e.preventDefault(),i.hide(e);break;case n.UP:e.preventDefault(),i.prev();break;case n.DOWN:e.preventDefault(),i.next();break;case n.P:if(!e.ctrlKey)return;e.preventDefault(),i.prev();break;case n.N:if(!e.ctrlKey)return;e.preventDefault(),i.next();break;case n.TAB:case n.ENTER:case n.SPACE:if(!i.visible())return;if(!this.controller().getOpt("spaceSelectsMatch")&&e.keyCode===n.SPACE)return;if(!this.controller().getOpt("tabSelectsMatch")&&e.keyCode===n.TAB)return;i.highlighted()?(e.preventDefault(),i.choose(e)):i.hide(e);break;default:t.noop()}},e}();var i,r=[].slice;i=function(){function n(e,n){this.app=e,this.at=n,this.$inputor=this.app.$inputor,this.id=this.$inputor[0].id||this.uid(),this.expectedQueryCBId=null,this.setting=null,this.query=null,this.pos=0,this.range=null,0===(this.$el=t("#atwho-ground-"+this.id,this.app.$el)).length&&this.app.$el.append(this.$el=t("<div id='atwho-ground-"+this.id+"'></div>")),this.model=new c(this),this.view=new m(this)}return n.prototype.uid=function(){return(Math.random().toString(16)+"000000000").substr(2,8)+(new Date).getTime()},n.prototype.init=function(e){return this.setting=t.extend({},this.setting||t.fn.atwho.default,e),this.view.init(),this.model.reload(this.setting.data)},n.prototype.destroy=function(){return this.trigger("beforeDestroy"),this.model.destroy(),this.view.destroy(),this.$el.remove()},n.prototype.callDefault=function(){var n,o,i,a;a=arguments[0],n=2<=arguments.length?r.call(arguments,1):[];try{return e[a].apply(this,n)}catch(i){return o=i,t.error(o+" Or maybe At.js doesn't have function "+a)}},n.prototype.trigger=function(t,e){var n,o;return null==e&&(e=[]),e.push(this),o=(n=this.getOpt("alias"))?t+"-"+n+".atwho":t+".atwho",this.$inputor.trigger(o,e)},n.prototype.callbacks=function(t){return this.getOpt("callbacks")[t]||e[t]},n.prototype.getOpt=function(t,e){try{return this.setting[t]}catch(t){return null}},n.prototype.insertContentFor=function(e){var n,o;return o=this.getOpt("insertTpl"),n=t.extend({},e.data("item-data"),{"atwho-at":this.at}),this.callbacks("tplEval").call(this,o,n,"onInsert")},n.prototype.renderView=function(t){var e;return e=this.getOpt("searchKey"),t=this.callbacks("sorter").call(this,this.query.text,t.slice(0,1001),e),this.view.render(t.slice(0,this.getOpt("limit")))},n.arrayToDefaultHash=function(e){var n,o,i,a;if(!t.isArray(e))return e;for(a=[],n=0,i=e.length;i>n;n++)o=e[n],t.isPlainObject(o)?a.push(o):a.push({name:o});return a},n.prototype.lookUp=function(t){var e,n;if((!t||"click"!==t.type||this.getOpt("lookUpOnClick"))&&(!this.getOpt("suspendOnComposing")||!this.app.isComposing))return(e=this.catchQuery(t))?(this.app.setContextFor(this.at),(n=this.getOpt("delay"))?this._delayLookUp(e,n):this._lookUp(e),e):(this.expectedQueryCBId=null,e)},n.prototype._delayLookUp=function(t,e){var n,o;return n=Date.now?Date.now():(new Date).getTime(),this.previousCallTime||(this.previousCallTime=n),(o=e-(n-this.previousCallTime))>0&&e>o?(this.previousCallTime=n,this._stopDelayedCall(),this.delayedCallTimeout=setTimeout(function(e){return function(){return e.previousCallTime=0,e.delayedCallTimeout=null,e._lookUp(t)}}(this),e)):(this._stopDelayedCall(),this.previousCallTime!==n&&(this.previousCallTime=0),this._lookUp(t))},n.prototype._stopDelayedCall=function(){return this.delayedCallTimeout?(clearTimeout(this.delayedCallTimeout),this.delayedCallTimeout=null):void 0},n.prototype._generateQueryCBId=function(){return{}},n.prototype._lookUp=function(e){var n;return n=function(t,e){return t===this.expectedQueryCBId?e&&e.length>0?this.renderView(this.constructor.arrayToDefaultHash(e)):this.view.hide():void 0},this.expectedQueryCBId=this._generateQueryCBId(),this.model.query(e.text,t.proxy(n,this,this.expectedQueryCBId))},n}();var s,l,c,m,u,d=function(t,e){function n(){this.constructor=t}for(var o in e)h.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},h={}.hasOwnProperty;s=function(e){function n(){return n.__super__.constructor.apply(this,arguments)}return d(n,e),n.prototype.catchQuery=function(){var t,e,n,o,i,a,r;return e=this.$inputor.val(),t=this.$inputor.caret("pos",{iframe:this.app.iframe}),r=e.slice(0,t),(o="string"==typeof(i=this.callbacks("matcher").call(this,this.at,r,this.getOpt("startWithSpace"),this.getOpt("acceptSpaceBar"))))&&i.length<this.getOpt("minLen",0)?void 0:(o&&i.length<=this.getOpt("maxLen",20)?(n=(a=t-i.length)+i.length,this.pos=a,i={text:i,headPos:a,endPos:n},this.trigger("matched",[this.at,i.text])):(i=null,this.view.hide()),this.query=i)},n.prototype.rect=function(){var e,n,o;if(e=this.$inputor.caret("offset",this.pos-1,{iframe:this.app.iframe}))return this.app.iframe&&!this.app.iframeAsRoot&&(n=t(this.app.iframe).offset(),e.left+=n.left,e.top+=n.top),o=this.app.document.selection?0:2,{left:e.left,top:e.top,bottom:e.top+e.height+o}},n.prototype.insert=function(t,e){var n,o,i,a,r;return r=""+(i=(o=(n=this.$inputor).val()).slice(0,Math.max(this.query.headPos-this.at.length,0)))+(t+=a=""===(a=this.getOpt("suffix"))?a:a||" ")+o.slice(this.query.endPos||0),n.val(r),n.caret("pos",i.length+t.length,{iframe:this.app.iframe}),n.is(":focus")||n.focus(),n.change()},n}(i),d=function(t,e){function n(){this.constructor=t}for(var o in e)h.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},h={}.hasOwnProperty,l=function(e){function o(){return o.__super__.constructor.apply(this,arguments)}return d(o,e),o.prototype._getRange=function(){var t;return(t=this.app.window.getSelection()).rangeCount>0?t.getRangeAt(0):void 0},o.prototype._setRange=function(e,n,o){return null==o&&(o=this._getRange()),o&&n?(n=t(n)[0],"after"===e?(o.setEndAfter(n),o.setStartAfter(n)):(o.setEndBefore(n),o.setStartBefore(n)),o.collapse(!1),this._clearRange(o)):void 0},o.prototype._clearRange=function(t){var e;return null==t&&(t=this._getRange()),e=this.app.window.getSelection(),null==this.ctrl_a_pressed?(e.removeAllRanges(),e.addRange(t)):void 0},o.prototype._movingEvent=function(t){var e;return"click"===t.type||(e=t.which)===n.RIGHT||e===n.LEFT||e===n.UP||e===n.DOWN},o.prototype._unwrap=function(e){var n;return(n=(e=t(e).unwrap().get(0)).nextSibling)&&n.nodeValue&&(e.nodeValue+=n.nodeValue,t(n).remove()),e},o.prototype.catchQuery=function(e){var o,i,a,r,s,l,c,m,u,d,h,p;if((p=this._getRange())&&p.collapsed){if(e.which===n.ENTER)return(i=t(p.startContainer).closest(".atwho-query")).contents().unwrap(),i.is(":empty")&&i.remove(),(i=t(".atwho-query",this.app.document)).text(i.text()).contents().last().unwrap(),void this._clearRange();if(/firefox/i.test(navigator.userAgent)){if(t(p.startContainer).is(this.$inputor))return void this._clearRange();e.which===n.BACKSPACE&&p.startContainer.nodeType===document.ELEMENT_NODE&&(u=p.startOffset-1)>=0?((a=p.cloneRange()).setStart(p.startContainer,u),t(a.cloneContents()).contents().last().is(".atwho-inserted")&&(s=t(p.startContainer).contents().get(u),this._setRange("after",t(s).contents().last()))):e.which===n.LEFT&&p.startContainer.nodeType===document.TEXT_NODE&&(o=t(p.startContainer.previousSibling)).is(".atwho-inserted")&&0===p.startOffset&&this._setRange("after",o.contents().last())}if(t(p.startContainer).closest(".atwho-inserted").addClass("atwho-query").siblings().removeClass("atwho-query"),(i=t(".atwho-query",this.app.document)).length>0&&i.is(":empty")&&0===i.text().length&&i.remove(),this._movingEvent(e)||i.removeClass("atwho-inserted"),i.length>0)switch(e.which){case n.LEFT:return this._setRange("before",i.get(0),p),void i.removeClass("atwho-query");case n.RIGHT:return this._setRange("after",i.get(0).nextSibling,p),void i.removeClass("atwho-query")}if(i.length>0&&(h=i.attr("data-atwho-at-query"))&&(i.empty().html(h).attr("data-atwho-at-query",null),this._setRange("after",i.get(0),p)),(a=p.cloneRange()).setStart(p.startContainer,0),l="string"==typeof(m=this.callbacks("matcher").call(this,this.at,a.toString(),this.getOpt("startWithSpace"),this.getOpt("acceptSpaceBar"))),0===i.length&&l&&(r=p.startOffset-this.at.length-m.length)>=0&&(p.setStart(p.startContainer,r),i=t("<span/>",this.app.document).attr(this.getOpt("editableAtwhoQueryAttrs")).addClass("atwho-query"),p.surroundContents(i.get(0)),(c=i.contents().last().get(0))&&(/firefox/i.test(navigator.userAgent)?(p.setStart(c,c.length),p.setEnd(c,c.length),this._clearRange(p)):this._setRange("after",c,p))),!(l&&m.length<this.getOpt("minLen",0)))return l&&m.length<=this.getOpt("maxLen",20)?(d={text:m,el:i},this.trigger("matched",[this.at,d.text]),this.query=d):(this.view.hide(),this.query={el:i},i.text().indexOf(this.at)>=0&&(this._movingEvent(e)&&i.hasClass("atwho-inserted")?i.removeClass("atwho-query"):!1!==this.callbacks("afterMatchFailed").call(this,this.at,i)&&this._setRange("after",this._unwrap(i.text(i.text()).contents().first()))),null)}},o.prototype.rect=function(){var e,n;return(n=this.query.el.offset())&&this.query.el[0].getClientRects().length?(this.app.iframe&&!this.app.iframeAsRoot&&(e=t(this.app.iframe).offset(),n.left+=e.left-this.$inputor.scrollLeft(),n.top+=e.top-this.$inputor.scrollTop()),n.bottom=n.top+this.query.el.height(),n):void 0},o.prototype.insert=function(t,e){var n,o,i,a,r;return this.$inputor.is(":focus")||this.$inputor.focus(),(o=this.getOpt("functionOverrides")).insert?o.insert.call(this,t,e):(a=""===(a=this.getOpt("suffix"))?a:a||" ",n=e.data("item-data"),this.query.el.removeClass("atwho-query").addClass("atwho-inserted").html(t).attr("data-atwho-at-query",""+n["atwho-at"]+this.query.text).attr("contenteditable","false"),(i=this._getRange())&&(this.query.el.length&&i.setEndAfter(this.query.el[0]),i.collapse(!1),i.insertNode(r=this.app.document.createTextNode(""+a)),this._setRange("after",r,i)),this.$inputor.is(":focus")||this.$inputor.focus(),this.$inputor.change())},o}(i),c=function(){function e(t){this.context=t,this.at=this.context.at,this.storage=this.context.$inputor}return e.prototype.destroy=function(){return this.storage.data(this.at,null)},e.prototype.saved=function(){return this.fetch()>0},e.prototype.query=function(t,e){var n,o,i;return o=this.fetch(),i=this.context.getOpt("searchKey"),o=this.context.callbacks("filter").call(this.context,t,o,i)||[],n=this.context.callbacks("remoteFilter"),o.length>0||!n&&0===o.length?e(o):n.call(this.context,t,e)},e.prototype.fetch=function(){return this.storage.data(this.at)||[]},e.prototype.save=function(t){return this.storage.data(this.at,this.context.callbacks("beforeSave").call(this.context,t||[]))},e.prototype.load=function(t){return!this.saved()&&t?this._load(t):void 0},e.prototype.reload=function(t){return this._load(t)},e.prototype._load=function(e){return"string"==typeof e?t.ajax(e,{dataType:"json"}).done(function(t){return function(e){return t.save(e)}}(this)):this.save(e)},e}(),m=function(){function e(e){this.context=e,this.$el=t("<div class='atwho-view'><ul class='atwho-view-ul'></ul></div>"),this.$elUl=this.$el.children(),this.timeoutID=null,this.context.$el.append(this.$el),this.bindEvent()}return e.prototype.init=function(){var t,e;return e=this.context.getOpt("alias")||this.context.at.charCodeAt(0),(t=this.context.getOpt("headerTpl"))&&1===this.$el.children().length&&this.$el.prepend(t),this.$el.attr({id:"at-view-"+e})},e.prototype.destroy=function(){return this.$el.remove()},e.prototype.bindEvent=function(){var e,n,o;return e=this.$el.find("ul"),n=0,o=0,e.on("mousemove.atwho-view","li",(function(i){var a;if((n!==i.clientX||o!==i.clientY)&&(n=i.clientX,o=i.clientY,!(a=t(i.currentTarget)).hasClass("cur")))return e.find(".cur").removeClass("cur"),a.addClass("cur")})).on("click.atwho-view","li",function(n){return function(o){return e.find(".cur").removeClass("cur"),t(o.currentTarget).addClass("cur"),n.choose(o),o.preventDefault()}}(this))},e.prototype.visible=function(){return t.expr.filters.visible(this.$el[0])},e.prototype.highlighted=function(){return this.$el.find(".cur").length>0},e.prototype.choose=function(t){var e,n;return(e=this.$el.find(".cur")).length&&(n=this.context.insertContentFor(e),this.context._stopDelayedCall(),this.context.insert(this.context.callbacks("beforeInsert").call(this.context,n,e,t),e),this.context.trigger("inserted",[e,t]),this.hide(t)),this.context.getOpt("hideWithoutSuffix")?this.stopShowing=!0:void 0},e.prototype.reposition=function(e){var n,o,i,a;return n=this.context.app.iframeAsRoot?this.context.app.window:window,e.bottom+this.$el.height()-t(n).scrollTop()>t(n).height()&&(e.bottom=e.top-this.$el.height()),e.left>(i=t(n).width()-this.$el.width()-5)&&(e.left=i),o={left:e.left,top:e.bottom},null!=(a=this.context.callbacks("beforeReposition"))&&a.call(this.context,o),this.$el.offset(o),this.context.trigger("reposition",[o])},e.prototype.next=function(){var t,e,n;return(t=this.$el.find(".cur").removeClass("cur").next()).length||(t=this.$el.find("li:first")),t.addClass("cur"),n=(e=t[0]).offsetTop+e.offsetHeight+(e.nextSibling?e.nextSibling.offsetHeight:0),this.scrollTop(Math.max(0,n-this.$el.height()))},e.prototype.prev=function(){var t,e,n;return(e=this.$el.find(".cur").removeClass("cur").prev()).length||(e=this.$el.find("li:last")),e.addClass("cur"),t=(n=e[0]).offsetTop+n.offsetHeight+(n.nextSibling?n.nextSibling.offsetHeight:0),this.scrollTop(Math.max(0,t-this.$el.height()))},e.prototype.scrollTop=function(t){var e;return(e=this.context.getOpt("scrollDuration"))?this.$elUl.animate({scrollTop:t},e):this.$elUl.scrollTop(t)},e.prototype.show=function(){var t;return this.stopShowing?void(this.stopShowing=!1):(this.visible()||(this.$el.show(),this.$el.scrollTop(0),this.context.trigger("shown")),(t=this.context.rect())?this.reposition(t):void 0)},e.prototype.hide=function(t,e){var n;if(this.visible())return isNaN(e)?(this.$el.hide(),this.context.trigger("hidden",[t])):(n=function(t){return function(){return t.hide()}}(this),clearTimeout(this.timeoutID),this.timeoutID=setTimeout(n,e))},e.prototype.render=function(e){var n,o,i,a,r,s,l;if(t.isArray(e)&&e.length>0){for(this.$el.find("ul").empty(),o=this.$el.find("ul"),l=this.context.getOpt("displayTpl"),i=0,r=e.length;r>i;i++)a=e[i],a=t.extend({},a,{"atwho-at":this.context.at}),s=this.context.callbacks("tplEval").call(this.context,l,a,"onDisplay"),(n=t(this.context.callbacks("highlighter").call(this.context,s,this.context.query.text))).data("item-data",a),o.append(n);return this.show(),this.context.getOpt("highlightFirst")?o.find("li:first").addClass("cur"):void 0}this.hide()},e}(),u={load:function(t,e){var n;return(n=this.controller(t))?n.model.load(e):void 0},isSelecting:function(){var t;return!!(null!=(t=this.controller())?t.view.visible():void 0)},hide:function(){var t;return null!=(t=this.controller())?t.view.hide():void 0},reposition:function(){var t;return(t=this.controller())?t.view.reposition(t.rect()):void 0},setIframe:function(t,e){return this.setupRootElement(t,e),null},run:function(){return this.dispatch()},destroy:function(){return this.shutdown(),this.$inputor.data("atwho",null)}},t.fn.atwho=function(e){var n,i;return n=arguments,i=null,this.filter('textarea, input, [contenteditable=""], [contenteditable=true]').each((function(){var r,s;return(s=(r=t(this)).data("atwho"))||r.data("atwho",s=new o(this)),"object"!=a(e)&&e?u[e]&&s?i=u[e].apply(s,Array.prototype.slice.call(n,1)):t.error("Method "+e+" does not exist on jQuery.atwho"):s.reg(e.at,e)})),null!=i?i:this},t.fn.atwho.default={at:void 0,alias:void 0,data:null,displayTpl:"<li>${name}</li>",insertTpl:"${atwho-at}${name}",headerTpl:null,callbacks:e,functionOverrides:{},searchKey:"name",suffix:void 0,hideWithoutSuffix:!1,startWithSpace:!0,acceptSpaceBar:!1,highlightFirst:!0,limit:5,maxLen:20,minLen:0,displayTimeout:300,delay:null,spaceSelectsMatch:!1,tabSelectsMatch:!0,editableAtwhoQueryAttrs:{},scrollDuration:150,suspendOnComposing:!0,lookUpOnClick:!0},t.fn.atwho.debug=!1}(t)}.apply(e,o))||(t.exports=i)},function(t,e,n){var o=n(17);"string"==typeof o&&(o=[[t.i,o,""]]),o.locals&&(t.exports=o.locals);(0,n(2).default)("8e87fa8e",o,!0,{})},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,".atwho-view{position:absolute;top:0;left:0;display:none;margin-top:18px;background:var(--color-main-background);color:var(--color-main-text);border:1px solid var(--color-border);border-radius:var(--border-radius);box-shadow:0 0 5px var(--color-box-shadow);min-width:120px;z-index:11110 !important}.atwho-view .atwho-header{padding:5px;margin:5px;cursor:pointer;border-bottom:solid 1px var(--color-border);color:var(--color-main-text);font-size:11px;font-weight:bold}.atwho-view .atwho-header .small{color:var(--color-main-text);float:right;padding-top:2px;margin-right:-5px;font-size:12px;font-weight:normal}.atwho-view .atwho-header:hover{cursor:default}.atwho-view .cur{background:var(--color-primary);color:var(--color-primary-text)}.atwho-view .cur small{color:var(--color-primary-text)}.atwho-view strong{color:var(--color-main-text);font-weight:normal}.atwho-view .cur strong{color:var(--color-primary-text);font-weight:normal}.atwho-view ul{list-style:none;padding:0;margin:auto;max-height:200px;overflow-y:auto}.atwho-view ul li{display:block;padding:5px 10px;border-bottom:1px solid var(--color-border);cursor:pointer}.atwho-view small{font-size:smaller;color:var(--color-main-text);font-weight:normal}\n",""])},function(t,e,n){var o=n(19);"string"==typeof o&&(o=[[t.i,o,""]]),o.locals&&(t.exports=o.locals);(0,n(2).default)("477a5c21",o,!0,{})},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"#commentsTabView .emptycontent{margin-top:0}#commentsTabView .newCommentForm{margin-left:36px;position:relative}#commentsTabView .newCommentForm .message{width:100%;padding:10px;min-height:44px;margin:0;padding-right:30px}#commentsTabView .newCommentForm .submit,#commentsTabView .newCommentForm .submitLoading{width:44px;height:44px;margin:0;padding:13px;background-color:transparent;border:none;opacity:.3;position:absolute;bottom:0;right:0}#commentsTabView .deleteLoading{padding:14px;vertical-align:middle}#commentsTabView .newCommentForm .submit:not(:disabled):hover,#commentsTabView .newCommentForm .submit:not(:disabled):focus{opacity:1}#commentsTabView .newCommentForm div.message{resize:none}#commentsTabView .newCommentForm div.message:empty:before{content:attr(data-placeholder);color:grey}#commentsTabView .comment{position:relative;padding:10px 0 15px}#commentsTabView .comments .comment{border-top:1px solid var(--color-border)}#commentsTabView .comment .avatar,.atwho-view-ul * .avatar{width:32px;height:32px;line-height:32px;margin-right:5px}#commentsTabView .comment .message .avatar,.atwho-view-ul * .avatar{display:inline-block}#activityTabView li.comment.collapsed .activitymessage,#commentsTabView .comment.collapsed .message{white-space:pre-wrap}#activityTabView li.comment.collapsed .activitymessage,#commentsTabView .comment.collapsed .message{max-height:70px;overflow:hidden}#activityTabView li.comment .message-overlay,#commentsTabView .comment .message-overlay{display:none}#activityTabView li.comment.collapsed .message-overlay,#commentsTabView .comment.collapsed .message-overlay{display:block;position:absolute;z-index:2;height:50px;pointer-events:none;left:0;right:0;bottom:0;background:-moz-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background:-webkit-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background:-o-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background:-ms-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background:linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background-repeat:no-repeat}#commentsTabView .hidden{display:none !important}#commentsTabView .comment .authorRow{min-height:44px}#commentsTabView .comment .authorRow .tooltip{margin-top:5px}.atwho-view-ul * .avatar-name-wrapper,#commentsTabView .comment .authorRow{position:relative;display:inline-flex;align-items:center;width:100%}#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser),#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser) .avatar,#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser) .avatar img,#commentsTabView .comment .authorRow .avatar:not(.currentUser),#commentsTabView .comment .authorRow .author:not(.currentUser){cursor:pointer}.atwho-view-ul .avatar-name-wrapper,.atwho-view-ul .avatar-name-wrapper .avatar,.atwho-view-ul .avatar-name-wrapper .avatar img{cursor:pointer}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper{position:relative;display:inline;vertical-align:top;background-color:var(--color-background-dark);border-radius:50vh;padding:1px 7px 1px 1px;white-space:nowrap}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper .avatar,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper .avatar{height:16px;width:16px;vertical-align:middle;padding:1px;margin-top:-3px;margin-left:0;margin-right:2px}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper .avatar img,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper .avatar img{vertical-align:top}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper strong,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper strong{font-weight:bold}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper.currentUser,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper.currentUser{background-color:var(--color-primary);color:var(--color-primary-text)}.atwho-view-ul * .avatar-name-wrapper{white-space:nowrap}#commentsTabView .comment .author,#commentsTabView .comment .date{opacity:.5}#commentsTabView .comment .author{max-width:210px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}#commentsTabView .comment .date{margin-left:auto;padding:10px 0px}#commentsTabView .comments>li:not(.newCommentRow) .message{padding-left:40px;word-wrap:break-word;overflow-wrap:break-word}#commentsTabView .comment .action{opacity:0.3;padding:14px;display:block}#commentsTabView .comment .action:hover,#commentsTabView .comment .action:focus{opacity:1}#commentsTabView .newCommentRow .action-container{margin-left:auto}#commentsTabView .comment.disabled .message{opacity:0.3}#commentsTabView .comment.disabled .action{display:none}#commentsTabView .message.error{color:#e9322d;border-color:#e9322d;box-shadow:0 0 6px #f8b9b7}.app-files .action-comment{padding:16px 14px}#commentsTabView .comment .message .contactsmenu-popover{left:-6px;top:24px}\n",""])}]);
 //# sourceMappingURL=comments.js.map
\ No newline at end of file
index dec7037df99a299ebd42fd01519a540f3a92c0f2..29221112c42987ef0fb35f0df6b1d5ef7b4f95fe 100644 (file)
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"jQuery\"","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/vue-style-loader/lib/listToStyles.js","webpack:///./node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///./apps/comments/src/comments.js","webpack:///./apps/comments/src/app.js","webpack:///./apps/comments/src/templates.js","webpack:///./apps/comments/src/commentmodel.js","webpack:///./apps/comments/src/commentcollection.js","webpack:///./apps/comments/src/commentsummarymodel.js","webpack:///./apps/comments/src/commentstabview.js","webpack:///./apps/comments/src/commentsmodifymenu.js","webpack:///./apps/comments/src/filesplugin.js","webpack:///./apps/comments/src/activitytabviewplugin.js","webpack:///./apps/comments/src/search.js","webpack:///./apps/comments/src/vendor/Caret.js/dist/jquery.caret.min.js","webpack:///./apps/comments/src/vendor/At.js/dist/js/jquery.atwho.min.js","webpack:///./apps/comments/src/style/autocomplete.scss?75bd","webpack:///./apps/comments/src/style/autocomplete.scss","webpack:///./apps/comments/src/style/comments.scss?fd56","webpack:///./apps/comments/src/style/comments.scss"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","jQuery","useSourceMap","list","toString","this","map","item","content","cssMapping","btoa","sourceMapping","sourceMap","base64","unescape","encodeURIComponent","JSON","stringify","data","concat","sourceURLs","sources","source","sourceRoot","join","cssWithMappingToString","mediaQuery","alreadyImportedModules","length","id","_i","push","listToStyles","parentId","styles","newStyles","part","css","media","parts","hasDocument","document","DEBUG","Error","stylesInDom","head","getElementsByTagName","singletonElement","singletonCounter","isProduction","noop","options","ssrIdKey","isOldIE","navigator","test","userAgent","toLowerCase","addStylesClient","_isProduction","_options","addStylesToDom","newList","mayRemove","domStyle","refs","j","addStyle","createStyleElement","styleElement","createElement","type","appendChild","obj","update","remove","querySelector","parentNode","removeChild","styleIndex","applyToSingletonTag","applyToTag","newObj","textStore","replaceText","index","replacement","filter","Boolean","styleSheet","cssText","cssNode","createTextNode","childNodes","insertBefore","setAttribute","ssrId","firstChild","window","OCA","Comments","template","templates","Handlebars","Templates","container","depth0","helpers","partials","helper","escapeExpression","actorId","helperMissing","nullContext","stack1","alias1","alias2","alias3","alias4","isUnread","program","isLong","isUserAuthor","actorDisplayName","timestamp","altDate","date","formattedMessage","iconClass","displayName","each","items","cancelText","tag","isEditMode","newMessagePlaceholder","message","submitText","countMessage","iconUrl","emptyResultLabel","moreLabel","OC","_","extend","Files","Client","PROPERTY_FILEID","NS_OWNCLOUD","PROPERTY_MESSAGE","PROPERTY_ACTORTYPE","PROPERTY_ACTORID","PROPERTY_ISUNREAD","PROPERTY_OBJECTID","PROPERTY_OBJECTTYPE","PROPERTY_ACTORDISPLAYNAME","PROPERTY_CREATIONDATETIME","PROPERTY_MENTIONS","CommentModel","Backbone","Model","sync","davSync","defaults","actorType","objectType","davProperties","parse","creationDateTime","objectId","mentions","_parseMentions","isUndefined","result","mention","localName","child","nextSibling","startsWith","textContent","CommentCollection","Collection","model","_objectType","_objectId","_endReached","_limit","initialize","models","url","linkToRemote","setObjectId","hasMoreResults","reset","_summaryModel","apply","arguments","fetchNext","self","body","success","resp","initial","set","trigger","getSummaryModel","CommentSummaryModel","updateReadMarker","save","readMarker","Date","toUTCString","PROPERTY_READMARKER","attrs","CommentsTabView","DetailTabView","className","_autoCompleteData","undefined","_commentsModifyMenu","events","_commentMaxLength","collection","on","_onRequest","_onEndRequest","_onAddModel","_onChangeModel","_commentMaxThreshold","bindAll","params","currentUser","getCurrentUser","uid","editCommentTemplate","commentTemplate","editTooltip","_isLong","getLabel","getIcon","setFileInfo","fileInfo","render","_initAutoComplete","$","find","silent","nextPage","$el","html","before","tooltip","$container","avatar","delegateEvents","_onTypeComment","autosize","focus","$target","limit","appConfig","comments","maxAutoCompleteResults","atwho","at","callbacks","remoteFilter","_onAutoComplete","highlighter","li","$li","sorter","q","displayTpl","escapeHTML","label","insertTpl","searchKey","je","_postRenderItem","target","parent","query","callback","_autoCompleteRequestTimer","clearTimeout","delay","_autoCompleteRequestCall","abort","ajax","linkToOCS","search","itemType","itemId","beforeSend","request","setRequestHeader","ocs","_formatItem","commentModel","getTime","Util","relativeModifiedDate","formatDate","_formatMessage","attributes","_toggleLoading","state","_loading","toggleClass","addClass","fileInfoModel","findWhere","$comment","eq","append","text","prop","oldMentions","fetch","isEqual","$updated","trim","previous","$row","closest","removeClass","$message","editionMode","inlineAvatars","context","hasClass","$this","attr","username","contactsMenu","modifyCommentMenu","CommentsModifyMenu","show","listenTo","ev","action","_onClickEditComment","_onClickDeleteComment","_postRenderMessage","user","editMode","replace","mentionId","indexOf","escape","regex","RegExp","_composeHTMLMention","mentionDisplayName","match","p1","OCP","plainToRich","preventDefault","commentId","commentToEdit","$formRow","after","replaceWith","clone","$field","len","$submitButton","count","max","limitExceeded","keyCode","shiftKey","click","_onClickComment","is","_onClickCloseComment","$loading","$moreIcon","destroy","error","Notification","showTemporary","_onClickShowMore","_onSubmitSuccess","$form","$submit","_commentBodyHTML2Plain","oldHtml","$inserted","userId","richToPlain","_onSubmitComment","e","$commentField","_onSubmitError","verb","wait","_onTextChange","empty","_onPaste","originalEvent","clipboardData","getData","execCommand","View","tagName","_scopes","_onClickAction","event","currentTarget","hideMenus","_context","active","offsetIcon","offset","offsetContainer","position","top","left","right","width","showMenu","PROPERTY_COMMENTS_UNREAD","FilesPlugin","ignoreLists","_formatCommentCount","imagePath","attach","fileList","registerTabView","oldGetWebdavProperties","_getWebdavProperties","props","filesClient","addFileInfoParser","response","commentsUnread","propStat","properties","parseInt","oldCreateRow","_createRow","fileData","$tr","fileActions","registerAction","$file","unread","mime","order","permissions","PERMISSION_READ","FileActions","TYPE_INLINE","actionSpec","isDefault","unreadComments","$actionLink","actionHandler","fileName","showDetailsView","oldElementToFile","elementToFile","Plugins","register","ActivityTabViewPlugin","prepareModelForDisplay","view","$overlay","_onClickCollapsedComment","Comment","fileAppLoaded","App","renderCommentResult","$nofilterresults","updateLegacyMimetype","$pathDiv","path","$avatar","authorName","authorId","comment","prepend","link","dir","dirname","generateUrl","scrollto","handleCommentClick","changeDirectory","scrollTo","mime_type","setFileList","setRenderer","setHandler","Search","a","define","returnExportsGlobal","b","g","h","$inputor","domInputor","setPos","getIEPosition","getPosition","getOffset","getOldIEPos","selection","createRange","createTextRange","moveToElementText","setEndPoint","getPos","range","cloneRange","selectNodeContents","setEnd","endContainer","endOffset","detach","getOldIEOffset","duplicate","moveStart","height","getBoundingClientRect","bottom","f","getSelection","setStart","insertNode","selectNode","scrollTop","scrollLeft","rangeCount","getRangeAt","getIEPos","parentElement","moveToBookmark","getBookmark","collapse","compareEndPoints","selectionStart","move","select","setSelectionRange","getIEOffset","boundingLeft","boundingTop","boundingHeight","val","slice","rect","css_attr","mirrorCss","zIndex","$mirror","contentEditable","pos","iframe","contentWindow","contentDocument","fn","caret","isPlainObject","EditableCaret","InputCaret","Utils","apis","ESC","TAB","ENTER","CTRL","A","P","N","LEFT","UP","RIGHT","DOWN","BACKSPACE","SPACE","beforeSave","arrayToDefaultHash","matcher","decodeURI","exec","String","atwho_order","sort","tplEval","beforeInsert","beforeReposition","afterMatchFailed","currentFlag","controllers","aliasMaps","setupRootElement","listen","createContainer","ownerDocument","defaultView","parentWindow","frameElement","debug","iframeAsRoot","controller","setContextFor","reg","alias","init","hide","isComposing","setTimeout","dispatch","onKeyup","onKeydown","expectedQueryCBId","getOpt","shutdown","off","lookUp","ctrlKey","visible","prev","next","highlighted","choose","app","setting","u","Math","random","substr","reload","callDefault","insertContentFor","renderView","isArray","catchQuery","_delayLookUp","_lookUp","now","previousCallTime","_stopDelayedCall","delayedCallTimeout","_generateQueryCBId","constructor","proxy","__super__","headPos","endPos","insert","change","_getRange","_setRange","setEndAfter","setStartAfter","setEndBefore","setStartBefore","_clearRange","ctrl_a_pressed","removeAllRanges","addRange","_movingEvent","which","_unwrap","unwrap","nodeValue","collapsed","startContainer","contents","last","nodeType","ELEMENT_NODE","startOffset","cloneContents","TEXT_NODE","previousSibling","siblings","surroundContents","el","first","getClientRects","storage","saved","load","_load","dataType","done","$elUl","children","timeoutID","bindEvent","charCodeAt","clientX","clientY","expr","filters","stopShowing","reposition","offsetTop","offsetHeight","animate","isNaN","isSelecting","setIframe","run","Array","headerTpl","functionOverrides","suffix","hideWithoutSuffix","startWithSpace","acceptSpaceBar","highlightFirst","maxLen","minLen","displayTimeout","spaceSelectsMatch","tabSelectsMatch","editableAtwhoQueryAttrs","scrollDuration","suspendOnComposing","lookUpOnClick","locals","add","default"],"mappings":"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","file":"comments.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","module.exports = jQuery;","\"use strict\";\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = cssWithMappingToString(item, useSourceMap);\n\n      if (item[2]) {\n        return \"@media \".concat(item[2], \"{\").concat(content, \"}\");\n      }\n\n      return content;\n    }).join('');\n  }; // import a list of modules into the list\n  // eslint-disable-next-line func-names\n\n\n  list.i = function (modules, mediaQuery) {\n    if (typeof modules === 'string') {\n      // eslint-disable-next-line no-param-reassign\n      modules = [[null, modules, '']];\n    }\n\n    var alreadyImportedModules = {};\n\n    for (var i = 0; i < this.length; i++) {\n      // eslint-disable-next-line prefer-destructuring\n      var id = this[i][0];\n\n      if (id != null) {\n        alreadyImportedModules[id] = true;\n      }\n    }\n\n    for (var _i = 0; _i < modules.length; _i++) {\n      var item = modules[_i]; // skip already imported module\n      // this implementation is not 100% perfect for weird media query combinations\n      // when a module is imported multiple times with different media queries.\n      // I hope this will never occur (Hey this way we have smaller bundles)\n\n      if (item[0] == null || !alreadyImportedModules[item[0]]) {\n        if (mediaQuery && !item[2]) {\n          item[2] = mediaQuery;\n        } else if (mediaQuery) {\n          item[2] = \"(\".concat(item[2], \") and (\").concat(mediaQuery, \")\");\n        }\n\n        list.push(item);\n      }\n    }\n  };\n\n  return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n  var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n  var cssMapping = item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (useSourceMap && typeof btoa === 'function') {\n    var sourceMapping = toComment(cssMapping);\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return \"/*# sourceURL=\".concat(cssMapping.sourceRoot).concat(source, \" */\");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n  }\n\n  return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n  // eslint-disable-next-line no-undef\n  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n  var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n  return \"/*# \".concat(data, \" */\");\n}","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n  var styles = []\n  var newStyles = {}\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i]\n    var id = item[0]\n    var css = item[1]\n    var media = item[2]\n    var sourceMap = item[3]\n    var part = {\n      id: parentId + ':' + i,\n      css: css,\n      media: media,\n      sourceMap: sourceMap\n    }\n    if (!newStyles[id]) {\n      styles.push(newStyles[id] = { id: id, parts: [part] })\n    } else {\n      newStyles[id].parts.push(part)\n    }\n  }\n  return styles\n}\n","/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n  Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n  if (!hasDocument) {\n    throw new Error(\n    'vue-style-loader cannot be used in a non-browser environment. ' +\n    \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n  ) }\n}\n\n/*\ntype StyleObject = {\n  id: number;\n  parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n  css: string;\n  media: string;\n  sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n  [id: number]: {\n    id: number,\n    refs: number,\n    parts: Array<(obj?: StyleObjectPart) => void>\n  }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n  isProduction = _isProduction\n\n  options = _options || {}\n\n  var styles = listToStyles(parentId, list)\n  addStylesToDom(styles)\n\n  return function update (newList) {\n    var mayRemove = []\n    for (var i = 0; i < styles.length; i++) {\n      var item = styles[i]\n      var domStyle = stylesInDom[item.id]\n      domStyle.refs--\n      mayRemove.push(domStyle)\n    }\n    if (newList) {\n      styles = listToStyles(parentId, newList)\n      addStylesToDom(styles)\n    } else {\n      styles = []\n    }\n    for (var i = 0; i < mayRemove.length; i++) {\n      var domStyle = mayRemove[i]\n      if (domStyle.refs === 0) {\n        for (var j = 0; j < domStyle.parts.length; j++) {\n          domStyle.parts[j]()\n        }\n        delete stylesInDom[domStyle.id]\n      }\n    }\n  }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n  for (var i = 0; i < styles.length; i++) {\n    var item = styles[i]\n    var domStyle = stylesInDom[item.id]\n    if (domStyle) {\n      domStyle.refs++\n      for (var j = 0; j < domStyle.parts.length; j++) {\n        domStyle.parts[j](item.parts[j])\n      }\n      for (; j < item.parts.length; j++) {\n        domStyle.parts.push(addStyle(item.parts[j]))\n      }\n      if (domStyle.parts.length > item.parts.length) {\n        domStyle.parts.length = item.parts.length\n      }\n    } else {\n      var parts = []\n      for (var j = 0; j < item.parts.length; j++) {\n        parts.push(addStyle(item.parts[j]))\n      }\n      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n    }\n  }\n}\n\nfunction createStyleElement () {\n  var styleElement = document.createElement('style')\n  styleElement.type = 'text/css'\n  head.appendChild(styleElement)\n  return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n  var update, remove\n  var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n  if (styleElement) {\n    if (isProduction) {\n      // has SSR styles and in production mode.\n      // simply do nothing.\n      return noop\n    } else {\n      // has SSR styles but in dev mode.\n      // for some reason Chrome can't handle source map in server-rendered\n      // style tags - source maps in <style> only works if the style tag is\n      // created and inserted dynamically. So we remove the server rendered\n      // styles and inject new ones.\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  if (isOldIE) {\n    // use singleton mode for IE9.\n    var styleIndex = singletonCounter++\n    styleElement = singletonElement || (singletonElement = createStyleElement())\n    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n  } else {\n    // use multi-style-tag mode in all other cases\n    styleElement = createStyleElement()\n    update = applyToTag.bind(null, styleElement)\n    remove = function () {\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  update(obj)\n\n  return function updateStyle (newObj /* StyleObjectPart */) {\n    if (newObj) {\n      if (newObj.css === obj.css &&\n          newObj.media === obj.media &&\n          newObj.sourceMap === obj.sourceMap) {\n        return\n      }\n      update(obj = newObj)\n    } else {\n      remove()\n    }\n  }\n}\n\nvar replaceText = (function () {\n  var textStore = []\n\n  return function (index, replacement) {\n    textStore[index] = replacement\n    return textStore.filter(Boolean).join('\\n')\n  }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n  var css = remove ? '' : obj.css\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = replaceText(index, css)\n  } else {\n    var cssNode = document.createTextNode(css)\n    var childNodes = styleElement.childNodes\n    if (childNodes[index]) styleElement.removeChild(childNodes[index])\n    if (childNodes.length) {\n      styleElement.insertBefore(cssNode, childNodes[index])\n    } else {\n      styleElement.appendChild(cssNode)\n    }\n  }\n}\n\nfunction applyToTag (styleElement, obj) {\n  var css = obj.css\n  var media = obj.media\n  var sourceMap = obj.sourceMap\n\n  if (media) {\n    styleElement.setAttribute('media', media)\n  }\n  if (options.ssrId) {\n    styleElement.setAttribute(ssrIdKey, obj.id)\n  }\n\n  if (sourceMap) {\n    // https://developer.chrome.com/devtools/docs/javascript-debugging\n    // this makes source maps inside style tags work properly in Chrome\n    css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n    // http://stackoverflow.com/a/26603875\n    css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n  }\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild)\n    }\n    styleElement.appendChild(document.createTextNode(css))\n  }\n}\n","import './app'\nimport './templates'\nimport './commentmodel'\nimport './commentcollection'\nimport './commentsummarymodel'\nimport './commentstabview'\nimport './commentsmodifymenu'\nimport './filesplugin'\nimport './activitytabviewplugin'\nimport './search'\n\nimport './vendor/Caret.js/dist/jquery.caret.min'\nimport './vendor/At.js/dist/js/jquery.atwho.min'\n\nimport './style/autocomplete.scss'\nimport './style/comments.scss'\n\nwindow.OCA.Comments = OCA.Comments\n","/*\n * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com>\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n(function() {\n\tif (!OCA.Comments) {\n\t\t/**\n\t\t * @namespace\n\t\t */\n\t\tOCA.Comments = {}\n\t}\n\n})()\n","(function() {\n  var template = Handlebars.template, templates = OCA.Comments.Templates = OCA.Comments.Templates || {};\ntemplates['comment'] = template({\"1\":function(container,depth0,helpers,partials,data) {\n    return \" unread\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    return \" collapsed\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    return \" currentUser\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var helper;\n\n  return \"data-username=\\\"\"\n    + container.escapeExpression(((helper = (helper = helpers.actorId || (depth0 != null ? depth0.actorId : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"actorId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n    return \"\t\t\t<a href=\\\"#\\\" class=\\\"action more icon icon-more has-tooltip\\\"></a>\\n\t\t\t<div class=\\\"deleteLoading icon-loading-small hidden\\\"></div>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n    return \"\t\t<div class=\\\"message-overlay\\\"></div>\\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n  return \"<li class=\\\"comment\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isUnread : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isLong : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\" data-id=\\\"\"\n    + alias4(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\t<div class=\\\"authorRow\\\">\\n\t\t<div class=\\\"avatar\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isUserAuthor : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.actorId : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"> </div>\\n\t\t<div class=\\\"author\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isUserAuthor : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.actorDisplayName || (depth0 != null ? depth0.actorDisplayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"actorDisplayName\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</div>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isUserAuthor : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t<div class=\\\"date has-tooltip live-relative-timestamp\\\" data-timestamp=\\\"\"\n    + alias4(((helper = (helper = helpers.timestamp || (depth0 != null ? depth0.timestamp : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"timestamp\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" title=\\\"\"\n    + alias4(((helper = (helper = helpers.altDate || (depth0 != null ? depth0.altDate : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"altDate\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.date || (depth0 != null ? depth0.date : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"date\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</div>\\n\t</div>\\n\t<div class=\\\"message\\\">\"\n    + ((stack1 = ((helper = (helper = helpers.formattedMessage || (depth0 != null ? depth0.formattedMessage : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"formattedMessage\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n    + \"</div>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isLong : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"</li>\\n\";\n},\"useData\":true});\ntemplates['commentsmodifymenu'] = template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n  return \"\t\t<li>\\n\t\t\t<a href=\\\"#\\\" class=\\\"menuitem action \"\n    + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n    + \" permanent\\\" data-action=\\\"\"\n    + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.iconClass : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(4, data, 0),\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t\t\t<span>\"\n    + alias4(((helper = (helper = helpers.displayName || (depth0 != null ? depth0.displayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"displayName\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\t\t\t</a>\\n\t\t</li>\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var helper;\n\n  return \"\t\t\t\t\t<span class=\\\"icon \"\n    + container.escapeExpression(((helper = (helper = helpers.iconClass || (depth0 != null ? depth0.iconClass : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"iconClass\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></span>\\n\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n    return \"\t\t\t\t\t<span class=\\\"no-icon\\\"></span>\\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return \"<ul>\\n\"\n    + ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.items : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"</ul>\\n\";\n},\"useData\":true});\ntemplates['edit_comment'] = template({\"1\":function(container,depth0,helpers,partials,data) {\n    var helper;\n\n  return \"\t\t\t<div class=\\\"action-container\\\">\\n\t\t\t\t<a href=\\\"#\\\" class=\\\"action cancel icon icon-close has-tooltip\\\" title=\\\"\"\n    + container.escapeExpression(((helper = (helper = helpers.cancelText || (depth0 != null ? depth0.cancelText : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"cancelText\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></a>\\n\t\t\t</div>\\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n  return \"<\"\n    + alias4(((helper = (helper = helpers.tag || (depth0 != null ? depth0.tag : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"tag\",\"hash\":{},\"data\":data}) : helper)))\n    + \" class=\\\"newCommentRow comment\\\" data-id=\\\"\"\n    + alias4(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\t<div class=\\\"authorRow\\\">\\n\t\t<div class=\\\"avatar currentUser\\\" data-username=\\\"\"\n    + alias4(((helper = (helper = helpers.actorId || (depth0 != null ? depth0.actorId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"actorId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></div>\\n\t\t<div class=\\\"author currentUser\\\">\"\n    + alias4(((helper = (helper = helpers.actorDisplayName || (depth0 != null ? depth0.actorDisplayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"actorDisplayName\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</div>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isEditMode : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t</div>\\n\t<form class=\\\"newCommentForm\\\">\\n\t\t<div contentEditable=\\\"true\\\" class=\\\"message\\\" data-placeholder=\\\"\"\n    + alias4(((helper = (helper = helpers.newMessagePlaceholder || (depth0 != null ? depth0.newMessagePlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"newMessagePlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.message || (depth0 != null ? depth0.message : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"message\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</div>\\n\t\t<input class=\\\"submit icon-confirm has-tooltip\\\" type=\\\"submit\\\" value=\\\"\\\" title=\\\"\"\n    + alias4(((helper = (helper = helpers.submitText || (depth0 != null ? depth0.submitText : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"submitText\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"/>\\n\t\t<div class=\\\"submitLoading icon-loading-small hidden\\\"></div>\\n\t</form>\\n</\"\n    + alias4(((helper = (helper = helpers.tag || (depth0 != null ? depth0.tag : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"tag\",\"hash\":{},\"data\":data}) : helper)))\n    + \">\\n\";\n},\"useData\":true});\ntemplates['filesplugin'] = template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n  return \"<a class=\\\"action action-comment permanent\\\" title=\\\"\"\n    + alias4(((helper = (helper = helpers.countMessage || (depth0 != null ? depth0.countMessage : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"countMessage\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" href=\\\"#\\\">\\n\t<img class=\\\"svg\\\" src=\\\"\"\n    + alias4(((helper = (helper = helpers.iconUrl || (depth0 != null ? depth0.iconUrl : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"iconUrl\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"/>\\n</a>\\n\";\n},\"useData\":true});\ntemplates['view'] = template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n  return \"<ul class=\\\"comments\\\">\\n</ul>\\n<div class=\\\"emptycontent hidden\\\"><div class=\\\"icon-comment\\\"></div>\\n\t<p>\"\n    + alias4(((helper = (helper = helpers.emptyResultLabel || (depth0 != null ? depth0.emptyResultLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"emptyResultLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</p></div>\\n<input type=\\\"button\\\" class=\\\"showMore hidden\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.moreLabel || (depth0 != null ? depth0.moreLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"moreLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" name=\\\"show-more\\\" id=\\\"show-more\\\" />\\n<div class=\\\"loading hidden\\\" style=\\\"height: 50px\\\"></div>\\n\";\n},\"useData\":true});\n})();","/*\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n(function(OC, OCA) {\n\n\t_.extend(OC.Files.Client, {\n\t\tPROPERTY_FILEID:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}id',\n\t\tPROPERTY_MESSAGE: '{' + OC.Files.Client.NS_OWNCLOUD + '}message',\n\t\tPROPERTY_ACTORTYPE:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}actorType',\n\t\tPROPERTY_ACTORID:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}actorId',\n\t\tPROPERTY_ISUNREAD:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}isUnread',\n\t\tPROPERTY_OBJECTID:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}objectId',\n\t\tPROPERTY_OBJECTTYPE:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}objectType',\n\t\tPROPERTY_ACTORDISPLAYNAME:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}actorDisplayName',\n\t\tPROPERTY_CREATIONDATETIME:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}creationDateTime',\n\t\tPROPERTY_MENTIONS: '{' + OC.Files.Client.NS_OWNCLOUD + '}mentions'\n\t})\n\n\t/**\n\t * @class OCA.Comments.CommentModel\n\t * @classdesc\n\t *\n\t * Comment\n\t *\n\t */\n\tvar CommentModel = OC.Backbone.Model.extend(\n\t\t/** @lends OCA.Comments.CommentModel.prototype */ {\n\t\t\tsync: OC.Backbone.davSync,\n\n\t\t\tdefaults: {\n\t\t\t\tactorType: 'users',\n\t\t\t\tobjectType: 'files'\n\t\t\t},\n\n\t\t\tdavProperties: {\n\t\t\t\t'id':\tOC.Files.Client.PROPERTY_FILEID,\n\t\t\t\t'message':\tOC.Files.Client.PROPERTY_MESSAGE,\n\t\t\t\t'actorType':\tOC.Files.Client.PROPERTY_ACTORTYPE,\n\t\t\t\t'actorId':\tOC.Files.Client.PROPERTY_ACTORID,\n\t\t\t\t'actorDisplayName':\tOC.Files.Client.PROPERTY_ACTORDISPLAYNAME,\n\t\t\t\t'creationDateTime':\tOC.Files.Client.PROPERTY_CREATIONDATETIME,\n\t\t\t\t'objectType':\tOC.Files.Client.PROPERTY_OBJECTTYPE,\n\t\t\t\t'objectId':\tOC.Files.Client.PROPERTY_OBJECTID,\n\t\t\t\t'isUnread':\tOC.Files.Client.PROPERTY_ISUNREAD,\n\t\t\t\t'mentions': OC.Files.Client.PROPERTY_MENTIONS\n\t\t\t},\n\n\t\t\tparse: function(data) {\n\t\t\t\treturn {\n\t\t\t\t\tid: data.id,\n\t\t\t\t\tmessage: data.message,\n\t\t\t\t\tactorType: data.actorType,\n\t\t\t\t\tactorId: data.actorId,\n\t\t\t\t\tactorDisplayName: data.actorDisplayName,\n\t\t\t\t\tcreationDateTime: data.creationDateTime,\n\t\t\t\t\tobjectType: data.objectType,\n\t\t\t\t\tobjectId: data.objectId,\n\t\t\t\t\tisUnread: (data.isUnread === 'true'),\n\t\t\t\t\tmentions: this._parseMentions(data.mentions)\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_parseMentions: function(mentions) {\n\t\t\t\tif (_.isUndefined(mentions)) {\n\t\t\t\t\treturn {}\n\t\t\t\t}\n\t\t\t\tvar result = {}\n\t\t\t\tfor (var i in mentions) {\n\t\t\t\t\tvar mention = mentions[i]\n\t\t\t\t\tif (_.isUndefined(mention.localName) || mention.localName !== 'mention') {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tresult[i] = {}\n\t\t\t\t\tfor (var child = mention.firstChild; child; child = child.nextSibling) {\n\t\t\t\t\t\tif (_.isUndefined(child.localName) || !child.localName.startsWith('mention')) {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult[i][child.localName] = child.textContent\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result\n\t\t\t}\n\t\t})\n\n\tOCA.Comments.CommentModel = CommentModel\n})(OC, OCA)\n","/* eslint-disable */\n/*\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n(function(OC, OCA) {\n\n\t/**\n\t * @class OCA.Comments.CommentCollection\n\t * @classdesc\n\t *\n\t * Collection of comments assigned to a file\n\t *\n\t */\n\tvar CommentCollection = OC.Backbone.Collection.extend(\n\t\t/** @lends OCA.Comments.CommentCollection.prototype */ {\n\n\t\t\tsync: OC.Backbone.davSync,\n\n\t\t\tmodel: OCA.Comments.CommentModel,\n\n\t\t\t/**\n\t\t * Object type\n\t\t *\n\t\t * @type string\n\t\t */\n\t\t\t_objectType: 'files',\n\n\t\t\t/**\n\t\t * Object id\n\t\t *\n\t\t * @type string\n\t\t */\n\t\t\t_objectId: null,\n\n\t\t\t/**\n\t\t * True if there are no more page results left to fetch\n\t\t *\n\t\t * @type bool\n\t\t */\n\t\t\t_endReached: false,\n\n\t\t\t/**\n\t\t * Number of comments to fetch per page\n\t\t *\n\t\t * @type int\n\t\t */\n\t\t\t_limit: 20,\n\n\t\t\t/**\n\t\t * Initializes the collection\n\t\t *\n\t\t * @param {string} [options.objectType] object type\n\t\t * @param {string} [options.objectId] object id\n\t\t */\n\t\t\tinitialize: function(models, options) {\n\t\t\t\toptions = options || {}\n\t\t\t\tif (options.objectType) {\n\t\t\t\t\tthis._objectType = options.objectType\n\t\t\t\t}\n\t\t\t\tif (options.objectId) {\n\t\t\t\t\tthis._objectId = options.objectId\n\t\t\t\t}\n\t\t\t},\n\n\t\t\turl: function() {\n\t\t\t\treturn OC.linkToRemote('dav') + '/comments/'\n\t\t\t\t+ encodeURIComponent(this._objectType) + '/'\n\t\t\t\t+ encodeURIComponent(this._objectId) + '/'\n\t\t\t},\n\n\t\t\tsetObjectId: function(objectId) {\n\t\t\t\tthis._objectId = objectId\n\t\t\t},\n\n\t\t\thasMoreResults: function() {\n\t\t\t\treturn !this._endReached\n\t\t\t},\n\n\t\t\treset: function() {\n\t\t\t\tthis._endReached = false\n\t\t\t\tthis._summaryModel = null\n\t\t\t\treturn OC.Backbone.Collection.prototype.reset.apply(this, arguments)\n\t\t\t},\n\n\t\t\t/**\n\t\t * Fetch the next set of results\n\t\t */\n\t\t\tfetchNext: function(options) {\n\t\t\t\tvar self = this\n\t\t\t\tif (!this.hasMoreResults()) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\n\t\t\t\tvar body = '<?xml version=\"1.0\" encoding=\"utf-8\" ?>\\n'\n\t\t\t\t+ '<oc:filter-comments xmlns:D=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\">\\n'\n\t\t\t\t// load one more so we know there is more\n\t\t\t\t+ '    <oc:limit>' + (this._limit + 1) + '</oc:limit>\\n'\n\t\t\t\t+ '    <oc:offset>' + this.length + '</oc:offset>\\n'\n\t\t\t\t+ '</oc:filter-comments>\\n'\n\n\t\t\t\toptions = options || {}\n\t\t\t\tvar success = options.success\n\t\t\t\toptions = _.extend({\n\t\t\t\t\tremove: false,\n\t\t\t\t\tparse: true,\n\t\t\t\t\tdata: body,\n\t\t\t\t\tdavProperties: CommentCollection.prototype.model.prototype.davProperties,\n\t\t\t\t\tsuccess: function(resp) {\n\t\t\t\t\t\tif (resp.length <= self._limit) {\n\t\t\t\t\t\t// no new entries, end reached\n\t\t\t\t\t\t\tself._endReached = true\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t// remove last entry, for next page load\n\t\t\t\t\t\t\tresp = _.initial(resp)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!self.set(resp, options)) {\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (success) {\n\t\t\t\t\t\t\tsuccess.apply(null, arguments)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.trigger('sync', 'REPORT', self, options)\n\t\t\t\t\t}\n\t\t\t\t}, options)\n\n\t\t\t\treturn this.sync('REPORT', this, options)\n\t\t\t},\n\n\t\t\t/**\n\t\t * Returns the matching summary model\n\t\t *\n\t\t * @returns {OCA.Comments.CommentSummaryModel} summary model\n\t\t */\n\t\t\tgetSummaryModel: function() {\n\t\t\t\tif (!this._summaryModel) {\n\t\t\t\t\tthis._summaryModel = new OCA.Comments.CommentSummaryModel({\n\t\t\t\t\t\tid: this._objectId,\n\t\t\t\t\t\tobjectType: this._objectType\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn this._summaryModel\n\t\t\t},\n\n\t\t\t/**\n\t\t * Updates the read marker for this comment thread\n\t\t *\n\t\t * @param {Date} [date] optional date, defaults to now\n\t\t * @param {Object} [options] backbone options\n\t\t */\n\t\t\tupdateReadMarker: function(date, options) {\n\t\t\t\toptions = options || {}\n\n\t\t\t\treturn this.getSummaryModel().save({\n\t\t\t\t\treadMarker: (date || new Date()).toUTCString()\n\t\t\t\t}, options)\n\t\t\t}\n\t\t})\n\n\tOCA.Comments.CommentCollection = CommentCollection\n})(OC, OCA)\n","/*\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n(function(OC, OCA) {\n\n\t_.extend(OC.Files.Client, {\n\t\tPROPERTY_READMARKER:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}readMarker'\n\t})\n\n\t/**\n\t * @class OCA.Comments.CommentSummaryModel\n\t * @classdesc\n\t *\n\t * Model containing summary information related to comments\n\t * like the read marker.\n\t *\n\t */\n\tvar CommentSummaryModel = OC.Backbone.Model.extend(\n\t\t/** @lends OCA.Comments.CommentSummaryModel.prototype */ {\n\t\t\tsync: OC.Backbone.davSync,\n\n\t\t\t/**\n\t\t * Object type\n\t\t *\n\t\t * @type string\n\t\t */\n\t\t\t_objectType: 'files',\n\n\t\t\t/**\n\t\t * Object id\n\t\t *\n\t\t * @type string\n\t\t */\n\t\t\t_objectId: null,\n\n\t\t\tdavProperties: {\n\t\t\t\t'readMarker': OC.Files.Client.PROPERTY_READMARKER\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Initializes the summary model\n\t\t\t *\n\t\t\t * @param {any} [attrs] ignored\n\t\t\t * @param {Object} [options] destructuring object\n\t\t\t * @param {string} [options.objectType] object type\n\t\t\t * @param {string} [options.objectId] object id\n\t\t\t */\n\t\t\tinitialize: function(attrs, options) {\n\t\t\t\toptions = options || {}\n\t\t\t\tif (options.objectType) {\n\t\t\t\t\tthis._objectType = options.objectType\n\t\t\t\t}\n\t\t\t},\n\n\t\t\turl: function() {\n\t\t\t\treturn OC.linkToRemote('dav') + '/comments/'\n\t\t\t\t+ encodeURIComponent(this._objectType) + '/'\n\t\t\t\t+ encodeURIComponent(this.id) + '/'\n\t\t\t}\n\t\t})\n\n\tOCA.Comments.CommentSummaryModel = CommentSummaryModel\n})(OC, OCA)\n","/* eslint-disable */\n/*\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n/* global Handlebars, escapeHTML */\n\n(function(OC, OCA) {\n\n\t/**\n\t * @memberof OCA.Comments\n\t */\n\tvar CommentsTabView = OCA.Files.DetailTabView.extend(\n\t\t/** @lends OCA.Comments.CommentsTabView.prototype */ {\n\t\t\tid: 'commentsTabView',\n\t\t\tclassName: 'tab commentsTabView',\n\t\t\t_autoCompleteData: undefined,\n\t\t\t_commentsModifyMenu: undefined,\n\n\t\t\tevents: {\n\t\t\t\t'submit .newCommentForm': '_onSubmitComment',\n\t\t\t\t'click .showMore': '_onClickShowMore',\n\t\t\t\t'click .cancel': '_onClickCloseComment',\n\t\t\t\t'click .comment': '_onClickComment',\n\t\t\t\t'keyup div.message': '_onTextChange',\n\t\t\t\t'change div.message': '_onTextChange',\n\t\t\t\t'input div.message': '_onTextChange',\n\t\t\t\t'paste div.message': '_onPaste'\n\t\t\t},\n\n\t\t\t_commentMaxLength: 1000,\n\n\t\t\tinitialize: function() {\n\t\t\t\tOCA.Files.DetailTabView.prototype.initialize.apply(this, arguments)\n\t\t\t\tthis.collection = new OCA.Comments.CommentCollection()\n\t\t\t\tthis.collection.on('request', this._onRequest, this)\n\t\t\t\tthis.collection.on('sync', this._onEndRequest, this)\n\t\t\t\tthis.collection.on('add', this._onAddModel, this)\n\t\t\t\tthis.collection.on('change:message', this._onChangeModel, this)\n\n\t\t\t\tthis._commentMaxThreshold = this._commentMaxLength * 0.9\n\n\t\t\t\t// TODO: error handling\n\t\t\t\t_.bindAll(this, '_onTypeComment', '_initAutoComplete', '_onAutoComplete')\n\t\t\t},\n\n\t\t\ttemplate: function(params) {\n\t\t\t\tvar currentUser = OC.getCurrentUser()\n\t\t\t\treturn OCA.Comments.Templates['view'](_.extend({\n\t\t\t\t\tactorId: currentUser.uid,\n\t\t\t\t\tactorDisplayName: currentUser.displayName\n\t\t\t\t}, params))\n\t\t\t},\n\n\t\t\teditCommentTemplate: function(params) {\n\t\t\t\tvar currentUser = OC.getCurrentUser()\n\t\t\t\treturn OCA.Comments.Templates['edit_comment'](_.extend({\n\t\t\t\t\tactorId: currentUser.uid,\n\t\t\t\t\tactorDisplayName: currentUser.displayName,\n\t\t\t\t\tnewMessagePlaceholder: t('comments', 'New comment …'),\n\t\t\t\t\tsubmitText: t('comments', 'Post'),\n\t\t\t\t\tcancelText: t('comments', 'Cancel'),\n\t\t\t\t\ttag: 'li'\n\t\t\t\t}, params))\n\t\t\t},\n\n\t\t\tcommentTemplate: function(params) {\n\t\t\t\tparams = _.extend({\n\t\t\t\t\teditTooltip: t('comments', 'Edit comment'),\n\t\t\t\t\tisUserAuthor: OC.getCurrentUser().uid === params.actorId,\n\t\t\t\t\tisLong: this._isLong(params.message)\n\t\t\t\t}, params)\n\n\t\t\t\tif (params.actorType === 'deleted_users') {\n\t\t\t\t// makes the avatar a X\n\t\t\t\t\tparams.actorId = null\n\t\t\t\t\tparams.actorDisplayName = t('comments', '[Deleted user]')\n\t\t\t\t}\n\n\t\t\t\treturn OCA.Comments.Templates['comment'](params)\n\t\t\t},\n\n\t\t\tgetLabel: function() {\n\t\t\t\treturn t('comments', 'Comments')\n\t\t\t},\n\n\t\t\tgetIcon: function() {\n\t\t\t\treturn 'icon-comment'\n\t\t\t},\n\n\t\t\tsetFileInfo: function(fileInfo) {\n\t\t\t\tif (fileInfo) {\n\t\t\t\t\tthis.model = fileInfo\n\n\t\t\t\t\tthis.render()\n\t\t\t\t\tthis._initAutoComplete($('#commentsTabView').find('.newCommentForm .message'))\n\t\t\t\t\tthis.collection.setObjectId(this.model.id)\n\t\t\t\t\t// reset to first page\n\t\t\t\t\tthis.collection.reset([], { silent: true })\n\t\t\t\t\tthis.nextPage()\n\t\t\t\t} else {\n\t\t\t\t\tthis.model = null\n\t\t\t\t\tthis.render()\n\t\t\t\t\tthis.collection.reset()\n\t\t\t\t}\n\t\t\t},\n\n\t\t\trender: function() {\n\t\t\t\tthis.$el.html(this.template({\n\t\t\t\t\temptyResultLabel: t('comments', 'No comments yet, start the conversation!'),\n\t\t\t\t\tmoreLabel: t('comments', 'More comments …')\n\t\t\t\t}))\n\t\t\t\tthis.$el.find('.comments').before(this.editCommentTemplate({ tag: 'div' }))\n\t\t\t\tthis.$el.find('.has-tooltip').tooltip()\n\t\t\t\tthis.$container = this.$el.find('ul.comments')\n\t\t\t\tthis.$el.find('.avatar').avatar(OC.getCurrentUser().uid, 32)\n\t\t\t\tthis.delegateEvents()\n\t\t\t\tthis.$el.find('.message').on('keydown input change', this._onTypeComment)\n\n\t\t\t\tautosize(this.$el.find('.newCommentRow .message'))\n\t\t\t\tthis.$el.find('.newCommentForm .message').focus()\n\t\t\t},\n\n\t\t\t_initAutoComplete: function($target) {\n\t\t\t\tvar s = this\n\t\t\t\tvar limit = 10\n\t\t\t\tif (!_.isUndefined(OC.appConfig.comments)) {\n\t\t\t\t\tlimit = OC.appConfig.comments.maxAutoCompleteResults\n\t\t\t\t}\n\t\t\t\t$target.atwho({\n\t\t\t\t\tat: '@',\n\t\t\t\t\tlimit: limit,\n\t\t\t\t\tcallbacks: {\n\t\t\t\t\t\tremoteFilter: s._onAutoComplete,\n\t\t\t\t\t\thighlighter: function(li) {\n\t\t\t\t\t\t// misuse the highlighter callback to instead of\n\t\t\t\t\t\t// highlighting loads the avatars.\n\t\t\t\t\t\t\tvar $li = $(li)\n\t\t\t\t\t\t\t$li.find('.avatar').avatar(undefined, 32)\n\t\t\t\t\t\t\treturn $li\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsorter: function(q, items) { return items }\n\t\t\t\t\t},\n\t\t\t\t\tdisplayTpl: function(item) {\n\t\t\t\t\t\treturn '<li>'\n\t\t\t\t\t\t+ '<span class=\"avatar-name-wrapper\">'\n\t\t\t\t\t\t\t+ '<span class=\"avatar\" '\n\t\t\t\t\t\t\t\t\t+ 'data-username=\"' + escapeHTML(item.id) + '\" ' // for avatars\n\t\t\t\t\t\t\t\t\t+ 'data-user=\"' + escapeHTML(item.id) + '\" ' // for contactsmenu\n\t\t\t\t\t\t\t\t\t+ 'data-user-display-name=\"' + escapeHTML(item.label) + '\">'\n\t\t\t\t\t\t\t+ '</span>'\n\t\t\t\t\t\t\t+ '<strong>' + escapeHTML(item.label) + '</strong>'\n\t\t\t\t\t\t+ '</span></li>'\n\t\t\t\t\t},\n\t\t\t\t\tinsertTpl: function(item) {\n\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t+ '<span class=\"avatar-name-wrapper\">'\n\t\t\t\t\t\t\t+ '<span class=\"avatar\" '\n\t\t\t\t\t\t\t\t\t+ 'data-username=\"' + escapeHTML(item.id) + '\" ' // for avatars\n\t\t\t\t\t\t\t\t\t+ 'data-user=\"' + escapeHTML(item.id) + '\" ' // for contactsmenu\n\t\t\t\t\t\t\t\t\t+ 'data-user-display-name=\"' + escapeHTML(item.label) + '\">'\n\t\t\t\t\t\t\t+ '</span>'\n\t\t\t\t\t\t\t+ '<strong>' + escapeHTML(item.label) + '</strong>'\n\t\t\t\t\t\t+ '</span>'\n\t\t\t\t\t},\n\t\t\t\t\tsearchKey: 'label'\n\t\t\t\t})\n\t\t\t\t$target.on('inserted.atwho', function(je, $el) {\n\t\t\t\t\tvar editionMode = true\n\t\t\t\t\ts._postRenderItem(\n\t\t\t\t\t// we need to pass the parent of the inserted element\n\t\t\t\t\t// passing the whole comments form would re-apply and request\n\t\t\t\t\t// avatars from the server\n\t\t\t\t\t\t$(je.target).find(\n\t\t\t\t\t\t\t'span[data-username=\"' + $el.find('[data-username]').data('username') + '\"]'\n\t\t\t\t\t\t).parent(),\n\t\t\t\t\t\teditionMode\n\t\t\t\t\t)\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t_onAutoComplete: function(query, callback) {\n\t\t\t\tvar s = this\n\t\t\t\tif (!_.isUndefined(this._autoCompleteRequestTimer)) {\n\t\t\t\t\tclearTimeout(this._autoCompleteRequestTimer)\n\t\t\t\t}\n\t\t\t\tthis._autoCompleteRequestTimer = _.delay(function() {\n\t\t\t\t\tif (!_.isUndefined(this._autoCompleteRequestCall)) {\n\t\t\t\t\t\tthis._autoCompleteRequestCall.abort()\n\t\t\t\t\t}\n\t\t\t\t\tthis._autoCompleteRequestCall = $.ajax({\n\t\t\t\t\t\turl: OC.linkToOCS('core', 2) + 'autocomplete/get',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tsearch: query,\n\t\t\t\t\t\t\titemType: 'files',\n\t\t\t\t\t\t\titemId: s.model.get('id'),\n\t\t\t\t\t\t\tsorter: 'commenters|share-recipients',\n\t\t\t\t\t\t\tlimit: OC.appConfig.comments.maxAutoCompleteResults\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbeforeSend: function(request) {\n\t\t\t\t\t\t\trequest.setRequestHeader('Accept', 'application/json')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsuccess: function(result) {\n\t\t\t\t\t\t\tcallback(result.ocs.data)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}, 400)\n\t\t\t},\n\n\t\t\t_formatItem: function(commentModel) {\n\t\t\t\tvar timestamp = new Date(commentModel.get('creationDateTime')).getTime()\n\t\t\t\tvar data = _.extend({\n\t\t\t\t\ttimestamp: timestamp,\n\t\t\t\t\tdate: OC.Util.relativeModifiedDate(timestamp),\n\t\t\t\t\taltDate: OC.Util.formatDate(timestamp),\n\t\t\t\t\tformattedMessage: this._formatMessage(commentModel.get('message'), commentModel.get('mentions'))\n\t\t\t\t}, commentModel.attributes)\n\t\t\t\treturn data\n\t\t\t},\n\n\t\t\t_toggleLoading: function(state) {\n\t\t\t\tthis._loading = state\n\t\t\t\tthis.$el.find('.loading').toggleClass('hidden', !state)\n\t\t\t},\n\n\t\t\t_onRequest: function(type) {\n\t\t\t\tif (type === 'REPORT') {\n\t\t\t\t\tthis._toggleLoading(true)\n\t\t\t\t\tthis.$el.find('.showMore').addClass('hidden')\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_onEndRequest: function(type) {\n\t\t\t\tvar fileInfoModel = this.model\n\t\t\t\tthis._toggleLoading(false)\n\t\t\t\tthis.$el.find('.emptycontent').toggleClass('hidden', !!this.collection.length)\n\t\t\t\tthis.$el.find('.showMore').toggleClass('hidden', !this.collection.hasMoreResults())\n\n\t\t\t\tif (type !== 'REPORT') {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// find first unread comment\n\t\t\t\tvar firstUnreadComment = this.collection.findWhere({ isUnread: true })\n\t\t\t\tif (firstUnreadComment) {\n\t\t\t\t// update read marker\n\t\t\t\t\tthis.collection.updateReadMarker(\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsuccess: function() {\n\t\t\t\t\t\t\t\tfileInfoModel.set('commentsUnread', 0)\n\t\t\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\tthis.$el.find('.newCommentForm .message').focus()\n\n\t\t\t},\n\n\t\t\t/**\n\t\t * takes care of post-rendering after a new comment was added to the\n\t\t * collection\n\t\t *\n\t\t * @param model\n\t\t * @param collection\n\t\t * @param options\n\t\t * @private\n\t\t */\n\t\t\t_onAddModel: function(model, collection, options) {\n\t\t\t// we need to render it immediately, to ensure that the right\n\t\t\t// order of comments is kept on opening comments tab\n\t\t\t\tvar $comment = $(this.commentTemplate(this._formatItem(model)))\n\t\t\t\tif (!_.isUndefined(options.at) && collection.length > 1) {\n\t\t\t\t\tthis.$container.find('li').eq(options.at).before($comment)\n\t\t\t\t} else {\n\t\t\t\t\tthis.$container.append($comment)\n\t\t\t\t}\n\t\t\t\tthis._postRenderItem($comment)\n\t\t\t\t$('#commentsTabView').find('.newCommentForm div.message').text('').prop('contenteditable', true)\n\n\t\t\t\t// we need to update the model, because it consists of client data\n\t\t\t\t// only, but the server might add meta data, e.g. about mentions\n\t\t\t\tvar oldMentions = model.get('mentions')\n\t\t\t\tvar self = this\n\t\t\t\tmodel.fetch({\n\t\t\t\t\tsuccess: function(model) {\n\t\t\t\t\t\tif (_.isEqual(oldMentions, model.get('mentions'))) {\n\t\t\t\t\t\t// don't attempt to render if unnecessary, avoids flickering\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar $updated = $(self.commentTemplate(self._formatItem(model)))\n\t\t\t\t\t\t$comment.html($updated.html())\n\t\t\t\t\t\tself._postRenderItem($comment)\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t},\n\n\t\t\t/**\n\t\t * takes care of post-rendering after a new comment was edited\n\t\t *\n\t\t * @param model\n\t\t * @private\n\t\t */\n\t\t\t_onChangeModel: function(model) {\n\t\t\t\tif (model.get('message').trim() === model.previous('message').trim()) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tvar $form = this.$container.find('.comment[data-id=\"' + model.id + '\"] form')\n\t\t\t\tvar $row = $form.closest('.comment')\n\t\t\t\tvar $target = $row.data('commentEl')\n\t\t\t\tif (_.isUndefined($target)) {\n\t\t\t\t// ignore noise – this is only set after editing a comment and hitting post\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tvar self = this\n\n\t\t\t\t// we need to update the model, because it consists of client data\n\t\t\t\t// only, but the server might add meta data, e.g. about mentions\n\t\t\t\tmodel.fetch({\n\t\t\t\t\tsuccess: function(model) {\n\t\t\t\t\t\t$target.removeClass('hidden')\n\t\t\t\t\t\t$row.remove()\n\n\t\t\t\t\t\tvar $message = $target.find('.message')\n\t\t\t\t\t\t$message\n\t\t\t\t\t\t\t.html(self._formatMessage(model.get('message'), model.get('mentions')))\n\t\t\t\t\t\t\t.find('.avatar')\n\t\t\t\t\t\t\t.each(function() { $(this).avatar() })\n\t\t\t\t\t\tself._postRenderItem($message)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t_postRenderItem: function($el, editionMode) {\n\t\t\t\t$el.find('.has-tooltip').tooltip()\n\t\t\t\tvar inlineAvatars = $el.find('.message .avatar')\n\t\t\t\tif ($($el.context).hasClass('message')) {\n\t\t\t\t\tinlineAvatars = $el.find('.avatar')\n\t\t\t\t}\n\t\t\t\tinlineAvatars.each(function() {\n\t\t\t\t\tvar $this = $(this)\n\t\t\t\t\t$this.avatar($this.attr('data-username'), 16)\n\t\t\t\t})\n\t\t\t\t$el.find('.authorRow .avatar').each(function() {\n\t\t\t\t\tvar $this = $(this)\n\t\t\t\t\t$this.avatar($this.attr('data-username'), 32)\n\t\t\t\t})\n\n\t\t\t\tvar username = $el.find('.avatar').data('username')\n\t\t\t\tif (username !== OC.getCurrentUser().uid) {\n\t\t\t\t\t$el.find('.authorRow .avatar, .authorRow .author').contactsMenu(\n\t\t\t\t\t\tusername, 0, $el.find('.authorRow'))\n\t\t\t\t}\n\n\t\t\t\tvar $message = $el.find('.message')\n\t\t\t\tif ($message.length === 0) {\n\t\t\t\t// it is the case when writing a comment and mentioning a person\n\t\t\t\t\t$message = $el\n\t\t\t\t}\n\n\t\t\t\tif (!editionMode) {\n\t\t\t\t\tvar self = this\n\t\t\t\t\t// add the dropdown menu to display the edit and delete option\n\t\t\t\t\tvar modifyCommentMenu = new OCA.Comments.CommentsModifyMenu()\n\t\t\t\t\t$el.find('.authorRow').append(modifyCommentMenu.$el)\n\t\t\t\t\t$el.find('.more').on('click', _.bind(modifyCommentMenu.show, modifyCommentMenu))\n\n\t\t\t\t\tself.listenTo(modifyCommentMenu, 'select:menu-item-clicked', function(ev, action) {\n\t\t\t\t\t\tif (action === 'edit') {\n\t\t\t\t\t\t\tself._onClickEditComment(ev)\n\t\t\t\t\t\t} else if (action === 'delete') {\n\t\t\t\t\t\t\tself._onClickDeleteComment(ev)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis._postRenderMessage($message, editionMode)\n\t\t\t},\n\n\t\t\t_postRenderMessage: function($el, editionMode) {\n\t\t\t\tif (editionMode) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t$el.find('.avatar-name-wrapper').each(function() {\n\t\t\t\t\tvar $this = $(this)\n\t\t\t\t\tvar $avatar = $this.find('.avatar')\n\n\t\t\t\t\tvar user = $avatar.data('user')\n\t\t\t\t\tif (user !== OC.getCurrentUser().uid) {\n\t\t\t\t\t\t$this.contactsMenu(user, 0, $this)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t/**\n\t\t * Convert a message to be displayed in HTML,\n\t\t * converts newlines to <br> tags.\n\t\t */\n\t\t\t_formatMessage: function(message, mentions, editMode) {\n\t\t\t\tmessage = escapeHTML(message).replace(/\\n/g, '<br/>')\n\n\t\t\t\tfor (var i in mentions) {\n\t\t\t\t\tif (!mentions.hasOwnProperty(i)) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tvar mention = '@' + mentions[i].mentionId\n\t\t\t\t\tif (mentions[i].mentionId.indexOf(' ') !== -1) {\n\t\t\t\t\t\tmention = _.escape('@\"' + mentions[i].mentionId + '\"')\n\t\t\t\t\t}\n\n\t\t\t\t\t// escape possible regex characters in the name\n\t\t\t\t\tmention = mention.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n\t\t\t\t\tvar regex = new RegExp('(^|\\\\s)(' + mention + ')\\\\b', 'g')\n\t\t\t\t\tif (mentions[i].mentionId.indexOf(' ') !== -1) {\n\t\t\t\t\t\tregex = new RegExp('(^|\\\\s)(' + mention + ')', 'g')\n\t\t\t\t\t}\n\n\t\t\t\t\tvar displayName = this._composeHTMLMention(mentions[i].mentionId, mentions[i].mentionDisplayName)\n\n\t\t\t\t\t// replace every mention either at the start of the input or after a whitespace\n\t\t\t\t\t// followed by a non-word character.\n\t\t\t\t\tmessage = message.replace(regex,\n\t\t\t\t\t\tfunction(match, p1) {\n\t\t\t\t\t\t// to  get number of whitespaces (0 vs 1) right\n\t\t\t\t\t\t\treturn p1 + displayName\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tif (editMode !== true) {\n\t\t\t\t\tmessage = OCP.Comments.plainToRich(message)\n\t\t\t\t}\n\t\t\t\treturn message\n\t\t\t},\n\n\t\t\t_composeHTMLMention: function(uid, displayName) {\n\t\t\t\tvar avatar = ''\n\t\t\t\t+ '<span class=\"avatar\" '\n\t\t\t\t\t\t+ 'data-username=\"' + _.escape(uid) + '\" '\n\t\t\t\t\t\t+ 'data-user=\"' + _.escape(uid) + '\" '\n\t\t\t\t\t\t+ 'data-user-display-name=\"' + _.escape(displayName) + '\">'\n\t\t\t\t+ '</span>'\n\n\t\t\t\tvar isCurrentUser = (uid === OC.getCurrentUser().uid)\n\n\t\t\t\treturn ''\n\t\t\t\t+ '<span class=\"atwho-inserted\" contenteditable=\"false\">'\n\t\t\t\t\t+ '<span class=\"avatar-name-wrapper' + (isCurrentUser ? ' currentUser' : '') + '\">'\n\t\t\t\t\t\t+ avatar\n\t\t\t\t\t\t+ '<strong>' + _.escape(displayName) + '</strong>'\n\t\t\t\t\t+ '</span>'\n\t\t\t\t+ '</span>'\n\t\t\t},\n\n\t\t\tnextPage: function() {\n\t\t\t\tif (this._loading || !this.collection.hasMoreResults()) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tthis.collection.fetchNext()\n\t\t\t},\n\n\t\t\t_onClickEditComment: function(ev) {\n\t\t\t\tev.preventDefault()\n\t\t\t\tvar $comment = $(ev.target).closest('.comment')\n\t\t\t\tvar commentId = $comment.data('id')\n\t\t\t\tvar commentToEdit = this.collection.get(commentId)\n\t\t\t\tvar $formRow = $(this.editCommentTemplate(_.extend({\n\t\t\t\t\tisEditMode: true,\n\t\t\t\t\tsubmitText: t('comments', 'Save')\n\t\t\t\t}, commentToEdit.attributes)))\n\n\t\t\t\t$comment.addClass('hidden').removeClass('collapsed')\n\t\t\t\t// spawn form\n\t\t\t\t$comment.after($formRow)\n\t\t\t\t$formRow.data('commentEl', $comment)\n\t\t\t\t$formRow.find('.message').on('keydown input change', this._onTypeComment)\n\n\t\t\t\t// copy avatar element from original to avoid flickering\n\t\t\t\t$formRow.find('.avatar:first').replaceWith($comment.find('.avatar:first').clone())\n\t\t\t\t$formRow.find('.has-tooltip').tooltip()\n\n\t\t\t\tvar $message = $formRow.find('.message')\n\t\t\t\t$message\n\t\t\t\t\t.html(this._formatMessage(commentToEdit.get('message'), commentToEdit.get('mentions'), true))\n\t\t\t\t\t.find('.avatar')\n\t\t\t\t\t.each(function() { $(this).avatar() })\n\t\t\t\tvar editionMode = true\n\t\t\t\tthis._postRenderItem($message, editionMode)\n\n\t\t\t\t// Enable autosize\n\t\t\t\tautosize($formRow.find('.message'))\n\n\t\t\t\t// enable autocomplete\n\t\t\t\tthis._initAutoComplete($formRow.find('.message'))\n\n\t\t\t\treturn false\n\t\t\t},\n\n\t\t\t_onTypeComment: function(ev) {\n\t\t\t\tvar $field = $(ev.target)\n\t\t\t\tvar len = $field.text().length\n\t\t\t\tvar $submitButton = $field.data('submitButtonEl')\n\t\t\t\tif (!$submitButton) {\n\t\t\t\t\t$submitButton = $field.closest('form').find('.submit')\n\t\t\t\t\t$field.data('submitButtonEl', $submitButton)\n\t\t\t\t}\n\t\t\t\t$field.tooltip('hide')\n\t\t\t\tif (len > this._commentMaxThreshold) {\n\t\t\t\t\t$field.attr('data-original-title', t('comments', 'Allowed characters {count} of {max}', { count: len, max: this._commentMaxLength }))\n\t\t\t\t\t$field.tooltip({ trigger: 'manual' })\n\t\t\t\t\t$field.tooltip('show')\n\t\t\t\t\t$field.addClass('error')\n\t\t\t\t}\n\n\t\t\t\tvar limitExceeded = (len > this._commentMaxLength)\n\t\t\t\t$field.toggleClass('error', limitExceeded)\n\t\t\t\t$submitButton.prop('disabled', limitExceeded)\n\n\t\t\t\t// Submits form with Enter, but Shift+Enter is a new line. If the\n\t\t\t\t// autocomplete popover is being shown Enter does not submit the\n\t\t\t\t// form either; it will be handled by At.js which will add the\n\t\t\t\t// currently selected item to the message.\n\t\t\t\tif (ev.keyCode === 13 && !ev.shiftKey && !$field.atwho('isSelecting')) {\n\t\t\t\t\t$submitButton.click()\n\t\t\t\t\tev.preventDefault()\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_onClickComment: function(ev) {\n\t\t\t\tvar $row = $(ev.target)\n\t\t\t\tif (!$row.is('.comment')) {\n\t\t\t\t\t$row = $row.closest('.comment')\n\t\t\t\t}\n\t\t\t\t$row.removeClass('collapsed')\n\t\t\t},\n\n\t\t\t_onClickCloseComment: function(ev) {\n\t\t\t\tev.preventDefault()\n\t\t\t\tvar $row = $(ev.target).closest('.comment')\n\t\t\t\t$row.data('commentEl').removeClass('hidden')\n\t\t\t\t$row.remove()\n\t\t\t\treturn false\n\t\t\t},\n\n\t\t\t_onClickDeleteComment: function(ev) {\n\t\t\t\tev.preventDefault()\n\t\t\t\tvar $comment = $(ev.target).closest('.comment')\n\t\t\t\tvar commentId = $comment.data('id')\n\t\t\t\tvar $loading = $comment.find('.deleteLoading')\n\t\t\t\tvar $moreIcon = $comment.find('.more')\n\n\t\t\t\t$comment.addClass('disabled')\n\t\t\t\t$loading.removeClass('hidden')\n\t\t\t\t$moreIcon.addClass('hidden')\n\n\t\t\t\t$comment.data('commentEl', $comment)\n\n\t\t\t\tthis.collection.get(commentId).destroy({\n\t\t\t\t\tsuccess: function() {\n\t\t\t\t\t\t$comment.data('commentEl').remove()\n\t\t\t\t\t\t$comment.remove()\n\t\t\t\t\t},\n\t\t\t\t\terror: function() {\n\t\t\t\t\t\t$loading.addClass('hidden')\n\t\t\t\t\t\t$moreIcon.removeClass('hidden')\n\t\t\t\t\t\t$comment.removeClass('disabled')\n\n\t\t\t\t\t\tOC.Notification.showTemporary(t('comments', 'Error occurred while retrieving comment with ID {id}', { id: commentId }))\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\treturn false\n\t\t\t},\n\n\t\t\t_onClickShowMore: function(ev) {\n\t\t\t\tev.preventDefault()\n\t\t\t\tthis.nextPage()\n\t\t\t},\n\n\t\t\t/**\n\t\t * takes care of updating comment element states after submit (either new\n\t\t * comment or edit).\n\t\t *\n\t\t * @param {OC.Backbone.Model} model\n\t\t * @param {jQuery} $form\n\t\t * @private\n\t\t */\n\t\t\t_onSubmitSuccess: function(model, $form) {\n\t\t\t\tvar $submit = $form.find('.submit')\n\t\t\t\tvar $loading = $form.find('.submitLoading')\n\n\t\t\t\t$submit.removeClass('hidden')\n\t\t\t\t$loading.addClass('hidden')\n\t\t\t},\n\n\t\t\t_commentBodyHTML2Plain: function($el) {\n\t\t\t\tvar $comment = $el.clone()\n\n\t\t\t\t$comment.find('.avatar-name-wrapper').each(function() {\n\t\t\t\t\tvar $this = $(this)\n\t\t\t\t\tvar $inserted = $this.parent()\n\t\t\t\t\tvar userId = $this.find('.avatar').data('username')\n\t\t\t\t\tif (userId.indexOf(' ') !== -1) {\n\t\t\t\t\t\t$inserted.html('@\"' + userId + '\"')\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$inserted.html('@' + userId)\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$comment.html(OCP.Comments.richToPlain($comment.html()))\n\n\t\t\t\tvar oldHtml\n\t\t\t\tvar html = $comment.html()\n\t\t\t\tdo {\n\t\t\t\t// replace works one by one\n\t\t\t\t\toldHtml = html\n\t\t\t\t\thtml = oldHtml.replace('<br>', '\\n')\t// preserve line breaks\n\t\t\t\t} while (oldHtml !== html)\n\t\t\t\t$comment.html(html)\n\n\t\t\t\treturn $comment.text()\n\t\t\t},\n\n\t\t\t_onSubmitComment: function(e) {\n\t\t\t\tvar self = this\n\t\t\t\tvar $form = $(e.target)\n\t\t\t\tvar commentId = $form.closest('.comment').data('id')\n\t\t\t\tvar currentUser = OC.getCurrentUser()\n\t\t\t\tvar $submit = $form.find('.submit')\n\t\t\t\tvar $loading = $form.find('.submitLoading')\n\t\t\t\tvar $commentField = $form.find('.message')\n\t\t\t\tvar message = $commentField.text().trim()\n\t\t\t\te.preventDefault()\n\n\t\t\t\tif (!message.length || message.length > this._commentMaxLength) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t$commentField.prop('contenteditable', false)\n\t\t\t\t$submit.addClass('hidden')\n\t\t\t\t$loading.removeClass('hidden')\n\n\t\t\t\tmessage = this._commentBodyHTML2Plain($commentField)\n\t\t\t\tif (commentId) {\n\t\t\t\t// edit mode\n\t\t\t\t\tvar comment = this.collection.get(commentId)\n\t\t\t\t\tcomment.save({\n\t\t\t\t\t\tmessage: message\n\t\t\t\t\t}, {\n\t\t\t\t\t\tsuccess: function(model) {\n\t\t\t\t\t\t\tself._onSubmitSuccess(model, $form)\n\t\t\t\t\t\t\tif (model.get('message').trim() === model.previous('message').trim()) {\n\t\t\t\t\t\t\t// model change event doesn't trigger, manually remove the row.\n\t\t\t\t\t\t\t\tvar $row = $form.closest('.comment')\n\t\t\t\t\t\t\t\t$row.data('commentEl').removeClass('hidden')\n\t\t\t\t\t\t\t\t$row.remove()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror: function() {\n\t\t\t\t\t\t\tself._onSubmitError($form, commentId)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tthis.collection.create({\n\t\t\t\t\t\tactorId: currentUser.uid,\n\t\t\t\t\t\tactorDisplayName: currentUser.displayName,\n\t\t\t\t\t\tactorType: 'users',\n\t\t\t\t\t\tverb: 'comment',\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\tcreationDateTime: (new Date()).toUTCString()\n\t\t\t\t\t}, {\n\t\t\t\t\t\tat: 0,\n\t\t\t\t\t\t// wait for real creation before adding\n\t\t\t\t\t\twait: true,\n\t\t\t\t\t\tsuccess: function(model) {\n\t\t\t\t\t\t\tself._onSubmitSuccess(model, $form)\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror: function() {\n\t\t\t\t\t\t\tself._onSubmitError($form, undefined)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\treturn false\n\t\t\t},\n\n\t\t\t/**\n\t\t * takes care of updating the UI after an error on submit (either new\n\t\t * comment or edit).\n\t\t *\n\t\t * @param {jQuery} $form\n\t\t * @param {string|undefined} commentId\n\t\t * @private\n\t\t */\n\t\t\t_onSubmitError: function($form, commentId) {\n\t\t\t\t$form.find('.submit').removeClass('hidden')\n\t\t\t\t$form.find('.submitLoading').addClass('hidden')\n\t\t\t\t$form.find('.message').prop('contenteditable', true)\n\n\t\t\t\tif (!_.isUndefined(commentId)) {\n\t\t\t\t\tOC.Notification.show(t('comments', 'Error occurred while updating comment with id {id}', { id: commentId }), { type: 'error' })\n\t\t\t\t} else {\n\t\t\t\t\tOC.Notification.show(t('comments', 'Error occurred while posting comment'), { type: 'error' })\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t * ensures the contenteditable div is really empty, when user removed\n\t\t * all input, so that the placeholder will be shown again\n\t\t *\n\t\t * @private\n\t\t */\n\t\t\t_onTextChange: function() {\n\t\t\t\tvar $message = $('#commentsTabView').find('.newCommentForm div.message')\n\t\t\t\tif (!$message.text().trim().length) {\n\t\t\t\t\t$message.empty()\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t * Limit pasting to plain text\n\t\t *\n\t\t * @param e\n\t\t * @private\n\t\t */\n\t\t\t_onPaste: function(e) {\n\t\t\t\te.preventDefault()\n\t\t\t\tvar text = e.originalEvent.clipboardData.getData('text/plain')\n\t\t\t\tdocument.execCommand('insertText', false, text)\n\t\t\t},\n\n\t\t\t/**\n\t\t * Returns whether the given message is long and needs\n\t\t * collapsing\n\t\t */\n\t\t\t_isLong: function(message) {\n\t\t\t\treturn message.length > 250 || (message.match(/\\n/g) || []).length > 1\n\t\t\t}\n\t\t})\n\n\tOCA.Comments.CommentsTabView = CommentsTabView\n})(OC, OCA)\n","/*\n * Copyright (c) 2018\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n(function() {\n\n\t/**\n\t * Construct a new CommentsModifyMenuinstance\n\t * @constructs CommentsModifyMenu\n\t * @memberof OC.Comments\n\t * @private\n\t */\n\tvar CommentsModifyMenu = OC.Backbone.View.extend({\n\t\ttagName: 'div',\n\t\tclassName: 'commentsModifyMenu popovermenu bubble menu',\n\t\t_scopes: [\n\t\t\t{\n\t\t\t\tname: 'edit',\n\t\t\t\tdisplayName: t('comments', 'Edit comment'),\n\t\t\t\ticonClass: 'icon-rename'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'delete',\n\t\t\t\tdisplayName: t('comments', 'Delete comment'),\n\t\t\t\ticonClass: 'icon-delete'\n\t\t\t}\n\t\t],\n\t\tinitialize: function() {\n\n\t\t},\n\t\tevents: {\n\t\t\t'click a.action': '_onClickAction'\n\t\t},\n\n\t\t/**\n\t\t * Event handler whenever an action has been clicked within the menu\n\t\t *\n\t\t * @param {Object} event event object\n\t\t */\n\t\t_onClickAction: function(event) {\n\t\t\tvar $target = $(event.currentTarget)\n\t\t\tif (!$target.hasClass('menuitem')) {\n\t\t\t\t$target = $target.closest('.menuitem')\n\t\t\t}\n\n\t\t\tOC.hideMenus()\n\n\t\t\tthis.trigger('select:menu-item-clicked', event, $target.data('action'))\n\t\t},\n\n\t\t/**\n\t\t * Renders the menu with the currently set items\n\t\t */\n\t\trender: function() {\n\t\t\tthis.$el.html(OCA.Comments.Templates['commentsmodifymenu']({\n\t\t\t\titems: this._scopes\n\t\t\t}))\n\t\t},\n\n\t\t/**\n\t\t * Displays the menu\n\t\t * @param {Event} context the click event\n\t\t */\n\t\tshow: function(context) {\n\t\t\tthis._context = context\n\n\t\t\tfor (var i in this._scopes) {\n\t\t\t\tthis._scopes[i].active = false\n\t\t\t}\n\n\t\t\tvar $el = $(context.target)\n\t\t\tvar offsetIcon = $el.offset()\n\t\t\tvar offsetContainer = $el.closest('.authorRow').offset()\n\n\t\t\t// adding some extra top offset to push the menu below the button.\n\t\t\tvar position = {\n\t\t\t\ttop: offsetIcon.top - offsetContainer.top + 48,\n\t\t\t\tleft: '',\n\t\t\t\tright: ''\n\t\t\t}\n\n\t\t\tposition.left = offsetIcon.left - offsetContainer.left\n\n\t\t\tif (position.left > 200) {\n\t\t\t\t// we need to position the menu to the right.\n\t\t\t\tposition.left = ''\n\t\t\t\tposition.right = this.$el.closest('.comment').find('.date').width()\n\t\t\t\tthis.$el.removeClass('menu-left').addClass('menu-right')\n\t\t\t} else {\n\t\t\t\tthis.$el.removeClass('menu-right').addClass('menu-left')\n\t\t\t}\n\t\t\tthis.$el.css(position)\n\t\t\tthis.render()\n\t\t\tthis.$el.removeClass('hidden')\n\n\t\t\tOC.showMenu(null, this.$el)\n\t\t}\n\t})\n\n\tOCA.Comments = OCA.Comments || {}\n\tOCA.Comments.CommentsModifyMenu = CommentsModifyMenu\n})(OC, OCA)\n","/*\n * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com>\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n(function() {\n\n\t_.extend(OC.Files.Client, {\n\t\tPROPERTY_COMMENTS_UNREAD:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}comments-unread'\n\t})\n\n\tOCA.Comments = _.extend({}, OCA.Comments)\n\tif (!OCA.Comments) {\n\t\t/**\n\t\t * @namespace\n\t\t */\n\t\tOCA.Comments = {}\n\t}\n\n\t/**\n\t * @namespace\n\t */\n\tOCA.Comments.FilesPlugin = {\n\t\tignoreLists: [\n\t\t\t'trashbin',\n\t\t\t'files.public'\n\t\t],\n\n\t\t_formatCommentCount: function(count) {\n\t\t\treturn OCA.Comments.Templates['filesplugin']({\n\t\t\t\tcount: count,\n\t\t\t\tcountMessage: n('comments', '%n unread comment', '%n unread comments', count),\n\t\t\t\ticonUrl: OC.imagePath('core', 'actions/comment')\n\t\t\t})\n\t\t},\n\n\t\tattach: function(fileList) {\n\t\t\tvar self = this\n\t\t\tif (this.ignoreLists.indexOf(fileList.id) >= 0) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tfileList.registerTabView(new OCA.Comments.CommentsTabView('commentsTabView'))\n\n\t\t\tvar oldGetWebdavProperties = fileList._getWebdavProperties\n\t\t\tfileList._getWebdavProperties = function() {\n\t\t\t\tvar props = oldGetWebdavProperties.apply(this, arguments)\n\t\t\t\tprops.push(OC.Files.Client.PROPERTY_COMMENTS_UNREAD)\n\t\t\t\treturn props\n\t\t\t}\n\n\t\t\tfileList.filesClient.addFileInfoParser(function(response) {\n\t\t\t\tvar data = {}\n\t\t\t\tvar props = response.propStat[0].properties\n\t\t\t\tvar commentsUnread = props[OC.Files.Client.PROPERTY_COMMENTS_UNREAD]\n\t\t\t\tif (!_.isUndefined(commentsUnread) && commentsUnread !== '') {\n\t\t\t\t\tdata.commentsUnread = parseInt(commentsUnread, 10)\n\t\t\t\t}\n\t\t\t\treturn data\n\t\t\t})\n\n\t\t\tfileList.$el.addClass('has-comments')\n\t\t\tvar oldCreateRow = fileList._createRow\n\t\t\tfileList._createRow = function(fileData) {\n\t\t\t\tvar $tr = oldCreateRow.apply(this, arguments)\n\t\t\t\tif (fileData.commentsUnread) {\n\t\t\t\t\t$tr.attr('data-comments-unread', fileData.commentsUnread)\n\t\t\t\t}\n\t\t\t\treturn $tr\n\t\t\t}\n\n\t\t\t// register \"comment\" action for reading comments\n\t\t\tfileList.fileActions.registerAction({\n\t\t\t\tname: 'Comment',\n\t\t\t\tdisplayName: function(context) {\n\t\t\t\t\tif (context && context.$file) {\n\t\t\t\t\t\tvar unread = parseInt(context.$file.data('comments-unread'), 10)\n\t\t\t\t\t\tif (unread >= 0) {\n\t\t\t\t\t\t\treturn n('comments', '1 new comment', '{unread} new comments', unread, { unread: unread })\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn t('comments', 'Comment')\n\t\t\t\t},\n\t\t\t\tmime: 'all',\n\t\t\t\torder: -140,\n\t\t\t\ticonClass: 'icon-comment',\n\t\t\t\tpermissions: OC.PERMISSION_READ,\n\t\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\t\trender: function(actionSpec, isDefault, context) {\n\t\t\t\t\tvar $file = context.$file\n\t\t\t\t\tvar unreadComments = $file.data('comments-unread')\n\t\t\t\t\tif (unreadComments) {\n\t\t\t\t\t\tvar $actionLink = $(self._formatCommentCount(unreadComments))\n\t\t\t\t\t\tcontext.$file.find('a.name>span.fileactions').append($actionLink)\n\t\t\t\t\t\treturn $actionLink\n\t\t\t\t\t}\n\t\t\t\t\treturn ''\n\t\t\t\t},\n\t\t\t\tactionHandler: function(fileName, context) {\n\t\t\t\t\tcontext.$file.find('.action-comment').tooltip('hide')\n\t\t\t\t\t// open sidebar in comments section\n\t\t\t\t\tcontext.fileList.showDetailsView(fileName, 'comments')\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// add attribute to \"elementToFile\"\n\t\t\tvar oldElementToFile = fileList.elementToFile\n\t\t\tfileList.elementToFile = function($el) {\n\t\t\t\tvar fileInfo = oldElementToFile.apply(this, arguments)\n\t\t\t\tvar commentsUnread = $el.data('comments-unread')\n\t\t\t\tif (commentsUnread) {\n\t\t\t\t\tfileInfo.commentsUnread = commentsUnread\n\t\t\t\t}\n\t\t\t\treturn fileInfo\n\t\t\t}\n\t\t}\n\t}\n\n})()\n\nOC.Plugins.register('OCA.Files.FileList', OCA.Comments.FilesPlugin)\n","/**\n * @author Joas Schilling <coding@schilljs.com>\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n */\n\n(function() {\n\tOCA.Comments.ActivityTabViewPlugin = {\n\n\t\t/**\n\t\t * Prepare activity for display\n\t\t *\n\t\t * @param {OCA.Activity.ActivityModel} model for this activity\n\t\t * @param {jQuery} $el jQuery handle for this activity\n\t\t * @param {string} view The view that displayes this activity\n\t\t */\n\t\tprepareModelForDisplay: function(model, $el, view) {\n\t\t\tif (model.get('app') !== 'comments' || model.get('type') !== 'comments') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (view === 'ActivityTabView') {\n\t\t\t\t$el.addClass('comment')\n\t\t\t\tif (model.get('message') && this._isLong(model.get('message'))) {\n\t\t\t\t\t$el.addClass('collapsed')\n\t\t\t\t\tvar $overlay = $('<div>').addClass('message-overlay')\n\t\t\t\t\t$el.find('.activitymessage').after($overlay)\n\t\t\t\t\t$el.on('click', this._onClickCollapsedComment)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/*\n\t\t * Copy of CommentsTabView._onClickComment()\n\t\t */\n\t\t_onClickCollapsedComment: function(ev) {\n\t\t\tvar $row = $(ev.target)\n\t\t\tif (!$row.is('.comment')) {\n\t\t\t\t$row = $row.closest('.comment')\n\t\t\t}\n\t\t\t$row.removeClass('collapsed')\n\t\t},\n\n\t\t/*\n\t\t * Copy of CommentsTabView._isLong()\n\t\t */\n\t\t_isLong: function(message) {\n\t\t\treturn message.length > 250 || (message.match(/\\n/g) || []).length > 1\n\t\t}\n\t}\n\n})()\n\nOC.Plugins.register('OCA.Activity.RenderingPlugins', OCA.Comments.ActivityTabViewPlugin)\n","/* eslint-disable */\n/*\n * Copyright (c) 2014\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n(function(OC, OCA, $) {\n\t'use strict'\n\n\t/**\n\t * Construct a new FileActions instance\n\t * @constructs Files\n\t */\n\tvar Comment = function() {\n\t\tthis.initialize()\n\t}\n\n\tComment.prototype = {\n\n\t\tfileList: null,\n\n\t\t/**\n\t\t * Initialize the file search\n\t\t */\n\t\tinitialize: function() {\n\n\t\t\tvar self = this\n\n\t\t\tthis.fileAppLoaded = function() {\n\t\t\t\treturn !!OCA.Files && !!OCA.Files.App\n\t\t\t}\n\t\t\tfunction inFileList($row, result) {\n\t\t\t\treturn false\n\n\t\t\t\tif (!self.fileAppLoaded()) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tvar dir = self.fileList.getCurrentDirectory().replace(/\\/+$/, '')\n\t\t\t\tvar resultDir = OC.dirname(result.path)\n\t\t\t\treturn dir === resultDir && self.fileList.inList(result.name)\n\t\t\t}\n\t\t\tfunction hideNoFilterResults() {\n\t\t\t\tvar $nofilterresults = $('.nofilterresults')\n\t\t\t\tif (!$nofilterresults.hasClass('hidden')) {\n\t\t\t\t\t$nofilterresults.addClass('hidden')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t * @param {jQuery} $row\n\t\t\t * @param {Object} result\n\t\t\t * @param {int} result.id\n\t\t\t * @param {string} result.comment\n\t\t\t * @param {string} result.authorId\n\t\t\t * @param {string} result.authorName\n\t\t\t * @param {string} result.link\n\t\t\t * @param {string} result.fileName\n\t\t\t * @param {string} result.path\n\t\t\t * @returns {*}\n\t\t\t */\n\t\t\tthis.renderCommentResult = function($row, result) {\n\t\t\t\tif (inFileList($row, result)) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\t\t\t\thideNoFilterResults()\n\t\t\t\t/* render preview icon, show path beneath filename,\n\t\t\t\t show size and last modified date on the right */\n\t\t\t\tthis.updateLegacyMimetype(result)\n\n\t\t\t\tvar $pathDiv = $('<div>').addClass('path').text(result.path)\n\n\t\t\t\tvar $avatar = $('<div>')\n\t\t\t\t$avatar.addClass('avatar')\n\t\t\t\t\t.css('display', 'inline-block')\n\t\t\t\t\t.css('vertical-align', 'middle')\n\t\t\t\t\t.css('margin', '0 5px 2px 3px')\n\n\t\t\t\tif (result.authorName) {\n\t\t\t\t\t$avatar.avatar(result.authorId, 21, undefined, false, undefined, result.authorName)\n\t\t\t\t} else {\n\t\t\t\t\t$avatar.avatar(result.authorId, 21)\n\t\t\t\t}\n\n\t\t\t\t$row.find('td.info div.name').after($pathDiv).text(result.comment).prepend($('<span>').addClass('path').css('margin-right', '5px').text(result.authorName)).prepend($avatar)\n\t\t\t\t$row.find('td.result a').attr('href', result.link)\n\n\t\t\t\t$row.find('td.icon')\n\t\t\t\t\t.css('background-image', 'url(' + OC.imagePath('core', 'actions/comment') + ')')\n\t\t\t\t\t.css('opacity', '.4')\n\t\t\t\tvar dir = OC.dirname(result.path)\n\t\t\t\t// \"result.path\" does not include a leading \"/\", so \"OC.dirname\"\n\t\t\t\t// returns the path itself for files or folders in the root.\n\t\t\t\tif (dir === result.path) {\n\t\t\t\t\tdir = '/'\n\t\t\t\t}\n\t\t\t\t$row.find('td.info a').attr('href',\n\t\t\t\t\tOC.generateUrl('/apps/files/?dir={dir}&scrollto={scrollto}', { dir: dir, scrollto: result.fileName })\n\t\t\t\t)\n\n\t\t\t\treturn $row\n\t\t\t}\n\n\t\t\tthis.handleCommentClick = function($row, result, event) {\n\t\t\t\tif (self.fileAppLoaded() && self.fileList.id === 'files') {\n\t\t\t\t\tself.fileList.changeDirectory(OC.dirname(result.path))\n\t\t\t\t\tself.fileList.scrollTo(result.name)\n\t\t\t\t\treturn false\n\t\t\t\t} else {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.updateLegacyMimetype = function(result) {\n\t\t\t\t// backward compatibility:\n\t\t\t\tif (!result.mime && result.mime_type) {\n\t\t\t\t\tresult.mime = result.mime_type\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.setFileList = function(fileList) {\n\t\t\t\tthis.fileList = fileList\n\t\t\t}\n\n\t\t\tOC.Plugins.register('OCA.Search.Core', this)\n\t\t},\n\t\tattach: function(search) {\n\t\t\tsearch.setRenderer('comment', this.renderCommentResult.bind(this))\n\t\t\tsearch.setHandler('comment', this.handleCommentClick.bind(this))\n\t\t}\n\t}\n\n\tOCA.Search.comment = new Comment()\n})(OC, OCA, $)\n","/*! jquery.caret 2015-02-01 */\n!function(a,b){\"function\"==typeof define&&define.amd?define([\"jquery\"],function(c){return a.returnExportsGlobal=b(c)}):\"object\"==typeof exports?module.exports=b(require(\"jquery\")):b(jQuery)}(this,function(a){\"use strict\";var b,c,d,e,f,g,h,i,j,k,l;k=\"caret\",b=function(){function b(a){this.$inputor=a,this.domInputor=this.$inputor[0]}return b.prototype.setPos=function(){return this.domInputor},b.prototype.getIEPosition=function(){return this.getPosition()},b.prototype.getPosition=function(){var a,b;return b=this.getOffset(),a=this.$inputor.offset(),b.left-=a.left,b.top-=a.top,b},b.prototype.getOldIEPos=function(){var a,b;return b=h.selection.createRange(),a=h.body.createTextRange(),a.moveToElementText(this.domInputor),a.setEndPoint(\"EndToEnd\",b),a.text.length},b.prototype.getPos=function(){var a,b,c;return(c=this.range())?(a=c.cloneRange(),a.selectNodeContents(this.domInputor),a.setEnd(c.endContainer,c.endOffset),b=a.toString().length,a.detach(),b):h.selection?this.getOldIEPos():void 0},b.prototype.getOldIEOffset=function(){var a,b;return a=h.selection.createRange().duplicate(),a.moveStart(\"character\",-1),b=a.getBoundingClientRect(),{height:b.bottom-b.top,left:b.left,top:b.top}},b.prototype.getOffset=function(){var b,c,d,e,f;return j.getSelection&&(d=this.range())?(d.endOffset-1>0&&d.endContainer===!this.domInputor&&(b=d.cloneRange(),b.setStart(d.endContainer,d.endOffset-1),b.setEnd(d.endContainer,d.endOffset),e=b.getBoundingClientRect(),c={height:e.height,left:e.left+e.width,top:e.top},b.detach()),c&&0!==(null!=c?c.height:void 0)||(b=d.cloneRange(),f=a(h.createTextNode(\"|\")),b.insertNode(f[0]),b.selectNode(f[0]),e=b.getBoundingClientRect(),c={height:e.height,left:e.left,top:e.top},f.remove(),b.detach())):h.selection&&(c=this.getOldIEOffset()),c&&(c.top+=a(j).scrollTop(),c.left+=a(j).scrollLeft()),c},b.prototype.range=function(){var a;if(j.getSelection)return a=j.getSelection(),a.rangeCount>0?a.getRangeAt(0):null},b}(),c=function(){function b(a){this.$inputor=a,this.domInputor=this.$inputor[0]}return b.prototype.getIEPos=function(){var a,b,c,d,e,f,g;return b=this.domInputor,f=h.selection.createRange(),e=0,f&&f.parentElement()===b&&(d=b.value.replace(/\\r\\n/g,\"\\n\"),c=d.length,g=b.createTextRange(),g.moveToBookmark(f.getBookmark()),a=b.createTextRange(),a.collapse(!1),e=g.compareEndPoints(\"StartToEnd\",a)>-1?c:-g.moveStart(\"character\",-c)),e},b.prototype.getPos=function(){return h.selection?this.getIEPos():this.domInputor.selectionStart},b.prototype.setPos=function(a){var b,c;return b=this.domInputor,h.selection?(c=b.createTextRange(),c.move(\"character\",a),c.select()):b.setSelectionRange&&b.setSelectionRange(a,a),b},b.prototype.getIEOffset=function(a){var b,c,d,e;return c=this.domInputor.createTextRange(),a||(a=this.getPos()),c.move(\"character\",a),d=c.boundingLeft,e=c.boundingTop,b=c.boundingHeight,{left:d,top:e,height:b}},b.prototype.getOffset=function(b){var c,d,e;return c=this.$inputor,h.selection?(d=this.getIEOffset(b),d.top+=a(j).scrollTop()+c.scrollTop(),d.left+=a(j).scrollLeft()+c.scrollLeft(),d):(d=c.offset(),e=this.getPosition(b),d={left:d.left+e.left-c.scrollLeft(),top:d.top+e.top-c.scrollTop(),height:e.height})},b.prototype.getPosition=function(a){var b,c,e,f,g,h,i;return b=this.$inputor,f=function(a){return a=a.replace(/<|>|`|\"|&/g,\"?\").replace(/\\r\\n|\\r|\\n/g,\"<br/>\"),/firefox/i.test(navigator.userAgent)&&(a=a.replace(/\\s/g,\"&nbsp;\")),a},void 0===a&&(a=this.getPos()),i=b.val().slice(0,a),e=b.val().slice(a),g=\"<span style='position: relative; display: inline;'>\"+f(i)+\"</span>\",g+=\"<span id='caret' style='position: relative; display: inline;'>|</span>\",g+=\"<span style='position: relative; display: inline;'>\"+f(e)+\"</span>\",h=new d(b),c=h.create(g).rect()},b.prototype.getIEPosition=function(a){var b,c,d,e,f;return d=this.getIEOffset(a),c=this.$inputor.offset(),e=d.left-c.left,f=d.top-c.top,b=d.height,{left:e,top:f,height:b}},b}(),d=function(){function b(a){this.$inputor=a}return b.prototype.css_attr=[\"borderBottomWidth\",\"borderLeftWidth\",\"borderRightWidth\",\"borderTopStyle\",\"borderRightStyle\",\"borderBottomStyle\",\"borderLeftStyle\",\"borderTopWidth\",\"boxSizing\",\"fontFamily\",\"fontSize\",\"fontWeight\",\"height\",\"letterSpacing\",\"lineHeight\",\"marginBottom\",\"marginLeft\",\"marginRight\",\"marginTop\",\"outlineWidth\",\"overflow\",\"overflowX\",\"overflowY\",\"paddingBottom\",\"paddingLeft\",\"paddingRight\",\"paddingTop\",\"textAlign\",\"textOverflow\",\"textTransform\",\"whiteSpace\",\"wordBreak\",\"wordWrap\"],b.prototype.mirrorCss=function(){var b,c=this;return b={position:\"absolute\",left:-9999,top:0,zIndex:-2e4},\"TEXTAREA\"===this.$inputor.prop(\"tagName\")&&this.css_attr.push(\"width\"),a.each(this.css_attr,function(a,d){return b[d]=c.$inputor.css(d)}),b},b.prototype.create=function(b){return this.$mirror=a(\"<div></div>\"),this.$mirror.css(this.mirrorCss()),this.$mirror.html(b),this.$inputor.after(this.$mirror),this},b.prototype.rect=function(){var a,b,c;return a=this.$mirror.find(\"#caret\"),b=a.position(),c={left:b.left,top:b.top,height:a.height()},this.$mirror.remove(),c},b}(),e={contentEditable:function(a){return!(!a[0].contentEditable||\"true\"!==a[0].contentEditable)}},g={pos:function(a){return a||0===a?this.setPos(a):this.getPos()},position:function(a){return h.selection?this.getIEPosition(a):this.getPosition(a)},offset:function(a){var b;return b=this.getOffset(a)}},h=null,j=null,i=null,l=function(a){var b;return(b=null!=a?a.iframe:void 0)?(i=b,j=b.contentWindow,h=b.contentDocument||j.document):(i=void 0,j=window,h=document)},f=function(a){var b;h=a[0].ownerDocument,j=h.defaultView||h.parentWindow;try{return i=j.frameElement}catch(c){b=c}},a.fn.caret=function(d,f,h){var i;return g[d]?(a.isPlainObject(f)?(l(f),f=void 0):l(h),i=e.contentEditable(this)?new b(this):new c(this),g[d].apply(i,[f])):a.error(\"Method \"+d+\" does not exist on jQuery.caret\")},a.fn.caret.EditableCaret=b,a.fn.caret.InputCaret=c,a.fn.caret.Utils=e,a.fn.caret.apis=g});","!function(t,e){\"function\"==typeof define&&define.amd?define([\"jquery\"],function(t){return e(t)}):\"object\"==typeof exports?module.exports=e(require(\"jquery\")):e(jQuery)}(this,function(t){var e,i;i={ESC:27,TAB:9,ENTER:13,CTRL:17,A:65,P:80,N:78,LEFT:37,UP:38,RIGHT:39,DOWN:40,BACKSPACE:8,SPACE:32},e={beforeSave:function(t){return r.arrayToDefaultHash(t)},matcher:function(t,e,i,n){var r,o,s,a,h;return t=t.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\"\\\\$&\"),i&&(t=\"(?:^|\\\\s)\"+t),r=decodeURI(\"%C3%80\"),o=decodeURI(\"%C3%BF\"),h=n?\" \":\"\",a=new RegExp(t+\"([A-Za-z\"+r+\"-\"+o+\"0-9_\"+h+\"'.+-]*)$|\"+t+\"([^\\\\x00-\\\\xff]*)$\",\"gi\"),s=a.exec(e),s?s[2]||s[1]:null},filter:function(t,e,i){var n,r,o,s;for(n=[],r=0,s=e.length;s>r;r++)o=e[r],~new String(o[i]).toLowerCase().indexOf(t.toLowerCase())&&n.push(o);return n},remoteFilter:null,sorter:function(t,e,i){var n,r,o,s;if(!t)return e;for(n=[],r=0,s=e.length;s>r;r++)o=e[r],o.atwho_order=new String(o[i]).toLowerCase().indexOf(t.toLowerCase()),o.atwho_order>-1&&n.push(o);return n.sort(function(t,e){return t.atwho_order-e.atwho_order})},tplEval:function(t,e){var i,n,r;r=t;try{return\"string\"!=typeof t&&(r=t(e)),r.replace(/\\$\\{([^\\}]*)\\}/g,function(t,i,n){return e[i]})}catch(n){return i=n,\"\"}},highlighter:function(t,e){var i;return e?(i=new RegExp(\">\\\\s*([^<]*?)(\"+e.replace(\"+\",\"\\\\+\")+\")([^<]*)\\\\s*<\",\"ig\"),t.replace(i,function(t,e,i,n){return\"> \"+e+\"<strong>\"+i+\"</strong>\"+n+\" <\"})):t},beforeInsert:function(t,e,i){return t},beforeReposition:function(t){return t},afterMatchFailed:function(t,e){}};var n;n=function(){function e(e){this.currentFlag=null,this.controllers={},this.aliasMaps={},this.$inputor=t(e),this.setupRootElement(),this.listen()}return e.prototype.createContainer=function(e){var i;return null!=(i=this.$el)&&i.remove(),t(e.body).append(this.$el=t(\"<div class='atwho-container'></div>\"))},e.prototype.setupRootElement=function(e,i){var n,r;if(null==i&&(i=!1),e)this.window=e.contentWindow,this.document=e.contentDocument||this.window.document,this.iframe=e;else{this.document=this.$inputor[0].ownerDocument,this.window=this.document.defaultView||this.document.parentWindow;try{this.iframe=this.window.frameElement}catch(r){if(n=r,this.iframe=null,t.fn.atwho.debug)throw new Error(\"iframe auto-discovery is failed.\\nPlease use `setIframe` to set the target iframe manually.\\n\"+n)}}return this.createContainer((this.iframeAsRoot=i)?this.document:document)},e.prototype.controller=function(t){var e,i,n,r;if(this.aliasMaps[t])i=this.controllers[this.aliasMaps[t]];else{r=this.controllers;for(n in r)if(e=r[n],n===t){i=e;break}}return i?i:this.controllers[this.currentFlag]},e.prototype.setContextFor=function(t){return this.currentFlag=t,this},e.prototype.reg=function(t,e){var i,n;return n=(i=this.controllers)[t]||(i[t]=this.$inputor.is(\"[contentEditable]\")?new l(this,t):new s(this,t)),e.alias&&(this.aliasMaps[e.alias]=t),n.init(e),this},e.prototype.listen=function(){return this.$inputor.on(\"compositionstart\",function(t){return function(e){var i;return null!=(i=t.controller())&&i.view.hide(),t.isComposing=!0,null}}(this)).on(\"compositionend\",function(t){return function(e){return t.isComposing=!1,setTimeout(function(e){return t.dispatch(e)}),null}}(this)).on(\"keyup.atwhoInner\",function(t){return function(e){return t.onKeyup(e)}}(this)).on(\"keydown.atwhoInner\",function(t){return function(e){return t.onKeydown(e)}}(this)).on(\"blur.atwhoInner\",function(t){return function(e){var i;return(i=t.controller())?(i.expectedQueryCBId=null,i.view.hide(e,i.getOpt(\"displayTimeout\"))):void 0}}(this)).on(\"click.atwhoInner\",function(t){return function(e){return t.dispatch(e)}}(this)).on(\"scroll.atwhoInner\",function(t){return function(){var e;return e=t.$inputor.scrollTop(),function(i){var n,r;return n=i.target.scrollTop,e!==n&&null!=(r=t.controller())&&r.view.hide(i),e=n,!0}}}(this)())},e.prototype.shutdown=function(){var t,e,i;i=this.controllers;for(t in i)e=i[t],e.destroy(),delete this.controllers[t];return this.$inputor.off(\".atwhoInner\"),this.$el.remove()},e.prototype.dispatch=function(t){var e,i,n,r;n=this.controllers,r=[];for(e in n)i=n[e],r.push(i.lookUp(t));return r},e.prototype.onKeyup=function(e){var n;switch(e.keyCode){case i.ESC:e.preventDefault(),null!=(n=this.controller())&&n.view.hide();break;case i.DOWN:case i.UP:case i.CTRL:case i.ENTER:t.noop();break;case i.P:case i.N:e.ctrlKey||this.dispatch(e);break;default:this.dispatch(e)}},e.prototype.onKeydown=function(e){var n,r;if(r=null!=(n=this.controller())?n.view:void 0,r&&r.visible())switch(e.keyCode){case i.ESC:e.preventDefault(),r.hide(e);break;case i.UP:e.preventDefault(),r.prev();break;case i.DOWN:e.preventDefault(),r.next();break;case i.P:if(!e.ctrlKey)return;e.preventDefault(),r.prev();break;case i.N:if(!e.ctrlKey)return;e.preventDefault(),r.next();break;case i.TAB:case i.ENTER:case i.SPACE:if(!r.visible())return;if(!this.controller().getOpt(\"spaceSelectsMatch\")&&e.keyCode===i.SPACE)return;if(!this.controller().getOpt(\"tabSelectsMatch\")&&e.keyCode===i.TAB)return;r.highlighted()?(e.preventDefault(),r.choose(e)):r.hide(e);break;default:t.noop()}},e}();var r,o=[].slice;r=function(){function i(e,i){this.app=e,this.at=i,this.$inputor=this.app.$inputor,this.id=this.$inputor[0].id||this.uid(),this.expectedQueryCBId=null,this.setting=null,this.query=null,this.pos=0,this.range=null,0===(this.$el=t(\"#atwho-ground-\"+this.id,this.app.$el)).length&&this.app.$el.append(this.$el=t(\"<div id='atwho-ground-\"+this.id+\"'></div>\")),this.model=new u(this),this.view=new c(this)}return i.prototype.uid=function(){return(Math.random().toString(16)+\"000000000\").substr(2,8)+(new Date).getTime()},i.prototype.init=function(e){return this.setting=t.extend({},this.setting||t.fn.atwho[\"default\"],e),this.view.init(),this.model.reload(this.setting.data)},i.prototype.destroy=function(){return this.trigger(\"beforeDestroy\"),this.model.destroy(),this.view.destroy(),this.$el.remove()},i.prototype.callDefault=function(){var i,n,r,s;s=arguments[0],i=2<=arguments.length?o.call(arguments,1):[];try{return e[s].apply(this,i)}catch(r){return n=r,t.error(n+\" Or maybe At.js doesn't have function \"+s)}},i.prototype.trigger=function(t,e){var i,n;return null==e&&(e=[]),e.push(this),i=this.getOpt(\"alias\"),n=i?t+\"-\"+i+\".atwho\":t+\".atwho\",this.$inputor.trigger(n,e)},i.prototype.callbacks=function(t){return this.getOpt(\"callbacks\")[t]||e[t]},i.prototype.getOpt=function(t,e){var i,n;try{return this.setting[t]}catch(n){return i=n,null}},i.prototype.insertContentFor=function(e){var i,n;return n=this.getOpt(\"insertTpl\"),i=t.extend({},e.data(\"item-data\"),{\"atwho-at\":this.at}),this.callbacks(\"tplEval\").call(this,n,i,\"onInsert\")},i.prototype.renderView=function(t){var e;return e=this.getOpt(\"searchKey\"),t=this.callbacks(\"sorter\").call(this,this.query.text,t.slice(0,1001),e),this.view.render(t.slice(0,this.getOpt(\"limit\")))},i.arrayToDefaultHash=function(e){var i,n,r,o;if(!t.isArray(e))return e;for(o=[],i=0,r=e.length;r>i;i++)n=e[i],t.isPlainObject(n)?o.push(n):o.push({name:n});return o},i.prototype.lookUp=function(t){var e,i;if((!t||\"click\"!==t.type||this.getOpt(\"lookUpOnClick\"))&&(!this.getOpt(\"suspendOnComposing\")||!this.app.isComposing))return(e=this.catchQuery(t))?(this.app.setContextFor(this.at),(i=this.getOpt(\"delay\"))?this._delayLookUp(e,i):this._lookUp(e),e):(this.expectedQueryCBId=null,e)},i.prototype._delayLookUp=function(t,e){var i,n;return i=Date.now?Date.now():(new Date).getTime(),this.previousCallTime||(this.previousCallTime=i),n=e-(i-this.previousCallTime),n>0&&e>n?(this.previousCallTime=i,this._stopDelayedCall(),this.delayedCallTimeout=setTimeout(function(e){return function(){return e.previousCallTime=0,e.delayedCallTimeout=null,e._lookUp(t)}}(this),e)):(this._stopDelayedCall(),this.previousCallTime!==i&&(this.previousCallTime=0),this._lookUp(t))},i.prototype._stopDelayedCall=function(){return this.delayedCallTimeout?(clearTimeout(this.delayedCallTimeout),this.delayedCallTimeout=null):void 0},i.prototype._generateQueryCBId=function(){return{}},i.prototype._lookUp=function(e){var i;return i=function(t,e){return t===this.expectedQueryCBId?e&&e.length>0?this.renderView(this.constructor.arrayToDefaultHash(e)):this.view.hide():void 0},this.expectedQueryCBId=this._generateQueryCBId(),this.model.query(e.text,t.proxy(i,this,this.expectedQueryCBId))},i}();var s,a=function(t,e){function i(){this.constructor=t}for(var n in e)h.call(e,n)&&(t[n]=e[n]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},h={}.hasOwnProperty;s=function(e){function i(){return i.__super__.constructor.apply(this,arguments)}return a(i,e),i.prototype.catchQuery=function(){var t,e,i,n,r,o,s;return e=this.$inputor.val(),t=this.$inputor.caret(\"pos\",{iframe:this.app.iframe}),s=e.slice(0,t),r=this.callbacks(\"matcher\").call(this,this.at,s,this.getOpt(\"startWithSpace\"),this.getOpt(\"acceptSpaceBar\")),n=\"string\"==typeof r,n&&r.length<this.getOpt(\"minLen\",0)?void 0:(n&&r.length<=this.getOpt(\"maxLen\",20)?(o=t-r.length,i=o+r.length,this.pos=o,r={text:r,headPos:o,endPos:i},this.trigger(\"matched\",[this.at,r.text])):(r=null,this.view.hide()),this.query=r)},i.prototype.rect=function(){var e,i,n;if(e=this.$inputor.caret(\"offset\",this.pos-1,{iframe:this.app.iframe}))return this.app.iframe&&!this.app.iframeAsRoot&&(i=t(this.app.iframe).offset(),e.left+=i.left,e.top+=i.top),n=this.app.document.selection?0:2,{left:e.left,top:e.top,bottom:e.top+e.height+n}},i.prototype.insert=function(t,e){var i,n,r,o,s;return i=this.$inputor,n=i.val(),r=n.slice(0,Math.max(this.query.headPos-this.at.length,0)),o=\"\"===(o=this.getOpt(\"suffix\"))?o:o||\" \",t+=o,s=\"\"+r+t+n.slice(this.query.endPos||0),i.val(s),i.caret(\"pos\",r.length+t.length,{iframe:this.app.iframe}),i.is(\":focus\")||i.focus(),i.change()},i}(r);var l,a=function(t,e){function i(){this.constructor=t}for(var n in e)h.call(e,n)&&(t[n]=e[n]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},h={}.hasOwnProperty;l=function(e){function n(){return n.__super__.constructor.apply(this,arguments)}return a(n,e),n.prototype._getRange=function(){var t;return t=this.app.window.getSelection(),t.rangeCount>0?t.getRangeAt(0):void 0},n.prototype._setRange=function(e,i,n){return null==n&&(n=this._getRange()),n&&i?(i=t(i)[0],\"after\"===e?(n.setEndAfter(i),n.setStartAfter(i)):(n.setEndBefore(i),n.setStartBefore(i)),n.collapse(!1),this._clearRange(n)):void 0},n.prototype._clearRange=function(t){var e;return null==t&&(t=this._getRange()),e=this.app.window.getSelection(),null==this.ctrl_a_pressed?(e.removeAllRanges(),e.addRange(t)):void 0},n.prototype._movingEvent=function(t){var e;return\"click\"===t.type||(e=t.which)===i.RIGHT||e===i.LEFT||e===i.UP||e===i.DOWN},n.prototype._unwrap=function(e){var i;return e=t(e).unwrap().get(0),(i=e.nextSibling)&&i.nodeValue&&(e.nodeValue+=i.nodeValue,t(i).remove()),e},n.prototype.catchQuery=function(e){var n,r,o,s,a,h,l,u,c,p,f,d;if((d=this._getRange())&&d.collapsed){if(e.which===i.ENTER)return(r=t(d.startContainer).closest(\".atwho-query\")).contents().unwrap(),r.is(\":empty\")&&r.remove(),(r=t(\".atwho-query\",this.app.document)).text(r.text()).contents().last().unwrap(),void this._clearRange();if(/firefox/i.test(navigator.userAgent)){if(t(d.startContainer).is(this.$inputor))return void this._clearRange();e.which===i.BACKSPACE&&d.startContainer.nodeType===document.ELEMENT_NODE&&(c=d.startOffset-1)>=0?(o=d.cloneRange(),o.setStart(d.startContainer,c),t(o.cloneContents()).contents().last().is(\".atwho-inserted\")&&(a=t(d.startContainer).contents().get(c),this._setRange(\"after\",t(a).contents().last()))):e.which===i.LEFT&&d.startContainer.nodeType===document.TEXT_NODE&&(n=t(d.startContainer.previousSibling),n.is(\".atwho-inserted\")&&0===d.startOffset&&this._setRange(\"after\",n.contents().last()))}if(t(d.startContainer).closest(\".atwho-inserted\").addClass(\"atwho-query\").siblings().removeClass(\"atwho-query\"),(r=t(\".atwho-query\",this.app.document)).length>0&&r.is(\":empty\")&&0===r.text().length&&r.remove(),this._movingEvent(e)||r.removeClass(\"atwho-inserted\"),r.length>0)switch(e.which){case i.LEFT:return this._setRange(\"before\",r.get(0),d),void r.removeClass(\"atwho-query\");case i.RIGHT:return this._setRange(\"after\",r.get(0).nextSibling,d),void r.removeClass(\"atwho-query\")}if(r.length>0&&(f=r.attr(\"data-atwho-at-query\"))&&(r.empty().html(f).attr(\"data-atwho-at-query\",null),this._setRange(\"after\",r.get(0),d)),o=d.cloneRange(),o.setStart(d.startContainer,0),u=this.callbacks(\"matcher\").call(this,this.at,o.toString(),this.getOpt(\"startWithSpace\"),this.getOpt(\"acceptSpaceBar\")),h=\"string\"==typeof u,0===r.length&&h&&(s=d.startOffset-this.at.length-u.length)>=0&&(d.setStart(d.startContainer,s),r=t(\"<span/>\",this.app.document).attr(this.getOpt(\"editableAtwhoQueryAttrs\")).addClass(\"atwho-query\"),d.surroundContents(r.get(0)),l=r.contents().last().get(0),l&&(/firefox/i.test(navigator.userAgent)?(d.setStart(l,l.length),d.setEnd(l,l.length),this._clearRange(d)):this._setRange(\"after\",l,d))),!(h&&u.length<this.getOpt(\"minLen\",0)))return h&&u.length<=this.getOpt(\"maxLen\",20)?(p={text:u,el:r},this.trigger(\"matched\",[this.at,p.text]),this.query=p):(this.view.hide(),this.query={el:r},r.text().indexOf(this.at)>=0&&(this._movingEvent(e)&&r.hasClass(\"atwho-inserted\")?r.removeClass(\"atwho-query\"):!1!==this.callbacks(\"afterMatchFailed\").call(this,this.at,r)&&this._setRange(\"after\",this._unwrap(r.text(r.text()).contents().first()))),null)}},n.prototype.rect=function(){var e,i,n;return n=this.query.el.offset(),n&&this.query.el[0].getClientRects().length?(this.app.iframe&&!this.app.iframeAsRoot&&(i=(e=t(this.app.iframe)).offset(),n.left+=i.left-this.$inputor.scrollLeft(),n.top+=i.top-this.$inputor.scrollTop()),n.bottom=n.top+this.query.el.height(),n):void 0},n.prototype.insert=function(t,e){var i,n,r,o,s;return this.$inputor.is(\":focus\")||this.$inputor.focus(),n=this.getOpt(\"functionOverrides\"),n.insert?n.insert.call(this,t,e):(o=\"\"===(o=this.getOpt(\"suffix\"))?o:o||\" \",i=e.data(\"item-data\"),this.query.el.removeClass(\"atwho-query\").addClass(\"atwho-inserted\").html(t).attr(\"data-atwho-at-query\",\"\"+i[\"atwho-at\"]+this.query.text).attr(\"contenteditable\",\"false\"),(r=this._getRange())&&(this.query.el.length&&r.setEndAfter(this.query.el[0]),r.collapse(!1),r.insertNode(s=this.app.document.createTextNode(\"\"+o)),this._setRange(\"after\",s,r)),this.$inputor.is(\":focus\")||this.$inputor.focus(),this.$inputor.change())},n}(r);var u;u=function(){function e(t){this.context=t,this.at=this.context.at,this.storage=this.context.$inputor}return e.prototype.destroy=function(){return this.storage.data(this.at,null)},e.prototype.saved=function(){return this.fetch()>0},e.prototype.query=function(t,e){var i,n,r;return n=this.fetch(),r=this.context.getOpt(\"searchKey\"),n=this.context.callbacks(\"filter\").call(this.context,t,n,r)||[],i=this.context.callbacks(\"remoteFilter\"),n.length>0||!i&&0===n.length?e(n):i.call(this.context,t,e)},e.prototype.fetch=function(){return this.storage.data(this.at)||[]},e.prototype.save=function(t){return this.storage.data(this.at,this.context.callbacks(\"beforeSave\").call(this.context,t||[]))},e.prototype.load=function(t){return!this.saved()&&t?this._load(t):void 0},e.prototype.reload=function(t){return this._load(t)},e.prototype._load=function(e){return\"string\"==typeof e?t.ajax(e,{dataType:\"json\"}).done(function(t){return function(e){return t.save(e)}}(this)):this.save(e)},e}();var c;c=function(){function e(e){this.context=e,this.$el=t(\"<div class='atwho-view'><ul class='atwho-view-ul'></ul></div>\"),this.$elUl=this.$el.children(),this.timeoutID=null,this.context.$el.append(this.$el),this.bindEvent()}return e.prototype.init=function(){var t,e;return e=this.context.getOpt(\"alias\")||this.context.at.charCodeAt(0),t=this.context.getOpt(\"headerTpl\"),t&&1===this.$el.children().length&&this.$el.prepend(t),this.$el.attr({id:\"at-view-\"+e})},e.prototype.destroy=function(){return this.$el.remove()},e.prototype.bindEvent=function(){var e,i,n;return e=this.$el.find(\"ul\"),i=0,n=0,e.on(\"mousemove.atwho-view\",\"li\",function(r){return function(r){var o;if((i!==r.clientX||n!==r.clientY)&&(i=r.clientX,n=r.clientY,o=t(r.currentTarget),!o.hasClass(\"cur\")))return e.find(\".cur\").removeClass(\"cur\"),o.addClass(\"cur\")}}(this)).on(\"click.atwho-view\",\"li\",function(i){return function(n){return e.find(\".cur\").removeClass(\"cur\"),t(n.currentTarget).addClass(\"cur\"),i.choose(n),n.preventDefault()}}(this))},e.prototype.visible=function(){return t.expr.filters.visible(this.$el[0])},e.prototype.highlighted=function(){return this.$el.find(\".cur\").length>0},e.prototype.choose=function(t){var e,i;return(e=this.$el.find(\".cur\")).length&&(i=this.context.insertContentFor(e),this.context._stopDelayedCall(),this.context.insert(this.context.callbacks(\"beforeInsert\").call(this.context,i,e,t),e),this.context.trigger(\"inserted\",[e,t]),this.hide(t)),this.context.getOpt(\"hideWithoutSuffix\")?this.stopShowing=!0:void 0},e.prototype.reposition=function(e){var i,n,r,o;return i=this.context.app.iframeAsRoot?this.context.app.window:window,e.bottom+this.$el.height()-t(i).scrollTop()>t(i).height()&&(e.bottom=e.top-this.$el.height()),e.left>(r=t(i).width()-this.$el.width()-5)&&(e.left=r),n={left:e.left,top:e.bottom},null!=(o=this.context.callbacks(\"beforeReposition\"))&&o.call(this.context,n),this.$el.offset(n),this.context.trigger(\"reposition\",[n])},e.prototype.next=function(){var t,e,i,n;return t=this.$el.find(\".cur\").removeClass(\"cur\"),e=t.next(),e.length||(e=this.$el.find(\"li:first\")),e.addClass(\"cur\"),i=e[0],n=i.offsetTop+i.offsetHeight+(i.nextSibling?i.nextSibling.offsetHeight:0),this.scrollTop(Math.max(0,n-this.$el.height()))},e.prototype.prev=function(){var t,e,i,n;return t=this.$el.find(\".cur\").removeClass(\"cur\"),i=t.prev(),i.length||(i=this.$el.find(\"li:last\")),i.addClass(\"cur\"),n=i[0],e=n.offsetTop+n.offsetHeight+(n.nextSibling?n.nextSibling.offsetHeight:0),this.scrollTop(Math.max(0,e-this.$el.height()))},e.prototype.scrollTop=function(t){var e;return e=this.context.getOpt(\"scrollDuration\"),e?this.$elUl.animate({scrollTop:t},e):this.$elUl.scrollTop(t)},e.prototype.show=function(){var t;return this.stopShowing?void(this.stopShowing=!1):(this.visible()||(this.$el.show(),this.$el.scrollTop(0),this.context.trigger(\"shown\")),(t=this.context.rect())?this.reposition(t):void 0)},e.prototype.hide=function(t,e){var i;if(this.visible())return isNaN(e)?(this.$el.hide(),this.context.trigger(\"hidden\",[t])):(i=function(t){return function(){return t.hide()}}(this),clearTimeout(this.timeoutID),this.timeoutID=setTimeout(i,e))},e.prototype.render=function(e){var i,n,r,o,s,a,h;if(!(t.isArray(e)&&e.length>0))return void this.hide();for(this.$el.find(\"ul\").empty(),n=this.$el.find(\"ul\"),h=this.context.getOpt(\"displayTpl\"),r=0,s=e.length;s>r;r++)o=e[r],o=t.extend({},o,{\"atwho-at\":this.context.at}),a=this.context.callbacks(\"tplEval\").call(this.context,h,o,\"onDisplay\"),i=t(this.context.callbacks(\"highlighter\").call(this.context,a,this.context.query.text)),i.data(\"item-data\",o),n.append(i);return this.show(),this.context.getOpt(\"highlightFirst\")?n.find(\"li:first\").addClass(\"cur\"):void 0},e}();var p;p={load:function(t,e){var i;return(i=this.controller(t))?i.model.load(e):void 0},isSelecting:function(){var t;return!!(null!=(t=this.controller())?t.view.visible():void 0)},hide:function(){var t;return null!=(t=this.controller())?t.view.hide():void 0},reposition:function(){var t;return(t=this.controller())?t.view.reposition(t.rect()):void 0},setIframe:function(t,e){return this.setupRootElement(t,e),null},run:function(){return this.dispatch()},destroy:function(){return this.shutdown(),this.$inputor.data(\"atwho\",null)}},t.fn.atwho=function(e){var i,r;return i=arguments,r=null,this.filter('textarea, input, [contenteditable=\"\"], [contenteditable=true]').each(function(){var o,s;return(s=(o=t(this)).data(\"atwho\"))||o.data(\"atwho\",s=new n(this)),\"object\"!=typeof e&&e?p[e]&&s?r=p[e].apply(s,Array.prototype.slice.call(i,1)):t.error(\"Method \"+e+\" does not exist on jQuery.atwho\"):s.reg(e.at,e)}),null!=r?r:this},t.fn.atwho[\"default\"]={at:void 0,alias:void 0,data:null,displayTpl:\"<li>${name}</li>\",insertTpl:\"${atwho-at}${name}\",headerTpl:null,callbacks:e,functionOverrides:{},searchKey:\"name\",suffix:void 0,hideWithoutSuffix:!1,startWithSpace:!0,acceptSpaceBar:!1,highlightFirst:!0,limit:5,maxLen:20,minLen:0,displayTimeout:300,delay:null,spaceSelectsMatch:!1,tabSelectsMatch:!0,editableAtwhoQueryAttrs:{},scrollDuration:150,suspendOnComposing:!0,lookUpOnClick:!0},t.fn.atwho.debug=!1});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./autocomplete.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8e87fa8e\", content, true, {});","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".atwho-view{position:absolute;top:0;left:0;display:none;margin-top:18px;background:var(--color-main-background);color:var(--color-main-text);border:1px solid var(--color-border);border-radius:var(--border-radius);box-shadow:0 0 5px var(--color-box-shadow);min-width:120px;z-index:11110 !important}.atwho-view .atwho-header{padding:5px;margin:5px;cursor:pointer;border-bottom:solid 1px var(--color-border);color:var(--color-main-text);font-size:11px;font-weight:bold}.atwho-view .atwho-header .small{color:var(--color-main-text);float:right;padding-top:2px;margin-right:-5px;font-size:12px;font-weight:normal}.atwho-view .atwho-header:hover{cursor:default}.atwho-view .cur{background:var(--color-primary);color:var(--color-primary-text)}.atwho-view .cur small{color:var(--color-primary-text)}.atwho-view strong{color:var(--color-main-text);font-weight:normal}.atwho-view .cur strong{color:var(--color-primary-text);font-weight:normal}.atwho-view ul{list-style:none;padding:0;margin:auto;max-height:200px;overflow-y:auto}.atwho-view ul li{display:block;padding:5px 10px;border-bottom:1px solid var(--color-border);cursor:pointer}.atwho-view small{font-size:smaller;color:var(--color-main-text);font-weight:normal}\\n\", \"\"]);\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./comments.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"477a5c21\", content, true, {});","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"#commentsTabView .emptycontent{margin-top:0}#commentsTabView .newCommentForm{margin-left:36px;position:relative}#commentsTabView .newCommentForm .message{width:100%;padding:10px;min-height:44px;margin:0;padding-right:30px}#commentsTabView .newCommentForm .submit,#commentsTabView .newCommentForm .submitLoading{width:44px;height:44px;margin:0;padding:13px;background-color:transparent;border:none;opacity:.3;position:absolute;bottom:0;right:0}#commentsTabView .deleteLoading{padding:14px;vertical-align:middle}#commentsTabView .newCommentForm .submit:not(:disabled):hover,#commentsTabView .newCommentForm .submit:not(:disabled):focus{opacity:1}#commentsTabView .newCommentForm div.message{resize:none}#commentsTabView .newCommentForm div.message:empty:before{content:attr(data-placeholder);color:grey}#commentsTabView .comment{position:relative;padding:10px 0 15px}#commentsTabView .comments .comment{border-top:1px solid var(--color-border)}#commentsTabView .comment .avatar,.atwho-view-ul * .avatar{width:32px;height:32px;line-height:32px;margin-right:5px}#commentsTabView .comment .message .avatar,.atwho-view-ul * .avatar{display:inline-block}#activityTabView li.comment.collapsed .activitymessage,#commentsTabView .comment.collapsed .message{white-space:pre-wrap}#activityTabView li.comment.collapsed .activitymessage,#commentsTabView .comment.collapsed .message{max-height:70px;overflow:hidden}#activityTabView li.comment .message-overlay,#commentsTabView .comment .message-overlay{display:none}#activityTabView li.comment.collapsed .message-overlay,#commentsTabView .comment.collapsed .message-overlay{display:block;position:absolute;z-index:2;height:50px;pointer-events:none;left:0;right:0;bottom:0;background:-moz-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background:-webkit-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background:-o-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background:-ms-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background:linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background-repeat:no-repeat}#commentsTabView .hidden{display:none !important}#commentsTabView .comment .authorRow{min-height:44px}#commentsTabView .comment .authorRow .tooltip{margin-top:5px}.atwho-view-ul * .avatar-name-wrapper,#commentsTabView .comment .authorRow{position:relative;display:inline-flex;align-items:center;width:100%}#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser),#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser) .avatar,#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser) .avatar img,#commentsTabView .comment .authorRow .avatar:not(.currentUser),#commentsTabView .comment .authorRow .author:not(.currentUser){cursor:pointer}.atwho-view-ul .avatar-name-wrapper,.atwho-view-ul .avatar-name-wrapper .avatar,.atwho-view-ul .avatar-name-wrapper .avatar img{cursor:pointer}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper{position:relative;display:inline;vertical-align:top;background-color:var(--color-background-dark);border-radius:50vh;padding:1px 7px 1px 1px;white-space:nowrap}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper .avatar,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper .avatar{height:16px;width:16px;vertical-align:middle;padding:1px;margin-top:-3px;margin-left:0;margin-right:2px}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper .avatar img,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper .avatar img{vertical-align:top}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper strong,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper strong{font-weight:bold}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper.currentUser,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper.currentUser{background-color:var(--color-primary);color:var(--color-primary-text)}.atwho-view-ul * .avatar-name-wrapper{white-space:nowrap}#commentsTabView .comment .author,#commentsTabView .comment .date{opacity:.5}#commentsTabView .comment .author{max-width:210px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}#commentsTabView .comment .date{margin-left:auto;padding:10px 0px}#commentsTabView .comments>li:not(.newCommentRow) .message{padding-left:40px;word-wrap:break-word;overflow-wrap:break-word}#commentsTabView .comment .action{opacity:0.3;padding:14px;display:block}#commentsTabView .comment .action:hover,#commentsTabView .comment .action:focus{opacity:1}#commentsTabView .newCommentRow .action-container{margin-left:auto}#commentsTabView .comment.disabled .message{opacity:0.3}#commentsTabView .comment.disabled .action{display:none}#commentsTabView .message.error{color:#e9322d;border-color:#e9322d;box-shadow:0 0 6px #f8b9b7}.app-files .action-comment{padding:16px 14px}#commentsTabView .comment .message .contactsmenu-popover{left:-6px;top:24px}\\n\", \"\"]);\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"jQuery\"","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/vue-style-loader/lib/listToStyles.js","webpack:///./node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///./apps/comments/src/comments.js","webpack:///./apps/comments/src/app.js","webpack:///./apps/comments/src/templates.js","webpack:///./apps/comments/src/commentmodel.js","webpack:///./apps/comments/src/commentcollection.js","webpack:///./apps/comments/src/commentsummarymodel.js","webpack:///./apps/comments/src/commentstabview.js","webpack:///./apps/comments/src/commentsmodifymenu.js","webpack:///./apps/comments/src/filesplugin.js","webpack:///./apps/comments/src/activitytabviewplugin.js","webpack:///./apps/comments/src/search.js","webpack:///./apps/comments/src/vendor/Caret.js/dist/jquery.caret.min.js","webpack:///./apps/comments/src/vendor/At.js/dist/js/jquery.atwho.min.js","webpack:///./apps/comments/src/style/autocomplete.scss?75bd","webpack:///./apps/comments/src/style/autocomplete.scss","webpack:///./apps/comments/src/style/comments.scss?fd56","webpack:///./apps/comments/src/style/comments.scss"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","jQuery","useSourceMap","list","toString","this","map","item","content","cssMapping","btoa","sourceMapping","sourceMap","base64","unescape","encodeURIComponent","JSON","stringify","data","concat","sourceURLs","sources","source","sourceRoot","join","cssWithMappingToString","mediaQuery","alreadyImportedModules","length","id","_i","push","listToStyles","parentId","styles","newStyles","part","css","media","parts","hasDocument","document","DEBUG","Error","stylesInDom","head","getElementsByTagName","singletonElement","singletonCounter","isProduction","noop","options","ssrIdKey","isOldIE","navigator","test","userAgent","toLowerCase","addStylesClient","_isProduction","_options","addStylesToDom","newList","mayRemove","domStyle","refs","j","addStyle","createStyleElement","styleElement","createElement","type","appendChild","obj","update","remove","querySelector","parentNode","removeChild","styleIndex","applyToSingletonTag","applyToTag","newObj","textStore","replaceText","index","replacement","filter","Boolean","styleSheet","cssText","cssNode","createTextNode","childNodes","insertBefore","setAttribute","ssrId","firstChild","window","OCA","Comments","template","templates","Handlebars","Templates","container","depth0","helpers","partials","helper","escapeExpression","actorId","helperMissing","nullContext","stack1","alias1","alias2","alias3","alias4","isUnread","program","isLong","isUserAuthor","actorDisplayName","timestamp","altDate","date","formattedMessage","iconClass","displayName","each","items","cancelText","tag","isEditMode","newMessagePlaceholder","message","submitText","countMessage","iconUrl","emptyResultLabel","moreLabel","OC","_","extend","Files","Client","PROPERTY_FILEID","NS_OWNCLOUD","PROPERTY_MESSAGE","PROPERTY_ACTORTYPE","PROPERTY_ACTORID","PROPERTY_ISUNREAD","PROPERTY_OBJECTID","PROPERTY_OBJECTTYPE","PROPERTY_ACTORDISPLAYNAME","PROPERTY_CREATIONDATETIME","PROPERTY_MENTIONS","CommentModel","Backbone","Model","sync","davSync","defaults","actorType","objectType","davProperties","parse","creationDateTime","objectId","mentions","_parseMentions","isUndefined","result","mention","localName","child","nextSibling","startsWith","textContent","CommentCollection","Collection","model","_objectType","_objectId","_endReached","_limit","initialize","models","url","linkToRemote","setObjectId","hasMoreResults","reset","_summaryModel","apply","arguments","fetchNext","self","body","success","resp","initial","set","trigger","getSummaryModel","CommentSummaryModel","updateReadMarker","save","readMarker","Date","toUTCString","PROPERTY_READMARKER","attrs","CommentsTabView","DetailTabView","className","_autoCompleteData","undefined","_commentsModifyMenu","events","_commentMaxLength","collection","on","_onRequest","_onEndRequest","_onAddModel","_onChangeModel","_commentMaxThreshold","bindAll","params","currentUser","getCurrentUser","uid","editCommentTemplate","commentTemplate","editTooltip","_isLong","getLabel","getIcon","setFileInfo","fileInfo","render","_initAutoComplete","$","find","silent","nextPage","$el","html","before","tooltip","$container","avatar","delegateEvents","_onTypeComment","autosize","focus","$target","limit","appConfig","comments","maxAutoCompleteResults","atwho","at","callbacks","remoteFilter","_onAutoComplete","highlighter","li","$li","sorter","q","displayTpl","escapeHTML","label","insertTpl","searchKey","je","_postRenderItem","target","parent","query","callback","_autoCompleteRequestTimer","clearTimeout","delay","_autoCompleteRequestCall","abort","ajax","linkToOCS","search","itemType","itemId","beforeSend","request","setRequestHeader","ocs","_formatItem","commentModel","getTime","Util","relativeModifiedDate","formatDate","_formatMessage","attributes","_toggleLoading","state","_loading","toggleClass","addClass","fileInfoModel","findWhere","$comment","eq","append","text","prop","oldMentions","fetch","isEqual","$updated","trim","previous","$row","closest","removeClass","$message","editionMode","inlineAvatars","context","hasClass","$this","attr","username","contactsMenu","modifyCommentMenu","CommentsModifyMenu","show","listenTo","ev","action","_onClickEditComment","_onClickDeleteComment","_postRenderMessage","user","editMode","replace","mentionId","indexOf","escape","regex","RegExp","_composeHTMLMention","mentionDisplayName","match","p1","OCP","plainToRich","preventDefault","commentId","commentToEdit","$formRow","after","replaceWith","clone","$field","len","$submitButton","count","max","limitExceeded","keyCode","shiftKey","click","_onClickComment","is","_onClickCloseComment","$loading","$moreIcon","destroy","error","Notification","showTemporary","_onClickShowMore","_onSubmitSuccess","$form","$submit","_commentBodyHTML2Plain","oldHtml","$inserted","userId","richToPlain","_onSubmitComment","e","$commentField","_onSubmitError","verb","wait","_onTextChange","empty","_onPaste","originalEvent","clipboardData","getData","execCommand","View","tagName","_scopes","_onClickAction","event","currentTarget","hideMenus","_context","active","offsetIcon","offset","offsetContainer","position","top","left","right","width","showMenu","PROPERTY_COMMENTS_UNREAD","FilesPlugin","ignoreLists","_formatCommentCount","imagePath","attach","fileList","registerTabView","oldGetWebdavProperties","_getWebdavProperties","props","filesClient","addFileInfoParser","response","commentsUnread","propStat","properties","parseInt","oldCreateRow","_createRow","fileData","$tr","fileActions","registerAction","$file","unread","mime","order","permissions","PERMISSION_READ","FileActions","TYPE_INLINE","actionSpec","isDefault","unreadComments","$actionLink","actionHandler","fileName","showDetailsView","oldElementToFile","elementToFile","Plugins","register","ActivityTabViewPlugin","prepareModelForDisplay","view","$overlay","_onClickCollapsedComment","Comment","fileAppLoaded","App","renderCommentResult","$nofilterresults","updateLegacyMimetype","$pathDiv","path","$avatar","authorName","authorId","comment","prepend","link","dir","dirname","generateUrl","scrollto","handleCommentClick","changeDirectory","scrollTo","mime_type","setFileList","setRenderer","setHandler","Search","a","define","returnExportsGlobal","b","g","h","$inputor","domInputor","setPos","getIEPosition","getPosition","getOffset","getOldIEPos","selection","createRange","createTextRange","moveToElementText","setEndPoint","getPos","range","cloneRange","selectNodeContents","setEnd","endContainer","endOffset","detach","getOldIEOffset","duplicate","moveStart","height","getBoundingClientRect","bottom","f","getSelection","setStart","insertNode","selectNode","scrollTop","scrollLeft","rangeCount","getRangeAt","getIEPos","parentElement","moveToBookmark","getBookmark","collapse","compareEndPoints","selectionStart","move","select","setSelectionRange","getIEOffset","boundingLeft","boundingTop","boundingHeight","val","slice","rect","css_attr","mirrorCss","zIndex","$mirror","contentEditable","pos","iframe","contentWindow","contentDocument","fn","caret","isPlainObject","EditableCaret","InputCaret","Utils","apis","ESC","TAB","ENTER","CTRL","A","P","N","LEFT","UP","RIGHT","DOWN","BACKSPACE","SPACE","beforeSave","arrayToDefaultHash","matcher","decodeURI","exec","String","atwho_order","sort","tplEval","beforeInsert","beforeReposition","afterMatchFailed","currentFlag","controllers","aliasMaps","setupRootElement","listen","createContainer","ownerDocument","defaultView","parentWindow","frameElement","debug","iframeAsRoot","controller","setContextFor","reg","alias","init","hide","isComposing","setTimeout","dispatch","onKeyup","onKeydown","expectedQueryCBId","getOpt","shutdown","off","lookUp","ctrlKey","visible","prev","next","highlighted","choose","app","setting","u","Math","random","substr","reload","callDefault","insertContentFor","renderView","isArray","catchQuery","_delayLookUp","_lookUp","now","previousCallTime","_stopDelayedCall","delayedCallTimeout","_generateQueryCBId","constructor","proxy","__super__","headPos","endPos","insert","change","_getRange","_setRange","setEndAfter","setStartAfter","setEndBefore","setStartBefore","_clearRange","ctrl_a_pressed","removeAllRanges","addRange","_movingEvent","which","_unwrap","unwrap","nodeValue","collapsed","startContainer","contents","last","nodeType","ELEMENT_NODE","startOffset","cloneContents","TEXT_NODE","previousSibling","siblings","surroundContents","el","first","getClientRects","storage","saved","load","_load","dataType","done","$elUl","children","timeoutID","bindEvent","charCodeAt","clientX","clientY","expr","filters","stopShowing","reposition","offsetTop","offsetHeight","animate","isNaN","isSelecting","setIframe","run","Array","headerTpl","functionOverrides","suffix","hideWithoutSuffix","startWithSpace","acceptSpaceBar","highlightFirst","maxLen","minLen","displayTimeout","spaceSelectsMatch","tabSelectsMatch","editableAtwhoQueryAttrs","scrollDuration","suspendOnComposing","lookUpOnClick","locals","add","default"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,OAIjBlC,EAAoBA,EAAoBmC,EAAI,G,gBClFrDhC,EAAOD,QAAUkC,Q,6BCQjBjC,EAAOD,QAAU,SAAUmC,GACzB,IAAIC,EAAO,GAmDX,OAjDAA,EAAKC,SAAW,WACd,OAAOC,KAAKC,KAAI,SAAUC,GACxB,IAAIC,EAkDV,SAAgCD,EAAML,GACpC,IAAIM,EAAUD,EAAK,IAAM,GAErBE,EAAaF,EAAK,GAEtB,IAAKE,EACH,OAAOD,EAGT,GAAIN,GAAgC,mBAATQ,KAAqB,CAC9C,IAAIC,GAWWC,EAXeH,EAa5BI,EAASH,KAAKI,SAASC,mBAAmBC,KAAKC,UAAUL,MACzDM,EAAO,+DAA+DC,OAAON,GAC1E,OAAOM,OAAOD,EAAM,QAdrBE,EAAaX,EAAWY,QAAQf,KAAI,SAAUgB,GAChD,MAAO,iBAAiBH,OAAOV,EAAWc,YAAYJ,OAAOG,EAAQ,UAEvE,MAAO,CAACd,GAASW,OAAOC,GAAYD,OAAO,CAACR,IAAgBa,KAAK,MAOrE,IAAmBZ,EAEbC,EACAK,EAPJ,MAAO,CAACV,GAASgB,KAAK,MAnEJC,CAAuBlB,EAAML,GAE3C,OAAIK,EAAK,GACA,UAAUY,OAAOZ,EAAK,GAAI,KAAKY,OAAOX,EAAS,KAGjDA,KACNgB,KAAK,KAKVrB,EAAKlC,EAAI,SAAUE,EAASuD,GACH,iBAAZvD,IAETA,EAAU,CAAC,CAAC,KAAMA,EAAS,MAK7B,IAFA,IAAIwD,EAAyB,GAEpB1D,EAAI,EAAGA,EAAIoC,KAAKuB,OAAQ3D,IAAK,CAEpC,IAAI4D,EAAKxB,KAAKpC,GAAG,GAEP,MAAN4D,IACFF,EAAuBE,IAAM,GAIjC,IAAK,IAAIC,EAAK,EAAGA,EAAK3D,EAAQyD,OAAQE,IAAM,CAC1C,IAAIvB,EAAOpC,EAAQ2D,GAKJ,MAAXvB,EAAK,IAAeoB,EAAuBpB,EAAK,MAC9CmB,IAAenB,EAAK,GACtBA,EAAK,GAAKmB,EACDA,IACTnB,EAAK,GAAK,IAAIY,OAAOZ,EAAK,GAAI,WAAWY,OAAOO,EAAY,MAG9DvB,EAAK4B,KAAKxB,MAKTJ,I,6BCxDM,SAAS6B,EAAcC,EAAU9B,GAG9C,IAFA,IAAI+B,EAAS,GACTC,EAAY,GACPlE,EAAI,EAAGA,EAAIkC,EAAKyB,OAAQ3D,IAAK,CACpC,IAAIsC,EAAOJ,EAAKlC,GACZ4D,EAAKtB,EAAK,GAIV6B,EAAO,CACTP,GAAII,EAAW,IAAMhE,EACrBoE,IALQ9B,EAAK,GAMb+B,MALU/B,EAAK,GAMfK,UALcL,EAAK,IAOhB4B,EAAUN,GAGbM,EAAUN,GAAIU,MAAMR,KAAKK,GAFzBF,EAAOH,KAAKI,EAAUN,GAAM,CAAEA,GAAIA,EAAIU,MAAO,CAACH,KAKlD,OAAOF,E,OCzBT,wCAQA,IAAIM,EAAkC,oBAAbC,SAEzB,GAAqB,oBAAVC,OAAyBA,QAC7BF,EACH,MAAM,IAAIG,MACV,2JAkBJ,IAAIC,EAAc,GAQdC,EAAOL,IAAgBC,SAASI,MAAQJ,SAASK,qBAAqB,QAAQ,IAC9EC,EAAmB,KACnBC,EAAmB,EACnBC,GAAe,EACfC,EAAO,aACPC,EAAU,KACVC,EAAW,kBAIXC,EAA+B,oBAAdC,WAA6B,eAAeC,KAAKD,UAAUE,UAAUC,eAE3E,SAASC,EAAiBzB,EAAU9B,EAAMwD,EAAeC,GACtEX,EAAeU,EAEfR,EAAUS,GAAY,GAEtB,IAAI1B,EAASF,EAAaC,EAAU9B,GAGpC,OAFA0D,EAAe3B,GAER,SAAiB4B,GAEtB,IADA,IAAIC,EAAY,GACP9F,EAAI,EAAGA,EAAIiE,EAAON,OAAQ3D,IAAK,CACtC,IAAIsC,EAAO2B,EAAOjE,IACd+F,EAAWpB,EAAYrC,EAAKsB,KACvBoC,OACTF,EAAUhC,KAAKiC,GAEbF,EAEFD,EADA3B,EAASF,EAAaC,EAAU6B,IAGhC5B,EAAS,GAEX,IAASjE,EAAI,EAAGA,EAAI8F,EAAUnC,OAAQ3D,IAAK,CACzC,IAAI+F,EACJ,GAAsB,KADlBA,EAAWD,EAAU9F,IACZgG,KAAY,CACvB,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAASzB,MAAMX,OAAQsC,IACzCF,EAASzB,MAAM2B,YAEVtB,EAAYoB,EAASnC,OAMpC,SAASgC,EAAgB3B,GACvB,IAAK,IAAIjE,EAAI,EAAGA,EAAIiE,EAAON,OAAQ3D,IAAK,CACtC,IAAIsC,EAAO2B,EAAOjE,GACd+F,EAAWpB,EAAYrC,EAAKsB,IAChC,GAAImC,EAAU,CACZA,EAASC,OACT,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAASzB,MAAMX,OAAQsC,IACzCF,EAASzB,MAAM2B,GAAG3D,EAAKgC,MAAM2B,IAE/B,KAAOA,EAAI3D,EAAKgC,MAAMX,OAAQsC,IAC5BF,EAASzB,MAAMR,KAAKoC,EAAS5D,EAAKgC,MAAM2B,KAEtCF,EAASzB,MAAMX,OAASrB,EAAKgC,MAAMX,SACrCoC,EAASzB,MAAMX,OAASrB,EAAKgC,MAAMX,YAEhC,CACL,IAAIW,EAAQ,GACZ,IAAS2B,EAAI,EAAGA,EAAI3D,EAAKgC,MAAMX,OAAQsC,IACrC3B,EAAMR,KAAKoC,EAAS5D,EAAKgC,MAAM2B,KAEjCtB,EAAYrC,EAAKsB,IAAM,CAAEA,GAAItB,EAAKsB,GAAIoC,KAAM,EAAG1B,MAAOA,KAK5D,SAAS6B,IACP,IAAIC,EAAe5B,SAAS6B,cAAc,SAG1C,OAFAD,EAAaE,KAAO,WACpB1B,EAAK2B,YAAYH,GACVA,EAGT,SAASF,EAAUM,GACjB,IAAIC,EAAQC,EACRN,EAAe5B,SAASmC,cAAc,SAAWxB,EAAW,MAAQqB,EAAI5C,GAAK,MAEjF,GAAIwC,EAAc,CAChB,GAAIpB,EAGF,OAAOC,EAOPmB,EAAaQ,WAAWC,YAAYT,GAIxC,GAAIhB,EAAS,CAEX,IAAI0B,EAAa/B,IACjBqB,EAAetB,IAAqBA,EAAmBqB,KACvDM,EAASM,EAAoBvF,KAAK,KAAM4E,EAAcU,GAAY,GAClEJ,EAASK,EAAoBvF,KAAK,KAAM4E,EAAcU,GAAY,QAGlEV,EAAeD,IACfM,EAASO,EAAWxF,KAAK,KAAM4E,GAC/BM,EAAS,WACPN,EAAaQ,WAAWC,YAAYT,IAMxC,OAFAK,EAAOD,GAEA,SAAsBS,GAC3B,GAAIA,EAAQ,CACV,GAAIA,EAAO7C,MAAQoC,EAAIpC,KACnB6C,EAAO5C,QAAUmC,EAAInC,OACrB4C,EAAOtE,YAAc6D,EAAI7D,UAC3B,OAEF8D,EAAOD,EAAMS,QAEbP,KAKN,IACMQ,EADFC,GACED,EAAY,GAET,SAAUE,EAAOC,GAEtB,OADAH,EAAUE,GAASC,EACZH,EAAUI,OAAOC,SAAShE,KAAK,QAI1C,SAASwD,EAAqBX,EAAcgB,EAAOV,EAAQF,GACzD,IAAIpC,EAAMsC,EAAS,GAAKF,EAAIpC,IAE5B,GAAIgC,EAAaoB,WACfpB,EAAaoB,WAAWC,QAAUN,EAAYC,EAAOhD,OAChD,CACL,IAAIsD,EAAUlD,SAASmD,eAAevD,GAClCwD,EAAaxB,EAAawB,WAC1BA,EAAWR,IAAQhB,EAAaS,YAAYe,EAAWR,IACvDQ,EAAWjE,OACbyC,EAAayB,aAAaH,EAASE,EAAWR,IAE9ChB,EAAaG,YAAYmB,IAK/B,SAASV,EAAYZ,EAAcI,GACjC,IAAIpC,EAAMoC,EAAIpC,IACVC,EAAQmC,EAAInC,MACZ1B,EAAY6D,EAAI7D,UAiBpB,GAfI0B,GACF+B,EAAa0B,aAAa,QAASzD,GAEjCa,EAAQ6C,OACV3B,EAAa0B,aAAa3C,EAAUqB,EAAI5C,IAGtCjB,IAGFyB,GAAO,mBAAqBzB,EAAUS,QAAQ,GAAK,MAEnDgB,GAAO,uDAAyD3B,KAAKI,SAASC,mBAAmBC,KAAKC,UAAUL,MAAgB,OAG9HyD,EAAaoB,WACfpB,EAAaoB,WAAWC,QAAUrD,MAC7B,CACL,KAAOgC,EAAa4B,YAClB5B,EAAaS,YAAYT,EAAa4B,YAExC5B,EAAaG,YAAY/B,SAASmD,eAAevD,O,6BC3NrD,qFAiBA6D,OAAOC,IAAIC,SAAWD,IAAIC,U,cCNpBD,IAAIC,WAIRD,IAAIC,SAAW,K,mPCfjB,IACMC,EAAgCC,EAAhCD,EAAWE,WAAWF,UAAUC,EAAYH,IAAIC,SAASI,UAAYL,IAAIC,SAASI,WAAa,IAC5F,QAAcH,EAAS,CAAC,EAAI,SAASI,EAAUC,EAAOC,EAAQC,EAAS1F,GAC5E,MAAO,WACT,EAAI,SAASuF,EAAUC,EAAOC,EAAQC,EAAS1F,GAC7C,MAAO,cACT,EAAI,SAASuF,EAAUC,EAAOC,EAAQC,EAAS1F,GAC7C,MAAO,gBACT,EAAI,SAASuF,EAAUC,EAAOC,EAAQC,EAAS1F,GAC7C,IAAI2F,EAEN,MAAO,kBACHJ,EAAUK,iBAAkK,mBAA/ID,EAAqF,OAA3EA,EAASF,EAAQI,UAAsB,MAAVL,EAAiBA,EAAOK,QAAUL,IAAmBG,EAASF,EAAQK,eAA+CH,EAAOzI,KAAe,MAAVsI,EAAiBA,EAAUD,EAAUQ,aAAe,GAAI,CAAC,KAAO,UAAU,KAAO,GAAG,KAAO/F,IAAS2F,GACzS,KACJ,EAAI,SAASJ,EAAUC,EAAOC,EAAQC,EAAS1F,GAC7C,MAAO,8IACT,GAAK,SAASuF,EAAUC,EAAOC,EAAQC,EAAS1F,GAC9C,MAAO,6CACT,SAAW,CAAC,EAAE,YAAY,KAAO,SAASuF,EAAUC,EAAOC,EAAQC,EAAS1F,GAC1E,IAAIgG,EAAQL,EAAQM,EAAiB,MAAVT,EAAiBA,EAAUD,EAAUQ,aAAe,GAAKG,EAAOT,EAAQK,cAAeK,EAAO,WAAYC,EAAOb,EAAUK,iBAExJ,MAAO,sBACmL,OAApLI,EAASP,EAAO,GAAOvI,KAAK+I,EAAkB,MAAVT,EAAiBA,EAAOa,SAAWb,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKD,EAAUe,QAAQ,EAAGtG,EAAM,GAAG,QAAUuF,EAAUvD,KAAK,KAAOhC,KAAkBgG,EAAS,KAClB,OAAlLA,EAASP,EAAO,GAAOvI,KAAK+I,EAAkB,MAAVT,EAAiBA,EAAOe,OAASf,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKD,EAAUe,QAAQ,EAAGtG,EAAM,GAAG,QAAUuF,EAAUvD,KAAK,KAAOhC,KAAkBgG,EAAS,IACpM,cACAI,EAA6G,EAApGT,EAA2E,OAAjEA,EAASF,EAAQ9E,KAAiB,MAAV6E,EAAiBA,EAAO7E,GAAK6E,IAAmBG,EAASO,KAA2BC,EAASR,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,KAAK,KAAO,GAAG,KAAOjG,IAAS2F,GAClM,yDAC0L,OAAxLK,EAASP,EAAO,GAAOvI,KAAK+I,EAAkB,MAAVT,EAAiBA,EAAOgB,aAAehB,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKD,EAAUe,QAAQ,EAAGtG,EAAM,GAAG,QAAUuF,EAAUvD,KAAK,KAAOhC,KAAkBgG,EAAS,IAC1M,MACqL,OAAnLA,EAASP,EAAO,GAAOvI,KAAK+I,EAAkB,MAAVT,EAAiBA,EAAOK,QAAUL,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKD,EAAUe,QAAQ,EAAGtG,EAAM,GAAG,QAAUuF,EAAUvD,KAAK,KAAOhC,KAAkBgG,EAAS,IACrM,oCAC0L,OAAxLA,EAASP,EAAO,GAAOvI,KAAK+I,EAAkB,MAAVT,EAAiBA,EAAOgB,aAAehB,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKD,EAAUe,QAAQ,EAAGtG,EAAM,GAAG,QAAUuF,EAAUvD,KAAK,KAAOhC,KAAkBgG,EAAS,IAC1M,KACAI,EAAyI,EAAhIT,EAAuG,OAA7FA,EAASF,EAAQgB,mBAA+B,MAAVjB,EAAiBA,EAAOiB,iBAAmBjB,IAAmBG,EAASO,KAA2BC,EAASR,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,mBAAmB,KAAO,GAAG,KAAOjG,IAAS2F,GAC5O,YAC0L,OAAxLK,EAASP,EAAO,GAAOvI,KAAK+I,EAAkB,MAAVT,EAAiBA,EAAOgB,aAAehB,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKD,EAAUe,QAAQ,EAAGtG,EAAM,GAAG,QAAUuF,EAAUvD,KAAK,KAAOhC,KAAkBgG,EAAS,IAC1M,6EACAI,EAA2H,EAAlHT,EAAyF,OAA/EA,EAASF,EAAQiB,YAAwB,MAAVlB,EAAiBA,EAAOkB,UAAYlB,IAAmBG,EAASO,KAA2BC,EAASR,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,YAAY,KAAO,GAAG,KAAOjG,IAAS2F,GACvN,YACAS,EAAuH,EAA9GT,EAAqF,OAA3EA,EAASF,EAAQkB,UAAsB,MAAVnB,EAAiBA,EAAOmB,QAAUnB,IAAmBG,EAASO,KAA2BC,EAASR,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,UAAU,KAAO,GAAG,KAAOjG,IAAS2F,GACjN,KACAS,EAAiH,EAAxGT,EAA+E,OAArEA,EAASF,EAAQmB,OAAmB,MAAVpB,EAAiBA,EAAOoB,KAAOpB,IAAmBG,EAASO,KAA2BC,EAASR,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,OAAO,KAAO,GAAG,KAAOjG,IAAS2F,GACxM,6CAC6P,OAA3PK,EAA2I,EAAhIL,EAAuG,OAA7FA,EAASF,EAAQoB,mBAA+B,MAAVrB,EAAiBA,EAAOqB,iBAAmBrB,IAAmBG,EAASO,KAA2BC,EAASR,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,mBAAmB,KAAO,GAAG,KAAOjG,IAAS2F,GAAoBK,EAAS,IAC7Q,YACqL,OAAnLA,EAASP,EAAO,GAAOvI,KAAK+I,EAAkB,MAAVT,EAAiBA,EAAOe,OAASf,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKD,EAAUe,QAAQ,GAAItG,EAAM,GAAG,QAAUuF,EAAUvD,KAAK,KAAOhC,KAAkBgG,EAAS,IACrM,WACJ,SAAU,IACZZ,EAAS,mBAAyBD,EAAS,CAAC,EAAI,SAASI,EAAUC,EAAOC,EAAQC,EAAS1F,GACvF,IAAIgG,EAAQL,EAAQM,EAAiB,MAAVT,EAAiBA,EAAUD,EAAUQ,aAAe,GAAKG,EAAOT,EAAQK,cAAkCM,EAAOb,EAAUK,iBAExJ,MAAO,sDACHQ,EAHuH,aAGN,EAAxGT,EAA+E,OAArEA,EAASF,EAAQnI,OAAmB,MAAVkI,EAAiBA,EAAOlI,KAAOkI,IAAmBG,EAASO,GAAoCP,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,OAAO,KAAO,GAAG,KAAOjG,IAAS2F,GACxM,4BACAS,EALuH,aAKN,EAAxGT,EAA+E,OAArEA,EAASF,EAAQnI,OAAmB,MAAVkI,EAAiBA,EAAOlI,KAAOkI,IAAmBG,EAASO,GAAoCP,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,OAAO,KAAO,GAAG,KAAOjG,IAAS2F,GACxM,QACsM,OAApMK,EAASP,EAAO,GAAOvI,KAAK+I,EAAkB,MAAVT,EAAiBA,EAAOsB,UAAYtB,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKD,EAAUe,QAAQ,EAAGtG,EAAM,GAAG,QAAUuF,EAAUe,QAAQ,EAAGtG,EAAM,GAAG,KAAOA,KAAkBgG,EAAS,IACtN,iBACAI,EATuH,aASQ,EAAtHT,EAA6F,OAAnFA,EAASF,EAAQsB,cAA0B,MAAVvB,EAAiBA,EAAOuB,YAAcvB,IAAmBG,EAASO,GAAoCP,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,cAAc,KAAO,GAAG,KAAOjG,IAAS2F,GAC7N,oCACJ,EAAI,SAASJ,EAAUC,EAAOC,EAAQC,EAAS1F,GAC7C,IAAI2F,EAEN,MAAO,+BACHJ,EAAUK,iBAAsK,mBAAnJD,EAAyF,OAA/EA,EAASF,EAAQqB,YAAwB,MAAVtB,EAAiBA,EAAOsB,UAAYtB,IAAmBG,EAASF,EAAQK,eAA+CH,EAAOzI,KAAe,MAAVsI,EAAiBA,EAAUD,EAAUQ,aAAe,GAAI,CAAC,KAAO,YAAY,KAAO,GAAG,KAAO/F,IAAS2F,GAC/S,eACJ,EAAI,SAASJ,EAAUC,EAAOC,EAAQC,EAAS1F,GAC7C,MAAO,6CACT,SAAW,CAAC,EAAE,YAAY,KAAO,SAASuF,EAAUC,EAAOC,EAAQC,EAAS1F,GAC1E,IAAIgG,EAEN,MAAO,UACkO,OAAnOA,EAASP,EAAQuB,KAAK9J,KAAe,MAAVsI,EAAiBA,EAAUD,EAAUQ,aAAe,GAAe,MAAVP,EAAiBA,EAAOyB,MAAQzB,EAAQ,CAAC,KAAO,OAAO,KAAO,GAAG,GAAKD,EAAUe,QAAQ,EAAGtG,EAAM,GAAG,QAAUuF,EAAUvD,KAAK,KAAOhC,KAAkBgG,EAAS,IACrP,WACJ,SAAU,IACZZ,EAAS,aAAmBD,EAAS,CAAC,EAAI,SAASI,EAAUC,EAAOC,EAAQC,EAAS1F,GACjF,IAAI2F,EAEN,MAAO,sHACHJ,EAAUK,iBAAwK,mBAArJD,EAA2F,OAAjFA,EAASF,EAAQyB,aAAyB,MAAV1B,EAAiBA,EAAO0B,WAAa1B,IAAmBG,EAASF,EAAQK,eAA+CH,EAAOzI,KAAe,MAAVsI,EAAiBA,EAAUD,EAAUQ,aAAe,GAAI,CAAC,KAAO,aAAa,KAAO,GAAG,KAAO/F,IAAS2F,GAClT,0BACJ,SAAW,CAAC,EAAE,YAAY,KAAO,SAASJ,EAAUC,EAAOC,EAAQC,EAAS1F,GAC1E,IAAIgG,EAAQL,EAAQM,EAAiB,MAAVT,EAAiBA,EAAUD,EAAUQ,aAAe,GAAKG,EAAOT,EAAQK,cAAeK,EAAO,WAAYC,EAAOb,EAAUK,iBAExJ,MAAO,IACHQ,EAA+G,EAAtGT,EAA6E,OAAnEA,EAASF,EAAQ0B,MAAkB,MAAV3B,EAAiBA,EAAO2B,IAAM3B,IAAmBG,EAASO,KAA2BC,EAASR,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,MAAM,KAAO,GAAG,KAAOjG,IAAS2F,GACrM,2CACAS,EAA6G,EAApGT,EAA2E,OAAjEA,EAASF,EAAQ9E,KAAiB,MAAV6E,EAAiBA,EAAO7E,GAAK6E,IAAmBG,EAASO,KAA2BC,EAASR,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,KAAK,KAAO,GAAG,KAAOjG,IAAS2F,GAClM,qFACAS,EAAuH,EAA9GT,EAAqF,OAA3EA,EAASF,EAAQI,UAAsB,MAAVL,EAAiBA,EAAOK,QAAUL,IAAmBG,EAASO,KAA2BC,EAASR,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,UAAU,KAAO,GAAG,KAAOjG,IAAS2F,GACjN,iDACAS,EAAyI,EAAhIT,EAAuG,OAA7FA,EAASF,EAAQgB,mBAA+B,MAAVjB,EAAiBA,EAAOiB,iBAAmBjB,IAAmBG,EAASO,KAA2BC,EAASR,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,mBAAmB,KAAO,GAAG,KAAOjG,IAAS2F,GAC5O,YACwL,OAAtLK,EAASP,EAAO,GAAOvI,KAAK+I,EAAkB,MAAVT,EAAiBA,EAAO4B,WAAa5B,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKD,EAAUe,QAAQ,EAAGtG,EAAM,GAAG,QAAUuF,EAAUvD,KAAK,KAAOhC,KAAkBgG,EAAS,IACxM,gHACAI,EAAmJ,EAA1IT,EAAiH,OAAvGA,EAASF,EAAQ4B,wBAAoC,MAAV7B,EAAiBA,EAAO6B,sBAAwB7B,IAAmBG,EAASO,KAA2BC,EAASR,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,wBAAwB,KAAO,GAAG,KAAOjG,IAAS2F,GAC3P,KACAS,EAAuH,EAA9GT,EAAqF,OAA3EA,EAASF,EAAQ6B,UAAsB,MAAV9B,EAAiBA,EAAO8B,QAAU9B,IAAmBG,EAASO,KAA2BC,EAASR,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,UAAU,KAAO,GAAG,KAAOjG,IAAS2F,GACjN,4FACAS,EAA6H,EAApHT,EAA2F,OAAjFA,EAASF,EAAQ8B,aAAyB,MAAV/B,EAAiBA,EAAO+B,WAAa/B,IAAmBG,EAASO,KAA2BC,EAASR,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,aAAa,KAAO,GAAG,KAAOjG,IAAS2F,GAC1N,sFACAS,EAA+G,EAAtGT,EAA6E,OAAnEA,EAASF,EAAQ0B,MAAkB,MAAV3B,EAAiBA,EAAO2B,IAAM3B,IAAmBG,EAASO,KAA2BC,EAASR,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,MAAM,KAAO,GAAG,KAAOjG,IAAS2F,GACrM,OACJ,SAAU,IACZP,EAAS,YAAkBD,EAAS,CAAC,SAAW,CAAC,EAAE,YAAY,KAAO,SAASI,EAAUC,EAAOC,EAAQC,EAAS1F,GAC7G,IAAI2F,EAAQM,EAAiB,MAAVT,EAAiBA,EAAUD,EAAUQ,aAAe,GAAKG,EAAOT,EAAQK,cAAkCM,EAAOb,EAAUK,iBAEhJ,MAAO,qDACHQ,EAH+G,aAGkB,EAAxHT,EAA+F,OAArFA,EAASF,EAAQ+B,eAA2B,MAAVhC,EAAiBA,EAAOgC,aAAehC,IAAmBG,EAASO,GAAoCP,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,eAAe,KAAO,GAAG,KAAOjG,IAAS2F,GAChO,wCACAS,EAL+G,aAKQ,EAA9GT,EAAqF,OAA3EA,EAASF,EAAQgC,UAAsB,MAAVjC,EAAiBA,EAAOiC,QAAUjC,IAAmBG,EAASO,GAAoCP,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,UAAU,KAAO,GAAG,KAAOjG,IAAS2F,GACjN,eACJ,SAAU,IACZP,EAAS,KAAWD,EAAS,CAAC,SAAW,CAAC,EAAE,YAAY,KAAO,SAASI,EAAUC,EAAOC,EAAQC,EAAS1F,GACtG,IAAI2F,EAAQM,EAAiB,MAAVT,EAAiBA,EAAUD,EAAUQ,aAAe,GAAKG,EAAOT,EAAQK,cAAkCM,EAAOb,EAAUK,iBAEhJ,MAAO,yGACHQ,EAH+G,aAG0B,EAAhIT,EAAuG,OAA7FA,EAASF,EAAQiC,mBAA+B,MAAVlC,EAAiBA,EAAOkC,iBAAmBlC,IAAmBG,EAASO,GAAoCP,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,mBAAmB,KAAO,GAAG,KAAOjG,IAAS2F,GAC5O,mEACAS,EAL+G,aAKY,EAAlHT,EAAyF,OAA/EA,EAASF,EAAQkC,YAAwB,MAAVnC,EAAiBA,EAAOmC,UAAYnC,IAAmBG,EAASO,GAAoCP,EAAOzI,KAAK+I,EAAO,CAAC,KAAO,YAAY,KAAO,GAAG,KAAOjG,IAAS2F,GACvN,mGACJ,SAAU,K,eC/GZ,SAAUiC,EAAI3C,GAEb4C,EAAEC,OAAOF,EAAGG,MAAMC,OAAQ,CACzBC,gBAAiB,IAAML,EAAGG,MAAMC,OAAOE,YAAc,MACrDC,iBAAkB,IAAMP,EAAGG,MAAMC,OAAOE,YAAc,WACtDE,mBAAoB,IAAMR,EAAGG,MAAMC,OAAOE,YAAc,aACxDG,iBAAkB,IAAMT,EAAGG,MAAMC,OAAOE,YAAc,WACtDI,kBAAmB,IAAMV,EAAGG,MAAMC,OAAOE,YAAc,YACvDK,kBAAmB,IAAMX,EAAGG,MAAMC,OAAOE,YAAc,YACvDM,oBAAqB,IAAMZ,EAAGG,MAAMC,OAAOE,YAAc,cACzDO,0BAA2B,IAAMb,EAAGG,MAAMC,OAAOE,YAAc,oBAC/DQ,0BAA2B,IAAMd,EAAGG,MAAMC,OAAOE,YAAc,oBAC/DS,kBAAmB,IAAMf,EAAGG,MAAMC,OAAOE,YAAc,cAUxD,IAAIU,EAAehB,EAAGiB,SAASC,MAAMhB,OACc,CACjDiB,KAAMnB,EAAGiB,SAASG,QAElBC,SAAU,CACTC,UAAW,QACXC,WAAY,SAGbC,cAAe,CACd,GAAMxB,EAAGG,MAAMC,OAAOC,gBACtB,QAAWL,EAAGG,MAAMC,OAAOG,iBAC3B,UAAaP,EAAGG,MAAMC,OAAOI,mBAC7B,QAAWR,EAAGG,MAAMC,OAAOK,iBAC3B,iBAAoBT,EAAGG,MAAMC,OAAOS,0BACpC,iBAAoBb,EAAGG,MAAMC,OAAOU,0BACpC,WAAcd,EAAGG,MAAMC,OAAOQ,oBAC9B,SAAYZ,EAAGG,MAAMC,OAAOO,kBAC5B,SAAYX,EAAGG,MAAMC,OAAOM,kBAC5B,SAAYV,EAAGG,MAAMC,OAAOW,mBAG7BU,MAAO,SAASrJ,GACf,MAAO,CACNW,GAAIX,EAAKW,GACT2G,QAAStH,EAAKsH,QACd4B,UAAWlJ,EAAKkJ,UAChBrD,QAAS7F,EAAK6F,QACdY,iBAAkBzG,EAAKyG,iBACvB6C,iBAAkBtJ,EAAKsJ,iBACvBH,WAAYnJ,EAAKmJ,WACjBI,SAAUvJ,EAAKuJ,SACflD,SAA6B,SAAlBrG,EAAKqG,SAChBmD,SAAUrK,KAAKsK,eAAezJ,EAAKwJ,YAIrCC,eAAgB,SAASD,GACxB,GAAI3B,EAAE6B,YAAYF,GACjB,MAAO,GAER,IAAIG,EAAS,GACb,IAAK,IAAI5M,KAAKyM,EAAU,CACvB,IAAII,EAAUJ,EAASzM,GACvB,IAAI8K,EAAE6B,YAAYE,EAAQC,YAAoC,YAAtBD,EAAQC,UAAhD,CAGAF,EAAO5M,GAAK,GACZ,IAAK,IAAI+M,EAAQF,EAAQ7E,WAAY+E,EAAOA,EAAQA,EAAMC,aACrDlC,EAAE6B,YAAYI,EAAMD,YAAeC,EAAMD,UAAUG,WAAW,aAGlEL,EAAO5M,GAAG+M,EAAMD,WAAaC,EAAMG,cAGrC,OAAON,KAIV1E,EAAIC,SAAS0D,aAAeA,EAjF7B,CAkFGhB,GAAI3C,M,eCjFP,SAAU2C,EAAI3C,GASb,IAAIiF,EAAoBtC,EAAGiB,SAASsB,WAAWrC,OACS,CAEtDiB,KAAMnB,EAAGiB,SAASG,QAElBoB,MAAOnF,EAAIC,SAAS0D,aAOpByB,YAAa,QAObC,UAAW,KAOXC,aAAa,EAObC,OAAQ,GAQRC,WAAY,SAASC,EAAQzI,IAC5BA,EAAUA,GAAW,IACTkH,aACXhK,KAAKkL,YAAcpI,EAAQkH,YAExBlH,EAAQsH,WACXpK,KAAKmL,UAAYrI,EAAQsH,WAI3BoB,IAAK,WACJ,OAAO/C,EAAGgD,aAAa,OAAS,aAC9B/K,mBAAmBV,KAAKkL,aAAe,IACvCxK,mBAAmBV,KAAKmL,WAAa,KAGxCO,YAAa,SAAStB,GACrBpK,KAAKmL,UAAYf,GAGlBuB,eAAgB,WACf,OAAQ3L,KAAKoL,aAGdQ,MAAO,WAGN,OAFA5L,KAAKoL,aAAc,EACnBpL,KAAK6L,cAAgB,KACdpD,EAAGiB,SAASsB,WAAWxL,UAAUoM,MAAME,MAAM9L,KAAM+L,YAM3DC,UAAW,SAASlJ,GACnB,IAAImJ,EAAOjM,KACX,IAAKA,KAAK2L,iBACT,OAAO,KAGR,IAAIO,EAAO,kIAGWlM,KAAKqL,OAAS,GAAK,+BACnBrL,KAAKuB,OAAS,wCAIhC4K,GADJrJ,EAAUA,GAAW,IACCqJ,QAwBtB,OAvBArJ,EAAU4F,EAAEC,OAAO,CAClBrE,QAAQ,EACR4F,OAAO,EACPrJ,KAAMqL,EACNjC,cAAec,EAAkBvL,UAAUyL,MAAMzL,UAAUyK,cAC3DkC,QAAS,SAASC,GAQjB,GAPIA,EAAK7K,QAAU0K,EAAKZ,OAEvBY,EAAKb,aAAc,EAGnBgB,EAAO1D,EAAE2D,QAAQD,IAEbH,EAAKK,IAAIF,EAAMtJ,GACnB,OAAO,EAEJqJ,GACHA,EAAQL,MAAM,KAAMC,WAErBE,EAAKM,QAAQ,OAAQ,SAAUN,EAAMnJ,KAEpCA,GAEI9C,KAAK4J,KAAK,SAAU5J,KAAM8C,IAQlC0J,gBAAiB,WAOhB,OANKxM,KAAK6L,gBACT7L,KAAK6L,cAAgB,IAAI/F,EAAIC,SAAS0G,oBAAoB,CACzDjL,GAAIxB,KAAKmL,UACTnB,WAAYhK,KAAKkL,eAGZlL,KAAK6L,eASba,iBAAkB,SAASjF,EAAM3E,GAGhC,OAFAA,EAAUA,GAAW,GAEd9C,KAAKwM,kBAAkBG,KAAK,CAClCC,YAAanF,GAAQ,IAAIoF,MAAQC,eAC/BhK,MAINgD,EAAIC,SAASgF,kBAAoBA,EA1JlC,CA2JGtC,GAAI3C,M,eC5JP,SAAU2C,EAAI3C,GAEb4C,EAAEC,OAAOF,EAAGG,MAAMC,OAAQ,CACzBkE,oBAAqB,IAAMtE,EAAGG,MAAMC,OAAOE,YAAc,gBAW1D,IAAI0D,EAAsBhE,EAAGiB,SAASC,MAAMhB,OACc,CACxDiB,KAAMnB,EAAGiB,SAASG,QAOlBqB,YAAa,QAObC,UAAW,KAEXlB,cAAe,CACd,WAAcxB,EAAGG,MAAMC,OAAOkE,qBAW/BzB,WAAY,SAAS0B,EAAOlK,IAC3BA,EAAUA,GAAW,IACTkH,aACXhK,KAAKkL,YAAcpI,EAAQkH,aAI7BwB,IAAK,WACJ,OAAO/C,EAAGgD,aAAa,OAAS,aAC9B/K,mBAAmBV,KAAKkL,aAAe,IACvCxK,mBAAmBV,KAAKwB,IAAM,OAInCsE,EAAIC,SAAS0G,oBAAsBA,EA1DpC,CA2DGhE,GAAI3C,M,eCxDP,SAAU2C,EAAI3C,GAKb,IAAImH,EAAkBnH,EAAI8C,MAAMsE,cAAcvE,OACQ,CACpDnH,GAAI,kBACJ2L,UAAW,sBACXC,uBAAmBC,EACnBC,yBAAqBD,EAErBE,OAAQ,CACP,yBAA0B,mBAC1B,kBAAmB,mBACnB,gBAAiB,uBACjB,iBAAkB,kBAClB,oBAAqB,gBACrB,qBAAsB,gBACtB,oBAAqB,gBACrB,oBAAqB,YAGtBC,kBAAmB,IAEnBlC,WAAY,WACXxF,EAAI8C,MAAMsE,cAAc1N,UAAU8L,WAAWQ,MAAM9L,KAAM+L,WACzD/L,KAAKyN,WAAa,IAAI3H,EAAIC,SAASgF,kBACnC/K,KAAKyN,WAAWC,GAAG,UAAW1N,KAAK2N,WAAY3N,MAC/CA,KAAKyN,WAAWC,GAAG,OAAQ1N,KAAK4N,cAAe5N,MAC/CA,KAAKyN,WAAWC,GAAG,MAAO1N,KAAK6N,YAAa7N,MAC5CA,KAAKyN,WAAWC,GAAG,iBAAkB1N,KAAK8N,eAAgB9N,MAE1DA,KAAK+N,qBAAgD,GAAzB/N,KAAKwN,kBAGjC9E,EAAEsF,QAAQhO,KAAM,iBAAkB,oBAAqB,oBAGxDgG,SAAU,SAASiI,GAClB,IAAIC,EAAczF,EAAG0F,iBACrB,OAAOrI,EAAIC,SAASI,UAAb,KAA+BuC,EAAEC,OAAO,CAC9CjC,QAASwH,EAAYE,IACrB9G,iBAAkB4G,EAAYtG,aAC5BqG,KAGJI,oBAAqB,SAASJ,GAC7B,IAAIC,EAAczF,EAAG0F,iBACrB,OAAOrI,EAAIC,SAASI,UAAb,aAAuCuC,EAAEC,OAAO,CACtDjC,QAASwH,EAAYE,IACrB9G,iBAAkB4G,EAAYtG,YAC9BM,sBAAuBpJ,EAAE,WAAY,iBACrCsJ,WAAYtJ,EAAE,WAAY,QAC1BiJ,WAAYjJ,EAAE,WAAY,UAC1BkJ,IAAK,MACHiG,KAGJK,gBAAiB,SAASL,GAazB,MANyB,mBANzBA,EAASvF,EAAEC,OAAO,CACjB4F,YAAazP,EAAE,WAAY,gBAC3BuI,aAAcoB,EAAG0F,iBAAiBC,MAAQH,EAAOvH,QACjDU,OAAQpH,KAAKwO,QAAQP,EAAO9F,UAC1B8F,IAEQlE,YAEVkE,EAAOvH,QAAU,KACjBuH,EAAO3G,iBAAmBxI,EAAE,WAAY,mBAGlCgH,EAAIC,SAASI,UAAb,QAAkC8H,IAG1CQ,SAAU,WACT,OAAO3P,EAAE,WAAY,aAGtB4P,QAAS,WACR,MAAO,gBAGRC,YAAa,SAASC,GACjBA,GACH5O,KAAKiL,MAAQ2D,EAEb5O,KAAK6O,SACL7O,KAAK8O,kBAAkBC,EAAE,oBAAoBC,KAAK,6BAClDhP,KAAKyN,WAAW/B,YAAY1L,KAAKiL,MAAMzJ,IAEvCxB,KAAKyN,WAAW7B,MAAM,GAAI,CAAEqD,QAAQ,IACpCjP,KAAKkP,aAELlP,KAAKiL,MAAQ,KACbjL,KAAK6O,SACL7O,KAAKyN,WAAW7B,UAIlBiD,OAAQ,WACP7O,KAAKmP,IAAIC,KAAKpP,KAAKgG,SAAS,CAC3BuC,iBAAkBzJ,EAAE,WAAY,4CAChC0J,UAAW1J,EAAE,WAAY,sBAE1BkB,KAAKmP,IAAIH,KAAK,aAAaK,OAAOrP,KAAKqO,oBAAoB,CAAErG,IAAK,SAClEhI,KAAKmP,IAAIH,KAAK,gBAAgBM,UAC9BtP,KAAKuP,WAAavP,KAAKmP,IAAIH,KAAK,eAChChP,KAAKmP,IAAIH,KAAK,WAAWQ,OAAO/G,EAAG0F,iBAAiBC,IAAK,IACzDpO,KAAKyP,iBACLzP,KAAKmP,IAAIH,KAAK,YAAYtB,GAAG,uBAAwB1N,KAAK0P,gBAE1DC,SAAS3P,KAAKmP,IAAIH,KAAK,4BACvBhP,KAAKmP,IAAIH,KAAK,4BAA4BY,SAG3Cd,kBAAmB,SAASe,GAC3B,IAAIlQ,EAAIK,KACJ8P,EAAQ,GACPpH,EAAE6B,YAAY9B,EAAGsH,UAAUC,YAC/BF,EAAQrH,EAAGsH,UAAUC,SAASC,wBAE/BJ,EAAQK,MAAM,CACbC,GAAI,IACJL,MAAOA,EACPM,UAAW,CACVC,aAAc1Q,EAAE2Q,gBAChBC,YAAa,SAASC,GAGrB,IAAIC,EAAM1B,EAAEyB,GAEZ,OADAC,EAAIzB,KAAK,WAAWQ,YAAOnC,EAAW,IAC/BoD,GAERC,OAAQ,SAASC,EAAG7I,GAAS,OAAOA,IAErC8I,WAAY,SAAS1Q,GACpB,MAAO,6EAGkB2Q,WAAW3Q,EAAKsB,IAAM,gBAC1BqP,WAAW3Q,EAAKsB,IAAM,6BACTqP,WAAW3Q,EAAK4Q,OAAS,oBAE3CD,WAAW3Q,EAAK4Q,OAAS,yBAG1CC,UAAW,SAAS7Q,GACnB,MAAO,yEAGkB2Q,WAAW3Q,EAAKsB,IAAM,gBAC1BqP,WAAW3Q,EAAKsB,IAAM,6BACTqP,WAAW3Q,EAAK4Q,OAAS,oBAE3CD,WAAW3Q,EAAK4Q,OAAS,oBAG1CE,UAAW,UAEZnB,EAAQnC,GAAG,kBAAkB,SAASuD,EAAI9B,GAEzCxP,EAAEuR,gBAIDnC,EAAEkC,EAAGE,QAAQnC,KACZ,uBAAyBG,EAAIH,KAAK,mBAAmBnO,KAAK,YAAc,MACvEuQ,UAPe,OAapBd,gBAAiB,SAASe,EAAOC,GAChC,IAAI3R,EAAIK,KACH0I,EAAE6B,YAAYvK,KAAKuR,4BACvBC,aAAaxR,KAAKuR,2BAEnBvR,KAAKuR,0BAA4B7I,EAAE+I,OAAM,WACnC/I,EAAE6B,YAAYvK,KAAK0R,2BACvB1R,KAAK0R,yBAAyBC,QAE/B3R,KAAK0R,yBAA2B3C,EAAE6C,KAAK,CACtCpG,IAAK/C,EAAGoJ,UAAU,OAAQ,GAAK,mBAC/BhR,KAAM,CACLiR,OAAQT,EACRU,SAAU,QACVC,OAAQrS,EAAEsL,MAAMxM,IAAI,MACpBiS,OAAQ,8BACRZ,MAAOrH,EAAGsH,UAAUC,SAASC,wBAE9BgC,WAAY,SAASC,GACpBA,EAAQC,iBAAiB,SAAU,qBAEpChG,QAAS,SAAS3B,GACjB8G,EAAS9G,EAAO4H,IAAIvR,WAGpB,MAGJwR,YAAa,SAASC,GACrB,IAAI/K,EAAY,IAAIsF,KAAKyF,EAAa7T,IAAI,qBAAqB8T,UAO/D,OANW7J,EAAEC,OAAO,CACnBpB,UAAWA,EACXE,KAAMgB,EAAG+J,KAAKC,qBAAqBlL,GACnCC,QAASiB,EAAG+J,KAAKE,WAAWnL,GAC5BG,iBAAkB1H,KAAK2S,eAAeL,EAAa7T,IAAI,WAAY6T,EAAa7T,IAAI,cAClF6T,EAAaM,aAIjBC,eAAgB,SAASC,GACxB9S,KAAK+S,SAAWD,EAChB9S,KAAKmP,IAAIH,KAAK,YAAYgE,YAAY,UAAWF,IAGlDnF,WAAY,SAASzJ,GACP,WAATA,IACHlE,KAAK6S,gBAAe,GACpB7S,KAAKmP,IAAIH,KAAK,aAAaiE,SAAS,YAItCrF,cAAe,SAAS1J,GACvB,IAAIgP,EAAgBlT,KAAKiL,OACzBjL,KAAK6S,gBAAe,GACpB7S,KAAKmP,IAAIH,KAAK,iBAAiBgE,YAAY,WAAYhT,KAAKyN,WAAWlM,QACvEvB,KAAKmP,IAAIH,KAAK,aAAagE,YAAY,UAAWhT,KAAKyN,WAAW9B,kBAErD,WAATzH,KAKqBlE,KAAKyN,WAAW0F,UAAU,CAAEjM,UAAU,KAG9DlH,KAAKyN,WAAWf,iBACf,KACA,CACCP,QAAS,WACR+G,EAAc5G,IAAI,iBAAkB,MAKxCtM,KAAKmP,IAAIH,KAAK,4BAA4BY,UAa3C/B,YAAa,SAAS5C,EAAOwC,EAAY3K,GAGxC,IAAIsQ,EAAWrE,EAAE/O,KAAKsO,gBAAgBtO,KAAKqS,YAAYpH,MAClDvC,EAAE6B,YAAYzH,EAAQqN,KAAO1C,EAAWlM,OAAS,EACrDvB,KAAKuP,WAAWP,KAAK,MAAMqE,GAAGvQ,EAAQqN,IAAId,OAAO+D,GAEjDpT,KAAKuP,WAAW+D,OAAOF,GAExBpT,KAAKkR,gBAAgBkC,GACrBrE,EAAE,oBAAoBC,KAAK,+BAA+BuE,KAAK,IAAIC,KAAK,mBAAmB,GAI3F,IAAIC,EAAcxI,EAAMxM,IAAI,YACxBwN,EAAOjM,KACXiL,EAAMyI,MAAM,CACXvH,QAAS,SAASlB,GACjB,IAAIvC,EAAEiL,QAAQF,EAAaxI,EAAMxM,IAAI,aAArC,CAIA,IAAImV,EAAW7E,EAAE9C,EAAKqC,gBAAgBrC,EAAKoG,YAAYpH,KACvDmI,EAAShE,KAAKwE,EAASxE,QACvBnD,EAAKiF,gBAAgBkC,QAYxBtF,eAAgB,SAAS7C,GACxB,GAAIA,EAAMxM,IAAI,WAAWoV,SAAW5I,EAAM6I,SAAS,WAAWD,OAA9D,CAIA,IACIE,EADQ/T,KAAKuP,WAAWP,KAAK,qBAAuB/D,EAAMzJ,GAAK,WAClDwS,QAAQ,YACrBnE,EAAUkE,EAAKlT,KAAK,aACxB,IAAI6H,EAAE6B,YAAYsF,GAAlB,CAIA,IAAI5D,EAAOjM,KAIXiL,EAAMyI,MAAM,CACXvH,QAAS,SAASlB,GACjB4E,EAAQoE,YAAY,UACpBF,EAAKzP,SAEL,IAAI4P,EAAWrE,EAAQb,KAAK,YAC5BkF,EACE9E,KAAKnD,EAAK0G,eAAe1H,EAAMxM,IAAI,WAAYwM,EAAMxM,IAAI,cACzDuQ,KAAK,WACLnH,MAAK,WAAakH,EAAE/O,MAAMwP,YAC5BvD,EAAKiF,gBAAgBgD,SAKxBhD,gBAAiB,SAAS/B,EAAKgF,GAC9BhF,EAAIH,KAAK,gBAAgBM,UACzB,IAAI8E,EAAgBjF,EAAIH,KAAK,oBACzBD,EAAEI,EAAIkF,SAASC,SAAS,aAC3BF,EAAgBjF,EAAIH,KAAK,YAE1BoF,EAAcvM,MAAK,WAClB,IAAI0M,EAAQxF,EAAE/O,MACduU,EAAM/E,OAAO+E,EAAMC,KAAK,iBAAkB,OAE3CrF,EAAIH,KAAK,sBAAsBnH,MAAK,WACnC,IAAI0M,EAAQxF,EAAE/O,MACduU,EAAM/E,OAAO+E,EAAMC,KAAK,iBAAkB,OAG3C,IAAIC,EAAWtF,EAAIH,KAAK,WAAWnO,KAAK,YACpC4T,IAAahM,EAAG0F,iBAAiBC,KACpCe,EAAIH,KAAK,0CAA0C0F,aAClDD,EAAU,EAAGtF,EAAIH,KAAK,eAGxB,IAAIkF,EAAW/E,EAAIH,KAAK,YAMxB,GALwB,IAApBkF,EAAS3S,SAEZ2S,EAAW/E,IAGPgF,EAAa,CACjB,IAAIlI,EAAOjM,KAEP2U,EAAoB,IAAI7O,EAAIC,SAAS6O,mBACzCzF,EAAIH,KAAK,cAAcsE,OAAOqB,EAAkBxF,KAChDA,EAAIH,KAAK,SAAStB,GAAG,QAAShF,EAAEtJ,KAAKuV,EAAkBE,KAAMF,IAE7D1I,EAAK6I,SAASH,EAAmB,4BAA4B,SAASI,EAAIC,GAC1D,SAAXA,EACH/I,EAAKgJ,oBAAoBF,GACJ,WAAXC,GACV/I,EAAKiJ,sBAAsBH,MAK9B/U,KAAKmV,mBAAmBjB,EAAUC,IAGnCgB,mBAAoB,SAAShG,EAAKgF,GAC7BA,GAIJhF,EAAIH,KAAK,wBAAwBnH,MAAK,WACrC,IAAI0M,EAAQxF,EAAE/O,MAGVoV,EAFUb,EAAMvF,KAAK,WAENnO,KAAK,QACpBuU,IAAS3M,EAAG0F,iBAAiBC,KAChCmG,EAAMG,aAAaU,EAAM,EAAGb,OAS/B5B,eAAgB,SAASxK,EAASkC,EAAUgL,GAG3C,IAAK,IAAIzX,KAFTuK,EAAU0I,WAAW1I,GAASmN,QAAQ,MAAO,SAE/BjL,EAAU,CACvB,IAAKA,EAAS5K,eAAe7B,GAC5B,OAED,IAAI6M,EAAU,IAAMJ,EAASzM,GAAG2X,WACY,IAAxClL,EAASzM,GAAG2X,UAAUC,QAAQ,OACjC/K,EAAU/B,EAAE+M,OAAO,KAAOpL,EAASzM,GAAG2X,UAAY,MAInD9K,EAAUA,EAAQ6K,QAAQ,sBAAuB,QACjD,IAAII,EAAQ,IAAIC,OAAO,WAAalL,EAAU,OAAQ,MACV,IAAxCJ,EAASzM,GAAG2X,UAAUC,QAAQ,OACjCE,EAAQ,IAAIC,OAAO,WAAalL,EAAU,IAAK,MAGhD,IAAI7C,EAAc5H,KAAK4V,oBAAoBvL,EAASzM,GAAG2X,UAAWlL,EAASzM,GAAGiY,oBAI9E1N,EAAUA,EAAQmN,QAAQI,GACzB,SAASI,EAAOC,GAEf,OAAOA,EAAKnO,KAOf,OAHiB,IAAbyN,IACHlN,EAAU6N,IAAIjQ,SAASkQ,YAAY9N,IAE7BA,GAGRyN,oBAAqB,SAASxH,EAAKxG,GAClC,IAAI4H,EAAS,uCAEW9G,EAAE+M,OAAOrH,GAAO,gBACpB1F,EAAE+M,OAAOrH,GAAO,6BACH1F,EAAE+M,OAAO7N,GAAe,YAKzD,MAAO,yFAFcwG,IAAQ3F,EAAG0F,iBAAiBC,IAIQ,eAAiB,IAAM,KAC5EoB,EACA,WAAa9G,EAAE+M,OAAO7N,GAAe,2BAK1CsH,SAAU,YACLlP,KAAK+S,UAAa/S,KAAKyN,WAAW9B,kBAItC3L,KAAKyN,WAAWzB,aAGjBiJ,oBAAqB,SAASF,GAC7BA,EAAGmB,iBACH,IAAI9C,EAAWrE,EAAEgG,EAAG5D,QAAQ6C,QAAQ,YAChCmC,EAAY/C,EAASvS,KAAK,MAC1BuV,EAAgBpW,KAAKyN,WAAWhP,IAAI0X,GACpCE,EAAWtH,EAAE/O,KAAKqO,oBAAoB3F,EAAEC,OAAO,CAClDV,YAAY,EACZG,WAAYtJ,EAAE,WAAY,SACxBsX,EAAcxD,cAEjBQ,EAASH,SAAS,UAAUgB,YAAY,aAExCb,EAASkD,MAAMD,GACfA,EAASxV,KAAK,YAAauS,GAC3BiD,EAASrH,KAAK,YAAYtB,GAAG,uBAAwB1N,KAAK0P,gBAG1D2G,EAASrH,KAAK,iBAAiBuH,YAAYnD,EAASpE,KAAK,iBAAiBwH,SAC1EH,EAASrH,KAAK,gBAAgBM,UAE9B,IAAI4E,EAAWmC,EAASrH,KAAK,YAC7BkF,EACE9E,KAAKpP,KAAK2S,eAAeyD,EAAc3X,IAAI,WAAY2X,EAAc3X,IAAI,aAAa,IACtFuQ,KAAK,WACLnH,MAAK,WAAakH,EAAE/O,MAAMwP,YAU5B,OARAxP,KAAKkR,gBAAgBgD,GADH,GAIlBvE,SAAS0G,EAASrH,KAAK,aAGvBhP,KAAK8O,kBAAkBuH,EAASrH,KAAK,cAE9B,GAGRU,eAAgB,SAASqF,GACxB,IAAI0B,EAAS1H,EAAEgG,EAAG5D,QACduF,EAAMD,EAAOlD,OAAOhS,OACpBoV,EAAgBF,EAAO5V,KAAK,kBAC3B8V,IACJA,EAAgBF,EAAOzC,QAAQ,QAAQhF,KAAK,WAC5CyH,EAAO5V,KAAK,iBAAkB8V,IAE/BF,EAAOnH,QAAQ,QACXoH,EAAM1W,KAAK+N,uBACd0I,EAAOjC,KAAK,sBAAuB1V,EAAE,WAAY,sCAAuC,CAAE8X,MAAOF,EAAKG,IAAK7W,KAAKwN,qBAChHiJ,EAAOnH,QAAQ,CAAE/C,QAAS,WAC1BkK,EAAOnH,QAAQ,QACfmH,EAAOxD,SAAS,UAGjB,IAAI6D,EAAiBJ,EAAM1W,KAAKwN,kBAChCiJ,EAAOzD,YAAY,QAAS8D,GAC5BH,EAAcnD,KAAK,WAAYsD,GAMZ,KAAf/B,EAAGgC,SAAmBhC,EAAGiC,UAAaP,EAAOvG,MAAM,iBACtDyG,EAAcM,QACdlC,EAAGmB,mBAILgB,gBAAiB,SAASnC,GACzB,IAAIhB,EAAOhF,EAAEgG,EAAG5D,QACX4C,EAAKoD,GAAG,cACZpD,EAAOA,EAAKC,QAAQ,aAErBD,EAAKE,YAAY,cAGlBmD,qBAAsB,SAASrC,GAC9BA,EAAGmB,iBACH,IAAInC,EAAOhF,EAAEgG,EAAG5D,QAAQ6C,QAAQ,YAGhC,OAFAD,EAAKlT,KAAK,aAAaoT,YAAY,UACnCF,EAAKzP,UACE,GAGR4Q,sBAAuB,SAASH,GAC/BA,EAAGmB,iBACH,IAAI9C,EAAWrE,EAAEgG,EAAG5D,QAAQ6C,QAAQ,YAChCmC,EAAY/C,EAASvS,KAAK,MAC1BwW,EAAWjE,EAASpE,KAAK,kBACzBsI,EAAYlE,EAASpE,KAAK,SAsB9B,OApBAoE,EAASH,SAAS,YAClBoE,EAASpD,YAAY,UACrBqD,EAAUrE,SAAS,UAEnBG,EAASvS,KAAK,YAAauS,GAE3BpT,KAAKyN,WAAWhP,IAAI0X,GAAWoB,QAAQ,CACtCpL,QAAS,WACRiH,EAASvS,KAAK,aAAayD,SAC3B8O,EAAS9O,UAEVkT,MAAO,WACNH,EAASpE,SAAS,UAClBqE,EAAUrD,YAAY,UACtBb,EAASa,YAAY,YAErBxL,EAAGgP,aAAaC,cAAc5Y,EAAE,WAAY,uDAAwD,CAAE0C,GAAI2U,SAIrG,GAGRwB,iBAAkB,SAAS5C,GAC1BA,EAAGmB,iBACHlW,KAAKkP,YAWN0I,iBAAkB,SAAS3M,EAAO4M,GACjC,IAAIC,EAAUD,EAAM7I,KAAK,WACrBqI,EAAWQ,EAAM7I,KAAK,kBAE1B8I,EAAQ7D,YAAY,UACpBoD,EAASpE,SAAS,WAGnB8E,uBAAwB,SAAS5I,GAChC,IAeI6I,EAfA5E,EAAWjE,EAAIqH,QAEnBpD,EAASpE,KAAK,wBAAwBnH,MAAK,WAC1C,IAAI0M,EAAQxF,EAAE/O,MACViY,EAAY1D,EAAMnD,SAClB8G,EAAS3D,EAAMvF,KAAK,WAAWnO,KAAK,YAAYd,YACvB,IAAzBmY,EAAO1C,QAAQ,KAClByC,EAAU7I,KAAK,KAAO8I,EAAS,KAE/BD,EAAU7I,KAAK,IAAM8I,MAIvB9E,EAAShE,KAAK4G,IAAIjQ,SAASoS,YAAY/E,EAAShE,SAGhD,IAAIA,EAAOgE,EAAShE,OACpB,GAGCA,GADA4I,EAAU5I,GACKkG,QAAQ,OAAQ,YACvB0C,IAAY5I,GAGrB,OAFAgE,EAAShE,KAAKA,GAEPgE,EAASG,QAGjB6E,iBAAkB,SAASC,GAC1B,IAAIpM,EAAOjM,KACP6X,EAAQ9I,EAAEsJ,EAAElH,QACZgF,EAAY0B,EAAM7D,QAAQ,YAAYnT,KAAK,MAC3CqN,EAAczF,EAAG0F,iBACjB2J,EAAUD,EAAM7I,KAAK,WACrBqI,EAAWQ,EAAM7I,KAAK,kBACtBsJ,EAAgBT,EAAM7I,KAAK,YAC3B7G,EAAUmQ,EAAc/E,OAAOM,OAGnC,GAFAwE,EAAEnC,iBAEG/N,EAAQ5G,UAAU4G,EAAQ5G,OAASvB,KAAKwN,mBAA7C,CASA,GALA8K,EAAc9E,KAAK,mBAAmB,GACtCsE,EAAQ7E,SAAS,UACjBoE,EAASpD,YAAY,UAErB9L,EAAUnI,KAAK+X,uBAAuBO,GAClCnC,EAEWnW,KAAKyN,WAAWhP,IAAI0X,GAC1BxJ,KAAK,CACZxE,QAASA,GACP,CACFgE,QAAS,SAASlB,GAEjB,GADAgB,EAAK2L,iBAAiB3M,EAAO4M,GACzB5M,EAAMxM,IAAI,WAAWoV,SAAW5I,EAAM6I,SAAS,WAAWD,OAAQ,CAErE,IAAIE,EAAO8D,EAAM7D,QAAQ,YACzBD,EAAKlT,KAAK,aAAaoT,YAAY,UACnCF,EAAKzP,WAGPkT,MAAO,WACNvL,EAAKsM,eAAeV,EAAO1B,WAI7BnW,KAAKyN,WAAWvO,OAAO,CACtBwH,QAASwH,EAAYE,IACrB9G,iBAAkB4G,EAAYtG,YAC9BmC,UAAW,QACXyO,KAAM,UACNrQ,QAASA,EACTgC,kBAAmB,IAAI0C,MAAQC,eAC7B,CACFqD,GAAI,EAEJsI,MAAM,EACNtM,QAAS,SAASlB,GACjBgB,EAAK2L,iBAAiB3M,EAAO4M,IAE9BL,MAAO,WACNvL,EAAKsM,eAAeV,OAAOxK,MAK9B,OAAO,IAWRkL,eAAgB,SAASV,EAAO1B,GAC/B0B,EAAM7I,KAAK,WAAWiF,YAAY,UAClC4D,EAAM7I,KAAK,kBAAkBiE,SAAS,UACtC4E,EAAM7I,KAAK,YAAYwE,KAAK,mBAAmB,GAE1C9K,EAAE6B,YAAY4L,GAGlB1N,EAAGgP,aAAa5C,KAAK/V,EAAE,WAAY,wCAAyC,CAAEoF,KAAM,UAFpFuE,EAAGgP,aAAa5C,KAAK/V,EAAE,WAAY,qDAAsD,CAAE0C,GAAI2U,IAAc,CAAEjS,KAAM,WAYvHwU,cAAe,WACd,IAAIxE,EAAWnF,EAAE,oBAAoBC,KAAK,+BACrCkF,EAASX,OAAOM,OAAOtS,QAC3B2S,EAASyE,SAUXC,SAAU,SAASP,GAClBA,EAAEnC,iBACF,IAAI3C,EAAO8E,EAAEQ,cAAcC,cAAcC,QAAQ,cACjD3W,SAAS4W,YAAY,cAAc,EAAOzF,IAO3C/E,QAAS,SAASrG,GACjB,OAAOA,EAAQ5G,OAAS,MAAQ4G,EAAQ2N,MAAM,QAAU,IAAIvU,OAAS,KAIxEuE,EAAIC,SAASkH,gBAAkBA,EAhuBhC,CAiuBGxE,GAAI3C,M,cCpuBP,IAQK8O,EAyFFnM,GAAI3C,IAzFF8O,EAAqBnM,GAAGiB,SAASuP,KAAKtQ,OAAO,CAChDuQ,QAAS,MACT/L,UAAW,6CACXgM,QAAS,CACR,CACChb,KAAM,OACNyJ,YAAa9I,EAAE,WAAY,gBAC3B6I,UAAW,eAEZ,CACCxJ,KAAM,SACNyJ,YAAa9I,EAAE,WAAY,kBAC3B6I,UAAW,gBAGb2D,WAAY,aAGZiC,OAAQ,CACP,iBAAkB,kBAQnB6L,eAAgB,SAASC,GACxB,IAAIxJ,EAAUd,EAAEsK,EAAMC,eACjBzJ,EAAQyE,SAAS,cACrBzE,EAAUA,EAAQmE,QAAQ,cAG3BvL,GAAG8Q,YAEHvZ,KAAKuM,QAAQ,2BAA4B8M,EAAOxJ,EAAQhP,KAAK,YAM9DgO,OAAQ,WACP7O,KAAKmP,IAAIC,KAAKtJ,IAAIC,SAASI,UAAb,mBAA6C,CAC1D2B,MAAO9H,KAAKmZ,YAQdtE,KAAM,SAASR,GAGd,IAAK,IAAIzW,KAFToC,KAAKwZ,SAAWnF,EAEFrU,KAAKmZ,QAClBnZ,KAAKmZ,QAAQvb,GAAG6b,QAAS,EAG1B,IAAItK,EAAMJ,EAAEsF,EAAQlD,QAChBuI,EAAavK,EAAIwK,SACjBC,EAAkBzK,EAAI6E,QAAQ,cAAc2F,SAG5CE,EAAW,CACdC,IAAKJ,EAAWI,IAAMF,EAAgBE,IAAM,GAC5CC,KAAM,GACNC,MAAO,IAGRH,EAASE,KAAOL,EAAWK,KAAOH,EAAgBG,KAE9CF,EAASE,KAAO,KAEnBF,EAASE,KAAO,GAChBF,EAASG,MAAQha,KAAKmP,IAAI6E,QAAQ,YAAYhF,KAAK,SAASiL,QAC5Dja,KAAKmP,IAAI8E,YAAY,aAAahB,SAAS,eAE3CjT,KAAKmP,IAAI8E,YAAY,cAAchB,SAAS,aAE7CjT,KAAKmP,IAAInN,IAAI6X,GACb7Z,KAAK6O,SACL7O,KAAKmP,IAAI8E,YAAY,UAErBxL,GAAGyR,SAAS,KAAMla,KAAKmP,QAIzBrJ,IAAIC,SAAWD,IAAIC,UAAY,GAC/BD,IAAIC,SAAS6O,mBAAqBA,G,cC9FlClM,EAAEC,OAAOF,GAAGG,MAAMC,OAAQ,CACzBsR,yBAA0B,IAAM1R,GAAGG,MAAMC,OAAOE,YAAc,qBAG/DjD,IAAIC,SAAW2C,EAAEC,OAAO,GAAI7C,IAAIC,UAC3BD,IAAIC,WAIRD,IAAIC,SAAW,IAMhBD,IAAIC,SAASqU,YAAc,CAC1BC,YAAa,CACZ,WACA,gBAGDC,oBAAqB,SAAS1D,GAC7B,OAAO9Q,IAAIC,SAASI,UAAb,YAAsC,CAC5CyQ,MAAOA,EACPvO,aAAchJ,EAAE,WAAY,oBAAqB,qBAAsBuX,GACvEtO,QAASG,GAAG8R,UAAU,OAAQ,sBAIhCC,OAAQ,SAASC,GAChB,IAAIxO,EAAOjM,KACX,KAAIA,KAAKqa,YAAY7E,QAAQiF,EAASjZ,KAAO,GAA7C,CAIAiZ,EAASC,gBAAgB,IAAI5U,IAAIC,SAASkH,gBAAgB,oBAE1D,IAAI0N,EAAyBF,EAASG,qBACtCH,EAASG,qBAAuB,WAC/B,IAAIC,EAAQF,EAAuB7O,MAAM9L,KAAM+L,WAE/C,OADA8O,EAAMnZ,KAAK+G,GAAGG,MAAMC,OAAOsR,0BACpBU,GAGRJ,EAASK,YAAYC,mBAAkB,SAASC,GAC/C,IAAIna,EAAO,GAEPoa,EADQD,EAASE,SAAS,GAAGC,WACN1S,GAAGG,MAAMC,OAAOsR,0BAI3C,OAHKzR,EAAE6B,YAAY0Q,IAAsC,KAAnBA,IACrCpa,EAAKoa,eAAiBG,SAASH,EAAgB,KAEzCpa,KAGR4Z,EAAStL,IAAI8D,SAAS,gBACtB,IAAIoI,EAAeZ,EAASa,WAC5Bb,EAASa,WAAa,SAASC,GAC9B,IAAIC,EAAMH,EAAavP,MAAM9L,KAAM+L,WAInC,OAHIwP,EAASN,gBACZO,EAAIhH,KAAK,uBAAwB+G,EAASN,gBAEpCO,GAIRf,EAASgB,YAAYC,eAAe,CACnCvd,KAAM,UACNyJ,YAAa,SAASyM,GACrB,GAAIA,GAAWA,EAAQsH,MAAO,CAC7B,IAAIC,EAASR,SAAS/G,EAAQsH,MAAM9a,KAAK,mBAAoB,IAC7D,GAAI+a,GAAU,EACb,OAAOvc,EAAE,WAAY,gBAAiB,wBAAyBuc,EAAQ,CAAEA,OAAQA,IAGnF,OAAO9c,EAAE,WAAY,YAEtB+c,KAAM,MACNC,OAAQ,IACRnU,UAAW,eACXoU,YAAatT,GAAGuT,gBAChB9X,KAAM4B,IAAI8C,MAAMqT,YAAYC,YAC5BrN,OAAQ,SAASsN,EAAYC,EAAW/H,GACvC,IACIgI,EADQhI,EAAQsH,MACO9a,KAAK,mBAChC,GAAIwb,EAAgB,CACnB,IAAIC,EAAcvN,EAAE9C,EAAKqO,oBAAoB+B,IAE7C,OADAhI,EAAQsH,MAAM3M,KAAK,2BAA2BsE,OAAOgJ,GAC9CA,EAER,MAAO,IAERC,cAAe,SAASC,EAAUnI,GACjCA,EAAQsH,MAAM3M,KAAK,mBAAmBM,QAAQ,QAE9C+E,EAAQoG,SAASgC,gBAAgBD,EAAU,eAK7C,IAAIE,EAAmBjC,EAASkC,cAChClC,EAASkC,cAAgB,SAASxN,GACjC,IAAIP,EAAW8N,EAAiB5Q,MAAM9L,KAAM+L,WACxCkP,EAAiB9L,EAAItO,KAAK,mBAI9B,OAHIoa,IACHrM,EAASqM,eAAiBA,GAEpBrM,MAOXnG,GAAGmU,QAAQC,SAAS,qBAAsB/W,IAAIC,SAASqU,c,cClHtDtU,IAAIC,SAAS+W,sBAAwB,CASpCC,uBAAwB,SAAS9R,EAAOkE,EAAK6N,GAC5C,GAAyB,aAArB/R,EAAMxM,IAAI,QAA+C,aAAtBwM,EAAMxM,IAAI,SAIpC,oBAATue,IACH7N,EAAI8D,SAAS,WACThI,EAAMxM,IAAI,YAAcuB,KAAKwO,QAAQvD,EAAMxM,IAAI,aAAa,CAC/D0Q,EAAI8D,SAAS,aACb,IAAIgK,EAAWlO,EAAE,SAASkE,SAAS,mBACnC9D,EAAIH,KAAK,oBAAoBsH,MAAM2G,GACnC9N,EAAIzB,GAAG,QAAS1N,KAAKkd,4BAQxBA,yBAA0B,SAASnI,GAClC,IAAIhB,EAAOhF,EAAEgG,EAAG5D,QACX4C,EAAKoD,GAAG,cACZpD,EAAOA,EAAKC,QAAQ,aAErBD,EAAKE,YAAY,cAMlBzF,QAAS,SAASrG,GACjB,OAAOA,EAAQ5G,OAAS,MAAQ4G,EAAQ2N,MAAM,QAAU,IAAIvU,OAAS,IAMxEkH,GAAGmU,QAAQC,SAAS,gCAAiC/W,IAAIC,SAAS+W,wB,eC/ClE,SAAUrU,EAAI3C,EAAKiJ,GAClB,aAMA,IAAIoO,EAAU,WACbnd,KAAKsL,cAGN6R,EAAQ3d,UAAY,CAEnBib,SAAU,KAKVnP,WAAY,WAEX,IAAIW,EAAOjM,KAEXA,KAAKod,cAAgB,WACpB,QAAStX,EAAI8C,SAAW9C,EAAI8C,MAAMyU,KAgCnCrd,KAAKsd,oBAAsB,SAASvJ,EAAMvJ,GApB1C,IACK+S,KAAmBxO,EAAE,qBACHuF,SAAS,WAC9BiJ,EAAiBtK,SAAS,UAwB3BjT,KAAKwd,qBAAqBhT,GAE1B,IAAIiT,EAAW1O,EAAE,SAASkE,SAAS,QAAQM,KAAK/I,EAAOkT,MAEnDC,EAAU5O,EAAE,SAChB4O,EAAQ1K,SAAS,UACfjR,IAAI,UAAW,gBACfA,IAAI,iBAAkB,UACtBA,IAAI,SAAU,iBAEZwI,EAAOoT,WACVD,EAAQnO,OAAOhF,EAAOqT,SAAU,QAAIxQ,GAAW,OAAOA,EAAW7C,EAAOoT,YAExED,EAAQnO,OAAOhF,EAAOqT,SAAU,IAGjC9J,EAAK/E,KAAK,oBAAoBsH,MAAMmH,GAAUlK,KAAK/I,EAAOsT,SAASC,QAAQhP,EAAE,UAAUkE,SAAS,QAAQjR,IAAI,eAAgB,OAAOuR,KAAK/I,EAAOoT,aAAaG,QAAQJ,GACpK5J,EAAK/E,KAAK,eAAewF,KAAK,OAAQhK,EAAOwT,MAE7CjK,EAAK/E,KAAK,WACRhN,IAAI,mBAAoB,OAASyG,EAAG8R,UAAU,OAAQ,mBAAqB,KAC3EvY,IAAI,UAAW,MACjB,IAAIic,EAAMxV,EAAGyV,QAAQ1T,EAAOkT,MAU5B,OAPIO,IAAQzT,EAAOkT,OAClBO,EAAM,KAEPlK,EAAK/E,KAAK,aAAawF,KAAK,OAC3B/L,EAAG0V,YAAY,6CAA8C,CAAEF,IAAKA,EAAKG,SAAU5T,EAAOgS,YAGpFzI,GAGR/T,KAAKqe,mBAAqB,SAAStK,EAAMvJ,EAAQ6O,GAChD,OAAIpN,EAAKmR,iBAAwC,UAArBnR,EAAKwO,SAASjZ,KACzCyK,EAAKwO,SAAS6D,gBAAgB7V,EAAGyV,QAAQ1T,EAAOkT,OAChDzR,EAAKwO,SAAS8D,SAAS/T,EAAOrM,OACvB,IAMT6B,KAAKwd,qBAAuB,SAAShT,IAE/BA,EAAOqR,MAAQrR,EAAOgU,YAC1BhU,EAAOqR,KAAOrR,EAAOgU,YAGvBxe,KAAKye,YAAc,SAAShE,GAC3Bza,KAAKya,SAAWA,GAGjBhS,EAAGmU,QAAQC,SAAS,kBAAmB7c,OAExCwa,OAAQ,SAAS1I,GAChBA,EAAO4M,YAAY,UAAW1e,KAAKsd,oBAAoBle,KAAKY,OAC5D8R,EAAO6M,WAAW,UAAW3e,KAAKqe,mBAAmBjf,KAAKY,SAI5D8F,EAAI8Y,OAAOd,QAAU,IAAIX,EA7H1B,CA8HG1U,GAAI3C,IAAKiJ,I,wBCvIF8P,IAAqL7e,KAA1I8e,EAAO,CAAC,WAAF,gBAAqB7gB,GAAG,OAAO4gB,EAAEE,oBAAwG,SAASF,GAAG,aAAa,IAAIG,EAAE/gB,EAAEC,EAAEma,EAAI4G,EAAEC,EAAIrb,EAAIhG,EAAYmhB,EAAE,WAAW,SAASA,EAAEH,GAAG7e,KAAKmf,SAASN,EAAE7e,KAAKof,WAAWpf,KAAKmf,SAAS,GAAG,OAAOH,EAAExf,UAAU6f,OAAO,WAAW,OAAOrf,KAAKof,YAAYJ,EAAExf,UAAU8f,cAAc,WAAW,OAAOtf,KAAKuf,eAAeP,EAAExf,UAAU+f,YAAY,WAAW,IAAIV,EAAEG,EAAE,OAAOA,EAAEhf,KAAKwf,YAAYX,EAAE7e,KAAKmf,SAASxF,SAASqF,EAAEjF,MAAM8E,EAAE9E,KAAKiF,EAAElF,KAAK+E,EAAE/E,IAAIkF,GAAGA,EAAExf,UAAUigB,YAAY,WAAW,IAAIZ,EAAEG,EAAE,OAAOA,EAAEE,EAAEQ,UAAUC,eAAcd,EAAEK,EAAEhT,KAAK0T,mBAAoBC,kBAAkB7f,KAAKof,YAAYP,EAAEiB,YAAY,WAAWd,GAAGH,EAAEtL,KAAKhS,QAAQyd,EAAExf,UAAUugB,OAAO,WAAW,IAAIlB,EAAEG,EAAE/gB,EAAE,OAAOA,EAAE+B,KAAKggB,WAAUnB,EAAE5gB,EAAEgiB,cAAeC,mBAAmBlgB,KAAKof,YAAYP,EAAEsB,OAAOliB,EAAEmiB,aAAaniB,EAAEoiB,WAAWrB,EAAEH,EAAE9e,WAAWwB,OAAOsd,EAAEyB,SAAStB,GAAGE,EAAEQ,UAAU1f,KAAKyf,mBAAc,GAAQT,EAAExf,UAAU+gB,eAAe,WAAW,IAAI1B,EAAEG,EAAE,OAAOH,EAAEK,EAAEQ,UAAUC,cAAca,aAAcC,UAAU,aAAa,GAA+B,CAACC,QAA7B1B,EAAEH,EAAE8B,yBAAkCC,OAAO5B,EAAElF,IAAIC,KAAKiF,EAAEjF,KAAKD,IAAIkF,EAAElF,MAAMkF,EAAExf,UAAUggB,UAAU,WAAW,IAAIR,EAAE/gB,EAAEC,EAAEma,EAAEwI,EAAE,OAAOhd,EAAEid,eAAe5iB,EAAE8B,KAAKggB,UAAU9hB,EAAEmiB,UAAU,EAAE,GAAGniB,EAAEkiB,gBAAgBpgB,KAAKof,cAAaJ,EAAE9gB,EAAE+hB,cAAec,SAAS7iB,EAAEkiB,aAAaliB,EAAEmiB,UAAU,GAAGrB,EAAEmB,OAAOjiB,EAAEkiB,aAAaliB,EAAEmiB,WAAuCpiB,EAAE,CAACyiB,QAA/BrI,EAAE2G,EAAE2B,yBAAoCD,OAAO3G,KAAK1B,EAAE0B,KAAK1B,EAAE4B,MAAMH,IAAIzB,EAAEyB,KAAKkF,EAAEsB,UAAUriB,GAAG,KAAK,MAAMA,EAAEA,EAAEyiB,YAAO,KAAU1B,EAAE9gB,EAAE+hB,aAAaY,EAAEhC,EAAEK,EAAE3Z,eAAe,MAAMyZ,EAAEgC,WAAWH,EAAE,IAAI7B,EAAEiC,WAAWJ,EAAE,IAAgC5iB,EAAE,CAACyiB,QAA/BrI,EAAE2G,EAAE2B,yBAAoCD,OAAO3G,KAAK1B,EAAE0B,KAAKD,IAAIzB,EAAEyB,KAAK+G,EAAEvc,SAAS0a,EAAEsB,WAAWpB,EAAEQ,YAAYzhB,EAAE+B,KAAKugB,kBAAkBtiB,IAAIA,EAAE6b,KAAK+E,EAAEhb,GAAGqd,YAAYjjB,EAAE8b,MAAM8E,EAAEhb,GAAGsd,cAAcljB,GAAG+gB,EAAExf,UAAUwgB,MAAM,WAAW,IAAInB,EAAE,GAAGhb,EAAEid,aAAa,OAAOjC,EAAEhb,EAAEid,gBAAiBM,WAAW,EAAEvC,EAAEwC,WAAW,GAAG,MAAMrC,EAAtpD,GAA2pD/gB,EAAE,WAAW,SAAS+gB,EAAEH,GAAG7e,KAAKmf,SAASN,EAAE7e,KAAKof,WAAWpf,KAAKmf,SAAS,GAAG,OAAOH,EAAExf,UAAU8hB,SAAS,WAAW,IAAIzC,EAAEG,EAAE/gB,EAAIoa,EAAEwI,EAAE5B,EAAE,OAAOD,EAAEhf,KAAKof,WAAuC/G,EAAE,GAA9BwI,EAAE3B,EAAEQ,UAAUC,gBAAqBkB,EAAEU,kBAAkBvC,IAAoC/gB,EAA9B+gB,EAAEngB,MAAMyW,QAAQ,QAAQ,MAAU/T,QAAO0d,EAAED,EAAEY,mBAAoB4B,eAAeX,EAAEY,gBAAe5C,EAAEG,EAAEY,mBAAoB8B,UAAS,GAAIrJ,EAAE4G,EAAE0C,iBAAiB,aAAa9C,IAAI,EAAE5gB,GAAGghB,EAAEwB,UAAU,aAAaxiB,IAAIoa,GAAG2G,EAAExf,UAAUugB,OAAO,WAAW,OAAOb,EAAEQ,UAAU1f,KAAKshB,WAAWthB,KAAKof,WAAWwC,gBAAgB5C,EAAExf,UAAU6f,OAAO,SAASR,GAAG,IAAIG,EAAE/gB,EAAE,OAAO+gB,EAAEhf,KAAKof,WAAWF,EAAEQ,YAAWzhB,EAAE+gB,EAAEY,mBAAoBiC,KAAK,YAAYhD,GAAG5gB,EAAE6jB,UAAU9C,EAAE+C,mBAAmB/C,EAAE+C,kBAAkBlD,EAAEA,GAAGG,GAAGA,EAAExf,UAAUwiB,YAAY,SAASnD,GAAG,IAAM5gB,EAAM,OAAOA,EAAE+B,KAAKof,WAAWQ,kBAAkBf,IAAIA,EAAE7e,KAAK+f,UAAU9hB,EAAE4jB,KAAK,YAAYhD,GAAuD,CAAC9E,KAAnD9b,EAAEgkB,aAAwDnI,IAAzC7b,EAAEikB,YAA6CxB,OAA/BziB,EAAEkkB,iBAAwCnD,EAAExf,UAAUggB,UAAU,SAASR,GAAG,IAAI/gB,EAAEC,EAAEma,EAAE,OAAOpa,EAAE+B,KAAKmf,SAASD,EAAEQ,YAAWxhB,EAAE8B,KAAKgiB,YAAYhD,IAAKlF,KAAK+E,EAAEhb,GAAGqd,YAAYjjB,EAAEijB,YAAYhjB,EAAE6b,MAAM8E,EAAEhb,GAAGsd,aAAaljB,EAAEkjB,aAAajjB,IAAIA,EAAED,EAAE0b,SAAStB,EAAErY,KAAKuf,YAAYP,GAAG9gB,EAAE,CAAC6b,KAAK7b,EAAE6b,KAAK1B,EAAE0B,KAAK9b,EAAEkjB,aAAarH,IAAI5b,EAAE4b,IAAIzB,EAAEyB,IAAI7b,EAAEijB,YAAYR,OAAOrI,EAAEqI,UAAU1B,EAAExf,UAAU+f,YAAY,SAASV,GAAG,IAAIG,EAAI3G,EAAEwI,EAAE5B,EAAIrhB,EAAE,OAAOohB,EAAEhf,KAAKmf,SAAS0B,EAAE,SAAShC,GAAG,OAAOA,EAAEA,EAAEvJ,QAAQ,aAAa,KAAKA,QAAQ,cAAc,SAAS,WAAWpS,KAAKD,UAAUE,aAAa0b,EAAEA,EAAEvJ,QAAQ,MAAM,WAAWuJ,QAAG,IAASA,IAAIA,EAAE7e,KAAK+f,UAAUniB,EAAEohB,EAAEoD,MAAMC,MAAM,EAAExD,GAAGxG,EAAE2G,EAAEoD,MAAMC,MAAMxD,GAAGI,EAAE,sDAAsD4B,EAAEjjB,GAAG,UAAUqhB,GAAG,yEAAyEA,GAAG,sDAAsD4B,EAAExI,GAAG,UAAY,IAAIna,EAAE8gB,GAAO9f,OAAO+f,GAAGqD,QAAQtD,EAAExf,UAAU8f,cAAc,SAAST,GAAG,IAAM5gB,EAAEC,EAAM,OAAOA,EAAE8B,KAAKgiB,YAAYnD,GAAG5gB,EAAE+B,KAAKmf,SAASxF,SAAkD,CAACI,KAAxC7b,EAAE6b,KAAK9b,EAAE8b,KAAsCD,IAA/B5b,EAAE4b,IAAI7b,EAAE6b,IAA6B4G,OAAvBxiB,EAAEwiB,SAAgC1B,EAA15D,GAA+5D9gB,EAAE,WAAW,SAAS8gB,EAAEH,GAAG7e,KAAKmf,SAASN,EAAE,OAAOG,EAAExf,UAAU+iB,SAAS,CAAC,oBAAoB,kBAAkB,mBAAmB,iBAAiB,mBAAmB,oBAAoB,kBAAkB,iBAAiB,YAAY,aAAa,WAAW,aAAa,SAAS,gBAAgB,aAAa,eAAe,aAAa,cAAc,YAAY,eAAe,WAAW,YAAY,YAAY,gBAAgB,cAAc,eAAe,aAAa,YAAY,eAAe,gBAAgB,aAAa,YAAY,YAAYvD,EAAExf,UAAUgjB,UAAU,WAAW,IAAIxD,EAAE/gB,EAAE+B,KAAK,OAAOgf,EAAE,CAACnF,SAAS,WAAWE,MAAM,KAAKD,IAAI,EAAE2I,QAAQ,KAAK,aAAaziB,KAAKmf,SAAS3L,KAAK,YAAYxT,KAAKuiB,SAAS7gB,KAAK,SAASmd,EAAEhX,KAAK7H,KAAKuiB,UAAS,SAAS1D,EAAE3gB,GAAG,OAAO8gB,EAAE9gB,GAAGD,EAAEkhB,SAASnd,IAAI9D,MAAK8gB,GAAGA,EAAExf,UAAUN,OAAO,SAAS8f,GAAG,OAAOhf,KAAK0iB,QAAQ7D,EAAE,eAAe7e,KAAK0iB,QAAQ1gB,IAAIhC,KAAKwiB,aAAaxiB,KAAK0iB,QAAQtT,KAAK4P,GAAGhf,KAAKmf,SAAS7I,MAAMtW,KAAK0iB,SAAS1iB,MAAMgf,EAAExf,UAAU8iB,KAAK,WAAW,IAAIzD,EAAEG,EAAE/gB,EAAE,OAAoDA,EAAE,CAAC8b,MAAlBiF,GAA9BH,EAAE7e,KAAK0iB,QAAQ1T,KAAK,WAAc6K,YAAqBE,KAAKD,IAAIkF,EAAElF,IAAI4G,OAAO7B,EAAE6B,UAAU1gB,KAAK0iB,QAAQpe,SAASrG,GAAG+gB,EAA9lC,GAAmmC3G,EAAE,CAACsK,gBAAgB,SAAS9D,GAAG,SAASA,EAAE,GAAG8D,iBAAiB,SAAS9D,EAAE,GAAG8D,mBAAmB1D,EAAE,CAAC2D,IAAI,SAAS/D,GAAG,OAAOA,GAAG,IAAIA,EAAE7e,KAAKqf,OAAOR,GAAG7e,KAAK+f,UAAUlG,SAAS,SAASgF,GAAG,OAAOK,EAAEQ,UAAU1f,KAAKsf,cAAcT,GAAG7e,KAAKuf,YAAYV,IAAIlF,OAAO,SAASkF,GAAS,OAAS7e,KAAKwf,UAAUX,KAAKK,EAAE,KAAKrb,EAAE,KAAYhG,EAAE,SAASghB,GAAG,IAAIG,EAAE,OAAOA,EAAE,MAAMH,EAAEA,EAAEgE,YAAO,IAAahf,EAAEmb,EAAE8D,cAAc5D,EAAEF,EAAE+D,iBAAiBlf,EAAEzB,WAAoByB,EAAEgC,OAAOqZ,EAAE9c,WAA+Hyc,EAAEmE,GAAGC,MAAM,SAAS/kB,EAAE2iB,EAAE3B,GAAG,IAAIthB,EAAE,OAAOqhB,EAAE/gB,IAAI2gB,EAAEqE,cAAcrC,IAAIhjB,EAAEgjB,GAAGA,OAAE,GAAQhjB,EAAEqhB,GAAGthB,EAAEya,EAAEsK,gBAAgB3iB,MAAM,IAAIgf,EAAEhf,MAAM,IAAI/B,EAAE+B,MAAMif,EAAE/gB,GAAG4N,MAAMlO,EAAE,CAACijB,KAAKhC,EAAErH,MAAM,UAAUtZ,EAAE,oCAAoC2gB,EAAEmE,GAAGC,MAAME,cAAcnE,EAAEH,EAAEmE,GAAGC,MAAMG,WAAWnlB,EAAE4gB,EAAEmE,GAAGC,MAAMI,MAAMhL,EAAEwG,EAAEmE,GAAGC,MAAMK,KAAKrE,EAA7pLD,CAAE/gB,IAAvD,4B,6PCDN6gB,EAAO,CAAC,WAAF,gBAAqBhgB,GAAG,OAA2F,SAASA,GAAG,IAAIuZ,EAAEza,EAAs0CyB,EAAp0CzB,EAAE,CAAC2lB,IAAI,GAAGC,IAAI,EAAEC,MAAM,GAAGC,KAAK,GAAGC,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGC,KAAK,GAAGC,GAAG,GAAGC,MAAM,GAAGC,KAAK,GAAGC,UAAU,EAAEC,MAAM,IAAI9L,EAAE,CAAC+L,WAAW,SAAStlB,GAAG,OAAOJ,EAAE2lB,mBAAmBvlB,IAAIwlB,QAAQ,SAASxlB,EAAEuZ,EAAEza,EAAEyB,GAAG,IAAIX,EAAEL,EAAEsB,EAAM,OAAOb,EAAEA,EAAEwW,QAAQ,sCAAsC,QAAQ1X,IAAIkB,EAAE,YAAYA,GAAGJ,EAAE6lB,UAAU,UAAUlmB,EAAEkmB,UAAU,WAAyG5kB,EAAlF,IAAIgW,OAAO7W,EAAE,WAAWJ,EAAE,IAAIL,EAAE,QAA3CgB,EAAE,IAAI,IAA8C,YAAYP,EAAE,qBAAqB,MAAU0lB,KAAKnM,IAAK1Y,EAAE,IAAIA,EAAE,GAAG,MAAMuF,OAAO,SAASpG,EAAEuZ,EAAEza,GAAG,IAAIyB,EAAEX,EAAEL,EAAEsB,EAAE,IAAIN,EAAE,GAAGX,EAAE,EAAEiB,EAAE0Y,EAAE9W,OAAO5B,EAAEjB,EAAEA,IAAIL,EAAEga,EAAE3Z,IAAI,IAAI+lB,OAAOpmB,EAAET,IAAIwF,cAAcoS,QAAQ1W,EAAEsE,gBAAgB/D,EAAEqC,KAAKrD,GAAG,OAAOgB,GAAGgR,aAAa,KAAKK,OAAO,SAAS5R,EAAEuZ,EAAEza,GAAG,IAAIyB,EAAEX,EAAEL,EAAEsB,EAAE,IAAIb,EAAE,OAAOuZ,EAAE,IAAIhZ,EAAE,GAAGX,EAAE,EAAEiB,EAAE0Y,EAAE9W,OAAO5B,EAAEjB,EAAEA,KAAIL,EAAEga,EAAE3Z,IAAKgmB,YAAY,IAAID,OAAOpmB,EAAET,IAAIwF,cAAcoS,QAAQ1W,EAAEsE,eAAe/E,EAAEqmB,aAAa,GAAGrlB,EAAEqC,KAAKrD,GAAG,OAAOgB,EAAEslB,MAAK,SAAS7lB,EAAEuZ,GAAG,OAAOvZ,EAAE4lB,YAAYrM,EAAEqM,gBAAeE,QAAQ,SAAS9lB,EAAEuZ,GAAG,IAAQ3Z,EAAEA,EAAEI,EAAE,IAAI,MAAM,iBAAiBA,IAAIJ,EAAEI,EAAEuZ,IAAI3Z,EAAE4W,QAAQ,mBAAkB,SAASxW,EAAElB,EAAEyB,GAAG,OAAOgZ,EAAEza,MAAK,MAAMyB,GAAG,MAAW,KAAKkR,YAAY,SAASzR,EAAEuZ,GAAG,IAAIza,EAAE,OAAOya,GAAGza,EAAE,IAAI+X,OAAO,iBAAiB0C,EAAE/C,QAAQ,IAAI,OAAO,gBAAgB,MAAMxW,EAAEwW,QAAQ1X,GAAE,SAASkB,EAAEuZ,EAAEza,EAAEyB,GAAG,MAAM,KAAKgZ,EAAE,WAAWza,EAAE,YAAYyB,EAAE,SAAQP,GAAG+lB,aAAa,SAAS/lB,EAAEuZ,EAAEza,GAAG,OAAOkB,GAAGgmB,iBAAiB,SAAShmB,GAAG,OAAOA,GAAGimB,iBAAiB,SAASjmB,EAAEuZ,MAAYhZ,EAAE,WAAW,SAASgZ,EAAEA,GAAGrY,KAAKglB,YAAY,KAAKhlB,KAAKilB,YAAY,GAAGjlB,KAAKklB,UAAU,GAAGllB,KAAKmf,SAASrgB,EAAEuZ,GAAGrY,KAAKmlB,mBAAmBnlB,KAAKolB,SAAS,OAAO/M,EAAE7Y,UAAU6lB,gBAAgB,SAAShN,GAAG,IAAIza,EAAE,OAAO,OAAOA,EAAEoC,KAAKmP,MAAMvR,EAAE0G,SAASxF,EAAEuZ,EAAEnM,MAAMoH,OAAOtT,KAAKmP,IAAIrQ,EAAE,yCAAyCuZ,EAAE7Y,UAAU2lB,iBAAiB,SAAS9M,EAAEza,GAAG,IAAIyB,EAAEX,EAAE,GAAG,MAAMd,IAAIA,GAAE,GAAIya,EAAErY,KAAK6F,OAAOwS,EAAEyK,cAAc9iB,KAAKoC,SAASiW,EAAE0K,iBAAiB/iB,KAAK6F,OAAOzD,SAASpC,KAAK6iB,OAAOxK,MAAM,CAACrY,KAAKoC,SAASpC,KAAKmf,SAAS,GAAGmG,cAActlB,KAAK6F,OAAO7F,KAAKoC,SAASmjB,aAAavlB,KAAKoC,SAASojB,aAAa,IAAIxlB,KAAK6iB,OAAO7iB,KAAK6F,OAAO4f,aAAa,MAAM/mB,GAAG,GAAGW,EAAEX,EAAEsB,KAAK6iB,OAAO,KAAK/jB,EAAEkkB,GAAG9S,MAAMwV,MAAM,MAAM,IAAIpjB,MAAM,gGAAgGjD,IAAI,OAAOW,KAAKqlB,iBAAiBrlB,KAAK2lB,aAAa/nB,GAAGoC,KAAKoC,SAASA,WAAWiW,EAAE7Y,UAAUomB,WAAW,SAAS9mB,GAAG,IAAIuZ,EAAEza,EAAEyB,EAAEX,EAAE,GAAGsB,KAAKklB,UAAUpmB,GAAGlB,EAAEoC,KAAKilB,YAAYjlB,KAAKklB,UAAUpmB,SAA4B,IAAIO,KAAvBX,EAAEsB,KAAKilB,YAAuB,GAAG5M,EAAE3Z,EAAEW,GAAGA,IAAIP,EAAE,CAAClB,EAAEya,EAAE,MAAO,OAAOza,GAAIoC,KAAKilB,YAAYjlB,KAAKglB,cAAc3M,EAAE7Y,UAAUqmB,cAAc,SAAS/mB,GAAG,OAAOkB,KAAKglB,YAAYlmB,EAAEkB,MAAMqY,EAAE7Y,UAAUsmB,IAAI,SAAShnB,EAAEuZ,GAAG,IAAIza,EAAEyB,EAAE,OAAOA,GAAGzB,EAAEoC,KAAKilB,aAAanmB,KAAKlB,EAAEkB,GAAGkB,KAAKmf,SAAShI,GAAG,qBAAqB,IAAItZ,EAAEmC,KAAKlB,GAAG,IAAIa,EAAEK,KAAKlB,IAAIuZ,EAAE0N,QAAQ/lB,KAAKklB,UAAU7M,EAAE0N,OAAOjnB,GAAGO,EAAE2mB,KAAK3N,GAAGrY,MAAMqY,EAAE7Y,UAAU4lB,OAAO,WAAW,OAAOplB,KAAKmf,SAASzR,GAAG,mBAAmB,SAAS5O,GAAG,OAAO,SAASuZ,GAAG,IAAIza,EAAE,OAAO,OAAOA,EAAEkB,EAAE8mB,eAAehoB,EAAEof,KAAKiJ,OAAOnnB,EAAEonB,aAAY,EAAG,MAArG,CAA4GlmB,OAAO0N,GAAG,iBAAiB,SAAS5O,GAAG,OAAO,SAASuZ,GAAG,OAAOvZ,EAAEonB,aAAY,EAAGC,YAAW,SAAS9N,GAAG,OAAOvZ,EAAEsnB,SAAS/N,MAAK,MAArG,CAA4GrY,OAAO0N,GAAG,mBAAmB,SAAS5O,GAAG,OAAO,SAASuZ,GAAG,OAAOvZ,EAAEunB,QAAQhO,IAAhD,CAAqDrY,OAAO0N,GAAG,qBAAqB,SAAS5O,GAAG,OAAO,SAASuZ,GAAG,OAAOvZ,EAAEwnB,UAAUjO,IAAlD,CAAuDrY,OAAO0N,GAAG,kBAAkB,SAAS5O,GAAG,OAAO,SAASuZ,GAAG,IAAIza,EAAE,OAAOA,EAAEkB,EAAE8mB,eAAehoB,EAAE2oB,kBAAkB,KAAK3oB,EAAEof,KAAKiJ,KAAK5N,EAAEza,EAAE4oB,OAAO,yBAAoB,GAAnI,CAA4IxmB,OAAO0N,GAAG,mBAAmB,SAAS5O,GAAG,OAAO,SAASuZ,GAAG,OAAOvZ,EAAEsnB,SAAS/N,IAAjD,CAAsDrY,OAAO0N,GAAG,oBAAoB,SAAS5O,GAAG,OAAO,WAAW,IAAIuZ,EAAE,OAAOA,EAAEvZ,EAAEqgB,SAAS+B,YAAY,SAAStjB,GAAG,IAAIyB,EAAEX,EAAE,OAAOW,EAAEzB,EAAEuT,OAAO+P,UAAU7I,IAAIhZ,GAAG,OAAOX,EAAEI,EAAE8mB,eAAelnB,EAAEse,KAAKiJ,KAAKroB,GAAGya,EAAEhZ,GAAE,IAAxK,CAA8KW,KAA9K,KAAwLqY,EAAE7Y,UAAUinB,SAAS,WAAW,IAAI3nB,EAAIlB,EAAqB,IAAIkB,KAAvBlB,EAAEoC,KAAKilB,YAAyBrnB,EAAEkB,GAAKyY,iBAAiBvX,KAAKilB,YAAYnmB,GAAG,OAAOkB,KAAKmf,SAASuH,IAAI,eAAe1mB,KAAKmP,IAAI7K,UAAU+T,EAAE7Y,UAAU4mB,SAAS,SAAStnB,GAAG,IAAIuZ,EAAEza,EAAEyB,EAAEX,EAA0B,IAAI2Z,KAAT3Z,EAAE,GAArBW,EAAEW,KAAKilB,YAA4BrnB,EAAEyB,EAAEgZ,GAAG3Z,EAAEgD,KAAK9D,EAAE+oB,OAAO7nB,IAAI,OAAOJ,GAAG2Z,EAAE7Y,UAAU6mB,QAAQ,SAAShO,GAAG,IAAIhZ,EAAE,OAAOgZ,EAAEtB,SAAS,KAAKnZ,EAAE2lB,IAAIlL,EAAEnC,iBAAiB,OAAO7W,EAAEW,KAAK4lB,eAAevmB,EAAE2d,KAAKiJ,OAAO,MAAM,KAAKroB,EAAEqmB,KAAK,KAAKrmB,EAAEmmB,GAAG,KAAKnmB,EAAE8lB,KAAK,KAAK9lB,EAAE6lB,MAAM3kB,EAAE+D,OAAO,MAAM,KAAKjF,EAAEgmB,EAAE,KAAKhmB,EAAEimB,EAAExL,EAAEuO,SAAS5mB,KAAKomB,SAAS/N,GAAG,MAAM,QAAQrY,KAAKomB,SAAS/N,KAAKA,EAAE7Y,UAAU8mB,UAAU,SAASjO,GAAG,IAAIhZ,EAAEX,EAAE,IAAGA,EAAE,OAAOW,EAAEW,KAAK4lB,cAAcvmB,EAAE2d,UAAK,IAAUte,EAAEmoB,UAAU,OAAOxO,EAAEtB,SAAS,KAAKnZ,EAAE2lB,IAAIlL,EAAEnC,iBAAiBxX,EAAEunB,KAAK5N,GAAG,MAAM,KAAKza,EAAEmmB,GAAG1L,EAAEnC,iBAAiBxX,EAAEooB,OAAO,MAAM,KAAKlpB,EAAEqmB,KAAK5L,EAAEnC,iBAAiBxX,EAAEqoB,OAAO,MAAM,KAAKnpB,EAAEgmB,EAAE,IAAIvL,EAAEuO,QAAQ,OAAOvO,EAAEnC,iBAAiBxX,EAAEooB,OAAO,MAAM,KAAKlpB,EAAEimB,EAAE,IAAIxL,EAAEuO,QAAQ,OAAOvO,EAAEnC,iBAAiBxX,EAAEqoB,OAAO,MAAM,KAAKnpB,EAAE4lB,IAAI,KAAK5lB,EAAE6lB,MAAM,KAAK7lB,EAAEumB,MAAM,IAAIzlB,EAAEmoB,UAAU,OAAO,IAAI7mB,KAAK4lB,aAAaY,OAAO,sBAAsBnO,EAAEtB,UAAUnZ,EAAEumB,MAAM,OAAO,IAAInkB,KAAK4lB,aAAaY,OAAO,oBAAoBnO,EAAEtB,UAAUnZ,EAAE4lB,IAAI,OAAO9kB,EAAEsoB,eAAe3O,EAAEnC,iBAAiBxX,EAAEuoB,OAAO5O,IAAI3Z,EAAEunB,KAAK5N,GAAG,MAAM,QAAQvZ,EAAE+D,SAASwV,EAAj+G,GAAs+G,IAAI3Z,EAAEL,EAAE,GAAGgkB,MAAM3jB,EAAE,WAAW,SAASd,EAAEya,EAAEza,GAAGoC,KAAKknB,IAAI7O,EAAErY,KAAKmQ,GAAGvS,EAAEoC,KAAKmf,SAASnf,KAAKknB,IAAI/H,SAASnf,KAAKwB,GAAGxB,KAAKmf,SAAS,GAAG3d,IAAIxB,KAAKoO,MAAMpO,KAAKumB,kBAAkB,KAAKvmB,KAAKmnB,QAAQ,KAAKnnB,KAAKqR,MAAM,KAAKrR,KAAK4iB,IAAI,EAAE5iB,KAAKggB,MAAM,KAAK,KAAKhgB,KAAKmP,IAAIrQ,EAAE,iBAAiBkB,KAAKwB,GAAGxB,KAAKknB,IAAI/X,MAAM5N,QAAQvB,KAAKknB,IAAI/X,IAAImE,OAAOtT,KAAKmP,IAAIrQ,EAAE,yBAAyBkB,KAAKwB,GAAG,aAAaxB,KAAKiL,MAAM,IAAImc,EAAEpnB,MAAMA,KAAKgd,KAAK,IAAI/e,EAAE+B,MAAM,OAAOpC,EAAE4B,UAAU4O,IAAI,WAAW,OAAOiZ,KAAKC,SAASvnB,SAAS,IAAI,aAAawnB,OAAO,EAAE,IAAI,IAAI1a,MAAM0F,WAAW3U,EAAE4B,UAAUwmB,KAAK,SAAS3N,GAAG,OAAOrY,KAAKmnB,QAAQroB,EAAE6J,OAAO,GAAG3I,KAAKmnB,SAASroB,EAAEkkB,GAAG9S,MAAL,QAAsBmI,GAAGrY,KAAKgd,KAAKgJ,OAAOhmB,KAAKiL,MAAMuc,OAAOxnB,KAAKmnB,QAAQtmB,OAAOjD,EAAE4B,UAAU+X,QAAQ,WAAW,OAAOvX,KAAKuM,QAAQ,iBAAiBvM,KAAKiL,MAAMsM,UAAUvX,KAAKgd,KAAKzF,UAAUvX,KAAKmP,IAAI7K,UAAU1G,EAAE4B,UAAUioB,YAAY,WAAW,IAAI7pB,EAAEyB,EAAEX,EAAEiB,EAAEA,EAAEoM,UAAU,GAAGnO,EAAE,GAAGmO,UAAUxK,OAAOlD,EAAEN,KAAKgO,UAAU,GAAG,GAAG,IAAI,OAAOsM,EAAE1Y,GAAGmM,MAAM9L,KAAKpC,GAAG,MAAMc,GAAG,OAAOW,EAAEX,EAAEI,EAAE0Y,MAAMnY,EAAE,yCAAyCM,KAAK/B,EAAE4B,UAAU+M,QAAQ,SAASzN,EAAEuZ,GAAG,IAAIza,EAAEyB,EAAE,OAAO,MAAMgZ,IAAIA,EAAE,IAAIA,EAAE3W,KAAK1B,MAA6BX,GAAvBzB,EAAEoC,KAAKwmB,OAAO,UAAa1nB,EAAE,IAAIlB,EAAE,SAASkB,EAAE,SAASkB,KAAKmf,SAAS5S,QAAQlN,EAAEgZ,IAAIza,EAAE4B,UAAU4Q,UAAU,SAAStR,GAAG,OAAOkB,KAAKwmB,OAAO,aAAa1nB,IAAIuZ,EAAEvZ,IAAIlB,EAAE4B,UAAUgnB,OAAO,SAAS1nB,EAAEuZ,GAAW,IAAI,OAAOrY,KAAKmnB,QAAQroB,GAAG,MAAMO,GAAG,OAAW,OAAOzB,EAAE4B,UAAUkoB,iBAAiB,SAASrP,GAAG,IAAIza,EAAEyB,EAAE,OAAOA,EAAEW,KAAKwmB,OAAO,aAAa5oB,EAAEkB,EAAE6J,OAAO,GAAG0P,EAAExX,KAAK,aAAa,CAAC,WAAWb,KAAKmQ,KAAKnQ,KAAKoQ,UAAU,WAAWrS,KAAKiC,KAAKX,EAAEzB,EAAE,aAAaA,EAAE4B,UAAUmoB,WAAW,SAAS7oB,GAAG,IAAIuZ,EAAE,OAAOA,EAAErY,KAAKwmB,OAAO,aAAa1nB,EAAEkB,KAAKoQ,UAAU,UAAUrS,KAAKiC,KAAKA,KAAKqR,MAAMkC,KAAKzU,EAAEujB,MAAM,EAAE,MAAMhK,GAAGrY,KAAKgd,KAAKnO,OAAO/P,EAAEujB,MAAM,EAAEriB,KAAKwmB,OAAO,YAAY5oB,EAAEymB,mBAAmB,SAAShM,GAAG,IAAIza,EAAEyB,EAAEX,EAAEL,EAAE,IAAIS,EAAE8oB,QAAQvP,GAAG,OAAOA,EAAE,IAAIha,EAAE,GAAGT,EAAE,EAAEc,EAAE2Z,EAAE9W,OAAO7C,EAAEd,EAAEA,IAAIyB,EAAEgZ,EAAEza,GAAGkB,EAAEokB,cAAc7jB,GAAGhB,EAAEqD,KAAKrC,GAAGhB,EAAEqD,KAAK,CAACvD,KAAKkB,IAAI,OAAOhB,GAAGT,EAAE4B,UAAUmnB,OAAO,SAAS7nB,GAAG,IAAIuZ,EAAEza,EAAE,KAAKkB,GAAG,UAAUA,EAAEoF,MAAMlE,KAAKwmB,OAAO,qBAAqBxmB,KAAKwmB,OAAO,wBAAwBxmB,KAAKknB,IAAIhB,aAAa,OAAO7N,EAAErY,KAAK6nB,WAAW/oB,KAAKkB,KAAKknB,IAAIrB,cAAc7lB,KAAKmQ,KAAKvS,EAAEoC,KAAKwmB,OAAO,UAAUxmB,KAAK8nB,aAAazP,EAAEza,GAAGoC,KAAK+nB,QAAQ1P,GAAGA,IAAIrY,KAAKumB,kBAAkB,KAAKlO,IAAIza,EAAE4B,UAAUsoB,aAAa,SAAShpB,EAAEuZ,GAAG,IAAIza,EAAEyB,EAAE,OAAOzB,EAAEiP,KAAKmb,IAAInb,KAAKmb,OAAO,IAAInb,MAAM0F,UAAUvS,KAAKioB,mBAAmBjoB,KAAKioB,iBAAiBrqB,IAAGyB,EAAEgZ,GAAGza,EAAEoC,KAAKioB,mBAAoB,GAAG5P,EAAEhZ,GAAGW,KAAKioB,iBAAiBrqB,EAAEoC,KAAKkoB,mBAAmBloB,KAAKmoB,mBAAmBhC,WAAW,SAAS9N,GAAG,OAAO,WAAW,OAAOA,EAAE4P,iBAAiB,EAAE5P,EAAE8P,mBAAmB,KAAK9P,EAAE0P,QAAQjpB,IAA9F,CAAmGkB,MAAMqY,KAAKrY,KAAKkoB,mBAAmBloB,KAAKioB,mBAAmBrqB,IAAIoC,KAAKioB,iBAAiB,GAAGjoB,KAAK+nB,QAAQjpB,KAAKlB,EAAE4B,UAAU0oB,iBAAiB,WAAW,OAAOloB,KAAKmoB,oBAAoB3W,aAAaxR,KAAKmoB,oBAAoBnoB,KAAKmoB,mBAAmB,WAAM,GAAQvqB,EAAE4B,UAAU4oB,mBAAmB,WAAW,MAAM,IAAIxqB,EAAE4B,UAAUuoB,QAAQ,SAAS1P,GAAG,IAAIza,EAAE,OAAOA,EAAE,SAASkB,EAAEuZ,GAAG,OAAOvZ,IAAIkB,KAAKumB,kBAAkBlO,GAAGA,EAAE9W,OAAO,EAAEvB,KAAK2nB,WAAW3nB,KAAKqoB,YAAYhE,mBAAmBhM,IAAIrY,KAAKgd,KAAKiJ,YAAO,GAAQjmB,KAAKumB,kBAAkBvmB,KAAKooB,qBAAqBpoB,KAAKiL,MAAMoG,MAAMgH,EAAE9E,KAAKzU,EAAEwpB,MAAM1qB,EAAEoC,KAAKA,KAAKumB,qBAAqB3oB,EAAtnG,GAA2nG,IAAI+B,EAAy5C9B,EAAoiJupB,EAA09BnpB,EAA8nHyB,EAAnhVmf,EAAE,SAAS/f,EAAEuZ,GAAG,SAASza,IAAIoC,KAAKqoB,YAAYvpB,EAAE,IAAI,IAAIO,KAAKgZ,EAAE6G,EAAEnhB,KAAKsa,EAAEhZ,KAAKP,EAAEO,GAAGgZ,EAAEhZ,IAAI,OAAOzB,EAAE4B,UAAU6Y,EAAE7Y,UAAUV,EAAEU,UAAU,IAAI5B,EAAEkB,EAAEypB,UAAUlQ,EAAE7Y,UAAUV,GAAGogB,EAAE,GAAGzf,eAAeE,EAAE,SAAS0Y,GAAG,SAASza,IAAI,OAAOA,EAAE2qB,UAAUF,YAAYvc,MAAM9L,KAAK+L,WAAW,OAAO8S,EAAEjhB,EAAEya,GAAGza,EAAE4B,UAAUqoB,WAAW,WAAW,IAAI/oB,EAAEuZ,EAAEza,EAAEyB,EAAEX,EAAEL,EAAEsB,EAAE,OAAO0Y,EAAErY,KAAKmf,SAASiD,MAAMtjB,EAAEkB,KAAKmf,SAAS8D,MAAM,MAAM,CAACJ,OAAO7iB,KAAKknB,IAAIrE,SAASljB,EAAE0Y,EAAEgK,MAAM,EAAEvjB,IAAgHO,EAAE,iBAA/GX,EAAEsB,KAAKoQ,UAAU,WAAWrS,KAAKiC,KAAKA,KAAKmQ,GAAGxQ,EAAEK,KAAKwmB,OAAO,kBAAkBxmB,KAAKwmB,OAAO,sBAA2C9nB,EAAE6C,OAAOvB,KAAKwmB,OAAO,SAAS,QAAG,GAAQnnB,GAAGX,EAAE6C,QAAQvB,KAAKwmB,OAAO,SAAS,KAAkB5oB,GAAbS,EAAES,EAAEJ,EAAE6C,QAAW7C,EAAE6C,OAAOvB,KAAK4iB,IAAIvkB,EAAEK,EAAE,CAAC6U,KAAK7U,EAAE8pB,QAAQnqB,EAAEoqB,OAAO7qB,GAAGoC,KAAKuM,QAAQ,UAAU,CAACvM,KAAKmQ,GAAGzR,EAAE6U,SAAS7U,EAAE,KAAKsB,KAAKgd,KAAKiJ,QAAQjmB,KAAKqR,MAAM3S,IAAId,EAAE4B,UAAU8iB,KAAK,WAAW,IAAIjK,EAAEza,EAAEyB,EAAE,GAAGgZ,EAAErY,KAAKmf,SAAS8D,MAAM,SAASjjB,KAAK4iB,IAAI,EAAE,CAACC,OAAO7iB,KAAKknB,IAAIrE,SAAS,OAAO7iB,KAAKknB,IAAIrE,SAAS7iB,KAAKknB,IAAIvB,eAAe/nB,EAAEkB,EAAEkB,KAAKknB,IAAIrE,QAAQlJ,SAAStB,EAAE0B,MAAMnc,EAAEmc,KAAK1B,EAAEyB,KAAKlc,EAAEkc,KAAKza,EAAEW,KAAKknB,IAAI9kB,SAASsd,UAAU,EAAE,EAAE,CAAC3F,KAAK1B,EAAE0B,KAAKD,IAAIzB,EAAEyB,IAAI8G,OAAOvI,EAAEyB,IAAIzB,EAAEqI,OAAOrhB,IAAIzB,EAAE4B,UAAUkpB,OAAO,SAAS5pB,EAAEuZ,GAAG,IAAIza,EAAEyB,EAAEX,EAAEL,EAAEsB,EAAE,OAA2IA,EAAE,IAA5GjB,GAAVW,GAAhBzB,EAAEoC,KAAKmf,UAAaiD,OAAUC,MAAM,EAAEgF,KAAKxQ,IAAI7W,KAAKqR,MAAMmX,QAAQxoB,KAAKmQ,GAAG5O,OAAO,MAA8CzC,GAA1CT,EAAE,MAAMA,EAAE2B,KAAKwmB,OAAO,WAAWnoB,EAAEA,GAAG,KAAkBgB,EAAEgjB,MAAMriB,KAAKqR,MAAMoX,QAAQ,GAAG7qB,EAAEwkB,IAAIziB,GAAG/B,EAAEqlB,MAAM,MAAMvkB,EAAE6C,OAAOzC,EAAEyC,OAAO,CAACshB,OAAO7iB,KAAKknB,IAAIrE,SAASjlB,EAAEuZ,GAAG,WAAWvZ,EAAEgS,QAAQhS,EAAE+qB,UAAU/qB,EAAntC,CAAstCc,GAASmgB,EAAE,SAAS/f,EAAEuZ,GAAG,SAASza,IAAIoC,KAAKqoB,YAAYvpB,EAAE,IAAI,IAAIO,KAAKgZ,EAAE6G,EAAEnhB,KAAKsa,EAAEhZ,KAAKP,EAAEO,GAAGgZ,EAAEhZ,IAAI,OAAOzB,EAAE4B,UAAU6Y,EAAE7Y,UAAUV,EAAEU,UAAU,IAAI5B,EAAEkB,EAAEypB,UAAUlQ,EAAE7Y,UAAUV,GAAGogB,EAAE,GAAGzf,eAAe5B,EAAE,SAASwa,GAAG,SAAShZ,IAAI,OAAOA,EAAEkpB,UAAUF,YAAYvc,MAAM9L,KAAK+L,WAAW,OAAO8S,EAAExf,EAAEgZ,GAAGhZ,EAAEG,UAAUopB,UAAU,WAAW,IAAI9pB,EAAE,OAAOA,EAAEkB,KAAKknB,IAAIrhB,OAAOib,gBAAiBM,WAAW,EAAEtiB,EAAEuiB,WAAW,QAAG,GAAQhiB,EAAEG,UAAUqpB,UAAU,SAASxQ,EAAEza,EAAEyB,GAAG,OAAO,MAAMA,IAAIA,EAAEW,KAAK4oB,aAAavpB,GAAGzB,GAAGA,EAAEkB,EAAElB,GAAG,GAAG,UAAUya,GAAGhZ,EAAEypB,YAAYlrB,GAAGyB,EAAE0pB,cAAcnrB,KAAKyB,EAAE2pB,aAAaprB,GAAGyB,EAAE4pB,eAAerrB,IAAIyB,EAAEqiB,UAAS,GAAI1hB,KAAKkpB,YAAY7pB,SAAI,GAAQA,EAAEG,UAAU0pB,YAAY,SAASpqB,GAAG,IAAIuZ,EAAE,OAAO,MAAMvZ,IAAIA,EAAEkB,KAAK4oB,aAAavQ,EAAErY,KAAKknB,IAAIrhB,OAAOib,eAAe,MAAM9gB,KAAKmpB,gBAAgB9Q,EAAE+Q,kBAAkB/Q,EAAEgR,SAASvqB,SAAI,GAAQO,EAAEG,UAAU8pB,aAAa,SAASxqB,GAAG,IAAIuZ,EAAE,MAAM,UAAUvZ,EAAEoF,OAAOmU,EAAEvZ,EAAEyqB,SAAS3rB,EAAEomB,OAAO3L,IAAIza,EAAEkmB,MAAMzL,IAAIza,EAAEmmB,IAAI1L,IAAIza,EAAEqmB,MAAM5kB,EAAEG,UAAUgqB,QAAQ,SAASnR,GAAG,IAAIza,EAAE,OAA+BA,GAAxBya,EAAEvZ,EAAEuZ,GAAGoR,SAAShrB,IAAI,IAAQmM,cAAchN,EAAE8rB,YAAYrR,EAAEqR,WAAW9rB,EAAE8rB,UAAU5qB,EAAElB,GAAG0G,UAAU+T,GAAGhZ,EAAEG,UAAUqoB,WAAW,SAASxP,GAAG,IAAIhZ,EAAEX,EAAEL,EAAEsB,EAAEkf,EAAEK,EAAErhB,EAAEupB,EAAEnpB,EAAEyB,EAAEmhB,EAAE3iB,EAAE,IAAIA,EAAE8B,KAAK4oB,cAAc1qB,EAAEyrB,UAAU,CAAC,GAAGtR,EAAEkR,QAAQ3rB,EAAE6lB,MAAM,OAAO/kB,EAAEI,EAAEZ,EAAE0rB,gBAAgB5V,QAAQ,iBAAiB6V,WAAWJ,SAAS/qB,EAAEyY,GAAG,WAAWzY,EAAE4F,UAAU5F,EAAEI,EAAE,eAAekB,KAAKknB,IAAI9kB,WAAWmR,KAAK7U,EAAE6U,QAAQsW,WAAWC,OAAOL,cAAczpB,KAAKkpB,cAAc,GAAG,WAAWhmB,KAAKD,UAAUE,WAAW,CAAC,GAAGrE,EAAEZ,EAAE0rB,gBAAgBzS,GAAGnX,KAAKmf,UAAU,YAAYnf,KAAKkpB,cAAc7Q,EAAEkR,QAAQ3rB,EAAEsmB,WAAWhmB,EAAE0rB,eAAeG,WAAW3nB,SAAS4nB,eAAe/rB,EAAEC,EAAE+rB,YAAY,IAAI,IAAG5rB,EAAEH,EAAE+hB,cAAec,SAAS7iB,EAAE0rB,eAAe3rB,GAAGa,EAAET,EAAE6rB,iBAAiBL,WAAWC,OAAO3S,GAAG,qBAAqB0H,EAAE/f,EAAEZ,EAAE0rB,gBAAgBC,WAAWprB,IAAIR,GAAG+B,KAAK6oB,UAAU,QAAQ/pB,EAAE+f,GAAGgL,WAAWC,UAAUzR,EAAEkR,QAAQ3rB,EAAEkmB,MAAM5lB,EAAE0rB,eAAeG,WAAW3nB,SAAS+nB,YAAY9qB,EAAEP,EAAEZ,EAAE0rB,eAAeQ,kBAAmBjT,GAAG,oBAAoB,IAAIjZ,EAAE+rB,aAAajqB,KAAK6oB,UAAU,QAAQxpB,EAAEwqB,WAAWC,QAAS,GAAGhrB,EAAEZ,EAAE0rB,gBAAgB5V,QAAQ,mBAAmBf,SAAS,eAAeoX,WAAWpW,YAAY,gBAAgBvV,EAAEI,EAAE,eAAekB,KAAKknB,IAAI9kB,WAAWb,OAAO,GAAG7C,EAAEyY,GAAG,WAAW,IAAIzY,EAAE6U,OAAOhS,QAAQ7C,EAAE4F,SAAStE,KAAKspB,aAAajR,IAAI3Z,EAAEuV,YAAY,kBAAkBvV,EAAE6C,OAAO,EAAE,OAAO8W,EAAEkR,OAAO,KAAK3rB,EAAEkmB,KAAK,OAAO9jB,KAAK6oB,UAAU,SAASnqB,EAAED,IAAI,GAAGP,QAAQQ,EAAEuV,YAAY,eAAe,KAAKrW,EAAEomB,MAAM,OAAOhkB,KAAK6oB,UAAU,QAAQnqB,EAAED,IAAI,GAAGmM,YAAY1M,QAAQQ,EAAEuV,YAAY,eAAe,GAAGvV,EAAE6C,OAAO,IAAIsf,EAAEniB,EAAE8V,KAAK,0BAA0B9V,EAAEia,QAAQvJ,KAAKyR,GAAGrM,KAAK,sBAAsB,MAAMxU,KAAK6oB,UAAU,QAAQnqB,EAAED,IAAI,GAAGP,KAAIG,EAAEH,EAAE+hB,cAAec,SAAS7iB,EAAE0rB,eAAe,GAA2H1K,EAAE,iBAA1HkI,EAAEpnB,KAAKoQ,UAAU,WAAWrS,KAAKiC,KAAKA,KAAKmQ,GAAG9R,EAAE0B,WAAWC,KAAKwmB,OAAO,kBAAkBxmB,KAAKwmB,OAAO,oBAAwC,IAAI9nB,EAAE6C,QAAQ2d,IAAIvf,EAAEzB,EAAE+rB,YAAYjqB,KAAKmQ,GAAG5O,OAAO6lB,EAAE7lB,SAAS,IAAIrD,EAAE6iB,SAAS7iB,EAAE0rB,eAAejqB,GAAGjB,EAAEI,EAAE,UAAUkB,KAAKknB,IAAI9kB,UAAUoS,KAAKxU,KAAKwmB,OAAO,4BAA4BvT,SAAS,eAAe/U,EAAEosB,iBAAiB5rB,EAAED,IAAI,KAAIZ,EAAEa,EAAEmrB,WAAWC,OAAOrrB,IAAI,MAAO,WAAWyE,KAAKD,UAAUE,YAAYjF,EAAE6iB,SAASljB,EAAEA,EAAE0D,QAAQrD,EAAEiiB,OAAOtiB,EAAEA,EAAE0D,QAAQvB,KAAKkpB,YAAYhrB,IAAI8B,KAAK6oB,UAAU,QAAQhrB,EAAEK,OAAOghB,GAAGkI,EAAE7lB,OAAOvB,KAAKwmB,OAAO,SAAS,IAAI,OAAOtH,GAAGkI,EAAE7lB,QAAQvB,KAAKwmB,OAAO,SAAS,KAAK9mB,EAAE,CAAC6T,KAAK6T,EAAEmD,GAAG7rB,GAAGsB,KAAKuM,QAAQ,UAAU,CAACvM,KAAKmQ,GAAGzQ,EAAE6T,OAAOvT,KAAKqR,MAAM3R,IAAIM,KAAKgd,KAAKiJ,OAAOjmB,KAAKqR,MAAM,CAACkZ,GAAG7rB,GAAGA,EAAE6U,OAAOiC,QAAQxV,KAAKmQ,KAAK,IAAInQ,KAAKspB,aAAajR,IAAI3Z,EAAE4V,SAAS,kBAAkB5V,EAAEuV,YAAY,gBAAe,IAAKjU,KAAKoQ,UAAU,oBAAoBrS,KAAKiC,KAAKA,KAAKmQ,GAAGzR,IAAIsB,KAAK6oB,UAAU,QAAQ7oB,KAAKwpB,QAAQ9qB,EAAE6U,KAAK7U,EAAE6U,QAAQsW,WAAWW,WAAW,QAAQnrB,EAAEG,UAAU8iB,KAAK,WAAW,IAAM1kB,EAAEyB,EAAE,OAAOA,EAAEW,KAAKqR,MAAMkZ,GAAG5Q,WAAY3Z,KAAKqR,MAAMkZ,GAAG,GAAGE,iBAAiBlpB,QAAQvB,KAAKknB,IAAIrE,SAAS7iB,KAAKknB,IAAIvB,eAAe/nB,EAAKkB,EAAEkB,KAAKknB,IAAIrE,QAASlJ,SAASta,EAAE0a,MAAMnc,EAAEmc,KAAK/Z,KAAKmf,SAASgC,aAAa9hB,EAAEya,KAAKlc,EAAEkc,IAAI9Z,KAAKmf,SAAS+B,aAAa7hB,EAAEuhB,OAAOvhB,EAAEya,IAAI9Z,KAAKqR,MAAMkZ,GAAG7J,SAASrhB,QAAG,GAAQA,EAAEG,UAAUkpB,OAAO,SAAS5pB,EAAEuZ,GAAG,IAAIza,EAAEyB,EAAEX,EAAEL,EAAEsB,EAAE,OAAOK,KAAKmf,SAAShI,GAAG,WAAWnX,KAAKmf,SAASvP,SAAQvQ,EAAEW,KAAKwmB,OAAO,sBAAuBkC,OAAOrpB,EAAEqpB,OAAO3qB,KAAKiC,KAAKlB,EAAEuZ,IAAIha,EAAE,MAAMA,EAAE2B,KAAKwmB,OAAO,WAAWnoB,EAAEA,GAAG,IAAIT,EAAEya,EAAExX,KAAK,aAAab,KAAKqR,MAAMkZ,GAAGtW,YAAY,eAAehB,SAAS,kBAAkB7D,KAAKtQ,GAAG0V,KAAK,sBAAsB,GAAG5W,EAAE,YAAYoC,KAAKqR,MAAMkC,MAAMiB,KAAK,kBAAkB,UAAU9V,EAAEsB,KAAK4oB,eAAe5oB,KAAKqR,MAAMkZ,GAAGhpB,QAAQ7C,EAAEoqB,YAAY9oB,KAAKqR,MAAMkZ,GAAG,IAAI7rB,EAAEgjB,UAAS,GAAIhjB,EAAEsiB,WAAWrhB,EAAEK,KAAKknB,IAAI9kB,SAASmD,eAAe,GAAGlH,IAAI2B,KAAK6oB,UAAU,QAAQlpB,EAAEjB,IAAIsB,KAAKmf,SAAShI,GAAG,WAAWnX,KAAKmf,SAASvP,QAAQ5P,KAAKmf,SAASwJ,WAAWtpB,EAA91I,CAAi2IX,GAAS0oB,EAAE,WAAW,SAAS/O,EAAEvZ,GAAGkB,KAAKqU,QAAQvV,EAAEkB,KAAKmQ,GAAGnQ,KAAKqU,QAAQlE,GAAGnQ,KAAK0qB,QAAQ1qB,KAAKqU,QAAQ8K,SAAS,OAAO9G,EAAE7Y,UAAU+X,QAAQ,WAAW,OAAOvX,KAAK0qB,QAAQ7pB,KAAKb,KAAKmQ,GAAG,OAAOkI,EAAE7Y,UAAUmrB,MAAM,WAAW,OAAO3qB,KAAK0T,QAAQ,GAAG2E,EAAE7Y,UAAU6R,MAAM,SAASvS,EAAEuZ,GAAG,IAAIza,EAAEyB,EAAEX,EAAE,OAAOW,EAAEW,KAAK0T,QAAQhV,EAAEsB,KAAKqU,QAAQmS,OAAO,aAAannB,EAAEW,KAAKqU,QAAQjE,UAAU,UAAUrS,KAAKiC,KAAKqU,QAAQvV,EAAEO,EAAEX,IAAI,GAAGd,EAAEoC,KAAKqU,QAAQjE,UAAU,gBAAgB/Q,EAAEkC,OAAO,IAAI3D,GAAG,IAAIyB,EAAEkC,OAAO8W,EAAEhZ,GAAGzB,EAAEG,KAAKiC,KAAKqU,QAAQvV,EAAEuZ,IAAIA,EAAE7Y,UAAUkU,MAAM,WAAW,OAAO1T,KAAK0qB,QAAQ7pB,KAAKb,KAAKmQ,KAAK,IAAIkI,EAAE7Y,UAAUmN,KAAK,SAAS7N,GAAG,OAAOkB,KAAK0qB,QAAQ7pB,KAAKb,KAAKmQ,GAAGnQ,KAAKqU,QAAQjE,UAAU,cAAcrS,KAAKiC,KAAKqU,QAAQvV,GAAG,MAAMuZ,EAAE7Y,UAAUorB,KAAK,SAAS9rB,GAAG,OAAOkB,KAAK2qB,SAAS7rB,EAAEkB,KAAK6qB,MAAM/rB,QAAG,GAAQuZ,EAAE7Y,UAAUgoB,OAAO,SAAS1oB,GAAG,OAAOkB,KAAK6qB,MAAM/rB,IAAIuZ,EAAE7Y,UAAUqrB,MAAM,SAASxS,GAAG,MAAM,iBAAiBA,EAAEvZ,EAAE8S,KAAKyG,EAAE,CAACyS,SAAS,SAASC,KAAK,SAASjsB,GAAG,OAAO,SAASuZ,GAAG,OAAOvZ,EAAE6N,KAAK0L,IAA7C,CAAkDrY,OAAOA,KAAK2M,KAAK0L,IAAIA,EAA78B,GAAw9Bpa,EAAE,WAAW,SAASoa,EAAEA,GAAGrY,KAAKqU,QAAQgE,EAAErY,KAAKmP,IAAIrQ,EAAE,iEAAiEkB,KAAKgrB,MAAMhrB,KAAKmP,IAAI8b,WAAWjrB,KAAKkrB,UAAU,KAAKlrB,KAAKqU,QAAQlF,IAAImE,OAAOtT,KAAKmP,KAAKnP,KAAKmrB,YAAY,OAAO9S,EAAE7Y,UAAUwmB,KAAK,WAAW,IAAIlnB,EAAEuZ,EAAE,OAAOA,EAAErY,KAAKqU,QAAQmS,OAAO,UAAUxmB,KAAKqU,QAAQlE,GAAGib,WAAW,IAAGtsB,EAAEkB,KAAKqU,QAAQmS,OAAO,eAAgB,IAAIxmB,KAAKmP,IAAI8b,WAAW1pB,QAAQvB,KAAKmP,IAAI4O,QAAQjf,GAAGkB,KAAKmP,IAAIqF,KAAK,CAAChT,GAAG,WAAW6W,KAAKA,EAAE7Y,UAAU+X,QAAQ,WAAW,OAAOvX,KAAKmP,IAAI7K,UAAU+T,EAAE7Y,UAAU2rB,UAAU,WAAW,IAAI9S,EAAEza,EAAEyB,EAAE,OAAOgZ,EAAErY,KAAKmP,IAAIH,KAAK,MAAMpR,EAAE,EAAEyB,EAAE,EAAEgZ,EAAE3K,GAAG,uBAAuB,MAAwB,SAAShP,GAAG,IAAIL,EAAE,IAAIT,IAAIc,EAAE2sB,SAAShsB,IAAIX,EAAE4sB,WAAW1tB,EAAEc,EAAE2sB,QAAQhsB,EAAEX,EAAE4sB,UAAQjtB,EAAES,EAAEJ,EAAE4a,gBAAkBhF,SAAS,QAAQ,OAAO+D,EAAErJ,KAAK,QAAQiF,YAAY,OAAO5V,EAAE4U,SAAS,UAAgBvF,GAAG,mBAAmB,KAAK,SAAS9P,GAAG,OAAO,SAASyB,GAAG,OAAOgZ,EAAErJ,KAAK,QAAQiF,YAAY,OAAOnV,EAAEO,EAAEia,eAAerG,SAAS,OAAOrV,EAAEqpB,OAAO5nB,GAAGA,EAAE6W,kBAAzH,CAA4IlW,QAAQqY,EAAE7Y,UAAUqnB,QAAQ,WAAW,OAAO/nB,EAAEysB,KAAKC,QAAQ3E,QAAQ7mB,KAAKmP,IAAI,KAAKkJ,EAAE7Y,UAAUwnB,YAAY,WAAW,OAAOhnB,KAAKmP,IAAIH,KAAK,QAAQzN,OAAO,GAAG8W,EAAE7Y,UAAUynB,OAAO,SAASnoB,GAAG,IAAIuZ,EAAEza,EAAE,OAAOya,EAAErY,KAAKmP,IAAIH,KAAK,SAASzN,SAAS3D,EAAEoC,KAAKqU,QAAQqT,iBAAiBrP,GAAGrY,KAAKqU,QAAQ6T,mBAAmBloB,KAAKqU,QAAQqU,OAAO1oB,KAAKqU,QAAQjE,UAAU,gBAAgBrS,KAAKiC,KAAKqU,QAAQzW,EAAEya,EAAEvZ,GAAGuZ,GAAGrY,KAAKqU,QAAQ9H,QAAQ,WAAW,CAAC8L,EAAEvZ,IAAIkB,KAAKimB,KAAKnnB,IAAIkB,KAAKqU,QAAQmS,OAAO,qBAAqBxmB,KAAKyrB,aAAY,OAAG,GAAQpT,EAAE7Y,UAAUksB,WAAW,SAASrT,GAAG,IAAIza,EAAEyB,EAAEX,EAAEL,EAAE,OAAOT,EAAEoC,KAAKqU,QAAQ6S,IAAIvB,aAAa3lB,KAAKqU,QAAQ6S,IAAIrhB,OAAOA,OAAOwS,EAAEuI,OAAO5gB,KAAKmP,IAAIuR,SAAS5hB,EAAElB,GAAGsjB,YAAYpiB,EAAElB,GAAG8iB,WAAWrI,EAAEuI,OAAOvI,EAAEyB,IAAI9Z,KAAKmP,IAAIuR,UAAUrI,EAAE0B,MAAMrb,EAAEI,EAAElB,GAAGqc,QAAQja,KAAKmP,IAAI8K,QAAQ,KAAK5B,EAAE0B,KAAKrb,GAAGW,EAAE,CAAC0a,KAAK1B,EAAE0B,KAAKD,IAAIzB,EAAEuI,QAAQ,OAAOviB,EAAE2B,KAAKqU,QAAQjE,UAAU,sBAAsB/R,EAAEN,KAAKiC,KAAKqU,QAAQhV,GAAGW,KAAKmP,IAAIwK,OAAOta,GAAGW,KAAKqU,QAAQ9H,QAAQ,aAAa,CAAClN,KAAKgZ,EAAE7Y,UAAUunB,KAAK,WAAW,IAAM1O,EAAEza,EAAEyB,EAAE,OAAkDgZ,EAAzCrY,KAAKmP,IAAIH,KAAK,QAAQiF,YAAY,OAAW8S,QAASxlB,SAAS8W,EAAErY,KAAKmP,IAAIH,KAAK,aAAaqJ,EAAEpF,SAAS,OAAc5T,GAAPzB,EAAEya,EAAE,IAAOsT,UAAU/tB,EAAEguB,cAAchuB,EAAEgN,YAAYhN,EAAEgN,YAAYghB,aAAa,GAAG5rB,KAAKkhB,UAAUmG,KAAKxQ,IAAI,EAAExX,EAAEW,KAAKmP,IAAIuR,YAAYrI,EAAE7Y,UAAUsnB,KAAK,WAAW,IAAMzO,EAAEza,EAAEyB,EAAE,OAAkDzB,EAAzCoC,KAAKmP,IAAIH,KAAK,QAAQiF,YAAY,OAAW6S,QAASvlB,SAAS3D,EAAEoC,KAAKmP,IAAIH,KAAK,YAAYpR,EAAEqV,SAAS,OAAcoF,GAAPhZ,EAAEzB,EAAE,IAAO+tB,UAAUtsB,EAAEusB,cAAcvsB,EAAEuL,YAAYvL,EAAEuL,YAAYghB,aAAa,GAAG5rB,KAAKkhB,UAAUmG,KAAKxQ,IAAI,EAAEwB,EAAErY,KAAKmP,IAAIuR,YAAYrI,EAAE7Y,UAAU0hB,UAAU,SAASpiB,GAAG,IAAIuZ,EAAE,OAAOA,EAAErY,KAAKqU,QAAQmS,OAAO,mBAAoBxmB,KAAKgrB,MAAMa,QAAQ,CAAC3K,UAAUpiB,GAAGuZ,GAAGrY,KAAKgrB,MAAM9J,UAAUpiB,IAAIuZ,EAAE7Y,UAAUqV,KAAK,WAAW,IAAI/V,EAAE,OAAOkB,KAAKyrB,iBAAiBzrB,KAAKyrB,aAAY,IAAKzrB,KAAK6mB,YAAY7mB,KAAKmP,IAAI0F,OAAO7U,KAAKmP,IAAI+R,UAAU,GAAGlhB,KAAKqU,QAAQ9H,QAAQ,WAAWzN,EAAEkB,KAAKqU,QAAQiO,QAAQtiB,KAAK0rB,WAAW5sB,QAAG,IAASuZ,EAAE7Y,UAAUymB,KAAK,SAASnnB,EAAEuZ,GAAG,IAAIza,EAAE,GAAGoC,KAAK6mB,UAAU,OAAOiF,MAAMzT,IAAIrY,KAAKmP,IAAI8W,OAAOjmB,KAAKqU,QAAQ9H,QAAQ,SAAS,CAACzN,MAAMlB,EAAE,SAASkB,GAAG,OAAO,WAAW,OAAOA,EAAEmnB,QAAvC,CAAgDjmB,MAAMwR,aAAaxR,KAAKkrB,WAAWlrB,KAAKkrB,UAAU/E,WAAWvoB,EAAEya,KAAKA,EAAE7Y,UAAUqP,OAAO,SAASwJ,GAAG,IAAIza,EAAEyB,EAAEX,EAAEL,EAAEsB,EAAEkf,EAAEK,EAAE,GAAKpgB,EAAE8oB,QAAQvP,IAAIA,EAAE9W,OAAO,EAA5B,CAAuD,IAAIvB,KAAKmP,IAAIH,KAAK,MAAM2J,QAAQtZ,EAAEW,KAAKmP,IAAIH,KAAK,MAAMkQ,EAAElf,KAAKqU,QAAQmS,OAAO,cAAc9nB,EAAE,EAAEiB,EAAE0Y,EAAE9W,OAAO5B,EAAEjB,EAAEA,IAAIL,EAAEga,EAAE3Z,GAAGL,EAAES,EAAE6J,OAAO,GAAGtK,EAAE,CAAC,WAAW2B,KAAKqU,QAAQlE,KAAK0O,EAAE7e,KAAKqU,QAAQjE,UAAU,WAAWrS,KAAKiC,KAAKqU,QAAQ6K,EAAE7gB,EAAE,cAAaT,EAAEkB,EAAEkB,KAAKqU,QAAQjE,UAAU,eAAerS,KAAKiC,KAAKqU,QAAQwK,EAAE7e,KAAKqU,QAAQhD,MAAMkC,QAAS1S,KAAK,YAAYxC,GAAGgB,EAAEiU,OAAO1V,GAAG,OAAOoC,KAAK6U,OAAO7U,KAAKqU,QAAQmS,OAAO,kBAAkBnnB,EAAE2P,KAAK,YAAYiE,SAAS,YAAO,EAA/cjT,KAAKimB,QAAkd5N,EAAjnH,GAA4nH3Y,EAAE,CAACkrB,KAAK,SAAS9rB,EAAEuZ,GAAG,IAAIza,EAAE,OAAOA,EAAEoC,KAAK4lB,WAAW9mB,IAAIlB,EAAEqN,MAAM2f,KAAKvS,QAAG,GAAQ0T,YAAY,WAAW,IAAIjtB,EAAE,SAAS,OAAOA,EAAEkB,KAAK4lB,cAAc9mB,EAAEke,KAAK6J,eAAU,IAASZ,KAAK,WAAW,IAAInnB,EAAE,OAAO,OAAOA,EAAEkB,KAAK4lB,cAAc9mB,EAAEke,KAAKiJ,YAAO,GAAQyF,WAAW,WAAW,IAAI5sB,EAAE,OAAOA,EAAEkB,KAAK4lB,cAAc9mB,EAAEke,KAAK0O,WAAW5sB,EAAEwjB,aAAQ,GAAQ0J,UAAU,SAASltB,EAAEuZ,GAAG,OAAOrY,KAAKmlB,iBAAiBrmB,EAAEuZ,GAAG,MAAM4T,IAAI,WAAW,OAAOjsB,KAAKomB,YAAY7O,QAAQ,WAAW,OAAOvX,KAAKymB,WAAWzmB,KAAKmf,SAASte,KAAK,QAAQ,QAAQ/B,EAAEkkB,GAAG9S,MAAM,SAASmI,GAAG,IAAIza,EAAEc,EAAE,OAAOd,EAAEmO,UAAUrN,EAAE,KAAKsB,KAAKkF,OAAO,iEAAiE2C,MAAK,WAAW,IAAIxJ,EAAEsB,EAAE,OAAOA,GAAGtB,EAAES,EAAEkB,OAAOa,KAAK,WAAWxC,EAAEwC,KAAK,QAAQlB,EAAE,IAAIN,EAAEW,OAAO,YAAiBqY,IAAGA,EAAE3Y,EAAE2Y,IAAI1Y,EAAEjB,EAAEgB,EAAE2Y,GAAGvM,MAAMnM,EAAEusB,MAAM1sB,UAAU6iB,MAAMtkB,KAAKH,EAAE,IAAIkB,EAAE0Y,MAAM,UAAUa,EAAE,mCAAmC1Y,EAAEmmB,IAAIzN,EAAElI,GAAGkI,MAAK,MAAM3Z,EAAEA,EAAEsB,MAAMlB,EAAEkkB,GAAG9S,MAAL,QAAsB,CAACC,QAAG,EAAO4V,WAAM,EAAOllB,KAAK,KAAK+P,WAAW,mBAAmBG,UAAU,qBAAqBob,UAAU,KAAK/b,UAAUiI,EAAE+T,kBAAkB,GAAGpb,UAAU,OAAOqb,YAAO,EAAOC,mBAAkB,EAAGC,gBAAe,EAAGC,gBAAe,EAAGC,gBAAe,EAAG3c,MAAM,EAAE4c,OAAO,GAAGC,OAAO,EAAEC,eAAe,IAAInb,MAAM,KAAKob,mBAAkB,EAAGC,iBAAgB,EAAGC,wBAAwB,GAAGC,eAAe,IAAIC,oBAAmB,EAAGC,eAAc,GAAIpuB,EAAEkkB,GAAG9S,MAAMwV,OAAM,EAAx6nBrN,CAAEvZ,IAAjC,4B,gBCG3D,IAAIqB,EAAU,EAAQ,IACA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAC7DA,EAAQgtB,SAAQxvB,EAAOD,QAAUyC,EAAQgtB,SAG/BC,EADH,EAAQ,GAAqEC,SACtE,WAAYltB,GAAS,EAAM,K,iBCRlCxC,EAAOD,QAAU,EAAQ,EAAR,EAAmE,IAEtFgE,KAAK,CAAC/D,EAAOC,EAAI,gsCAAisC,M,gBCC1tC,IAAIuC,EAAU,EAAQ,IACA,iBAAZA,IAAsBA,EAAU,CAAC,CAACxC,EAAOC,EAAIuC,EAAS,MAC7DA,EAAQgtB,SAAQxvB,EAAOD,QAAUyC,EAAQgtB,SAG/BC,EADH,EAAQ,GAAqEC,SACtE,WAAYltB,GAAS,EAAM,K,iBCRlCxC,EAAOD,QAAU,EAAQ,EAAR,EAAmE,IAEtFgE,KAAK,CAAC/D,EAAOC,EAAI,krKAAmrK","file":"comments.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","module.exports = jQuery;","\"use strict\";\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = cssWithMappingToString(item, useSourceMap);\n\n      if (item[2]) {\n        return \"@media \".concat(item[2], \"{\").concat(content, \"}\");\n      }\n\n      return content;\n    }).join('');\n  }; // import a list of modules into the list\n  // eslint-disable-next-line func-names\n\n\n  list.i = function (modules, mediaQuery) {\n    if (typeof modules === 'string') {\n      // eslint-disable-next-line no-param-reassign\n      modules = [[null, modules, '']];\n    }\n\n    var alreadyImportedModules = {};\n\n    for (var i = 0; i < this.length; i++) {\n      // eslint-disable-next-line prefer-destructuring\n      var id = this[i][0];\n\n      if (id != null) {\n        alreadyImportedModules[id] = true;\n      }\n    }\n\n    for (var _i = 0; _i < modules.length; _i++) {\n      var item = modules[_i]; // skip already imported module\n      // this implementation is not 100% perfect for weird media query combinations\n      // when a module is imported multiple times with different media queries.\n      // I hope this will never occur (Hey this way we have smaller bundles)\n\n      if (item[0] == null || !alreadyImportedModules[item[0]]) {\n        if (mediaQuery && !item[2]) {\n          item[2] = mediaQuery;\n        } else if (mediaQuery) {\n          item[2] = \"(\".concat(item[2], \") and (\").concat(mediaQuery, \")\");\n        }\n\n        list.push(item);\n      }\n    }\n  };\n\n  return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n  var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n  var cssMapping = item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (useSourceMap && typeof btoa === 'function') {\n    var sourceMapping = toComment(cssMapping);\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return \"/*# sourceURL=\".concat(cssMapping.sourceRoot).concat(source, \" */\");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n  }\n\n  return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n  // eslint-disable-next-line no-undef\n  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n  var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n  return \"/*# \".concat(data, \" */\");\n}","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n  var styles = []\n  var newStyles = {}\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i]\n    var id = item[0]\n    var css = item[1]\n    var media = item[2]\n    var sourceMap = item[3]\n    var part = {\n      id: parentId + ':' + i,\n      css: css,\n      media: media,\n      sourceMap: sourceMap\n    }\n    if (!newStyles[id]) {\n      styles.push(newStyles[id] = { id: id, parts: [part] })\n    } else {\n      newStyles[id].parts.push(part)\n    }\n  }\n  return styles\n}\n","/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n  Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n  if (!hasDocument) {\n    throw new Error(\n    'vue-style-loader cannot be used in a non-browser environment. ' +\n    \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n  ) }\n}\n\n/*\ntype StyleObject = {\n  id: number;\n  parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n  css: string;\n  media: string;\n  sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n  [id: number]: {\n    id: number,\n    refs: number,\n    parts: Array<(obj?: StyleObjectPart) => void>\n  }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n  isProduction = _isProduction\n\n  options = _options || {}\n\n  var styles = listToStyles(parentId, list)\n  addStylesToDom(styles)\n\n  return function update (newList) {\n    var mayRemove = []\n    for (var i = 0; i < styles.length; i++) {\n      var item = styles[i]\n      var domStyle = stylesInDom[item.id]\n      domStyle.refs--\n      mayRemove.push(domStyle)\n    }\n    if (newList) {\n      styles = listToStyles(parentId, newList)\n      addStylesToDom(styles)\n    } else {\n      styles = []\n    }\n    for (var i = 0; i < mayRemove.length; i++) {\n      var domStyle = mayRemove[i]\n      if (domStyle.refs === 0) {\n        for (var j = 0; j < domStyle.parts.length; j++) {\n          domStyle.parts[j]()\n        }\n        delete stylesInDom[domStyle.id]\n      }\n    }\n  }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n  for (var i = 0; i < styles.length; i++) {\n    var item = styles[i]\n    var domStyle = stylesInDom[item.id]\n    if (domStyle) {\n      domStyle.refs++\n      for (var j = 0; j < domStyle.parts.length; j++) {\n        domStyle.parts[j](item.parts[j])\n      }\n      for (; j < item.parts.length; j++) {\n        domStyle.parts.push(addStyle(item.parts[j]))\n      }\n      if (domStyle.parts.length > item.parts.length) {\n        domStyle.parts.length = item.parts.length\n      }\n    } else {\n      var parts = []\n      for (var j = 0; j < item.parts.length; j++) {\n        parts.push(addStyle(item.parts[j]))\n      }\n      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n    }\n  }\n}\n\nfunction createStyleElement () {\n  var styleElement = document.createElement('style')\n  styleElement.type = 'text/css'\n  head.appendChild(styleElement)\n  return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n  var update, remove\n  var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n  if (styleElement) {\n    if (isProduction) {\n      // has SSR styles and in production mode.\n      // simply do nothing.\n      return noop\n    } else {\n      // has SSR styles but in dev mode.\n      // for some reason Chrome can't handle source map in server-rendered\n      // style tags - source maps in <style> only works if the style tag is\n      // created and inserted dynamically. So we remove the server rendered\n      // styles and inject new ones.\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  if (isOldIE) {\n    // use singleton mode for IE9.\n    var styleIndex = singletonCounter++\n    styleElement = singletonElement || (singletonElement = createStyleElement())\n    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n  } else {\n    // use multi-style-tag mode in all other cases\n    styleElement = createStyleElement()\n    update = applyToTag.bind(null, styleElement)\n    remove = function () {\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  update(obj)\n\n  return function updateStyle (newObj /* StyleObjectPart */) {\n    if (newObj) {\n      if (newObj.css === obj.css &&\n          newObj.media === obj.media &&\n          newObj.sourceMap === obj.sourceMap) {\n        return\n      }\n      update(obj = newObj)\n    } else {\n      remove()\n    }\n  }\n}\n\nvar replaceText = (function () {\n  var textStore = []\n\n  return function (index, replacement) {\n    textStore[index] = replacement\n    return textStore.filter(Boolean).join('\\n')\n  }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n  var css = remove ? '' : obj.css\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = replaceText(index, css)\n  } else {\n    var cssNode = document.createTextNode(css)\n    var childNodes = styleElement.childNodes\n    if (childNodes[index]) styleElement.removeChild(childNodes[index])\n    if (childNodes.length) {\n      styleElement.insertBefore(cssNode, childNodes[index])\n    } else {\n      styleElement.appendChild(cssNode)\n    }\n  }\n}\n\nfunction applyToTag (styleElement, obj) {\n  var css = obj.css\n  var media = obj.media\n  var sourceMap = obj.sourceMap\n\n  if (media) {\n    styleElement.setAttribute('media', media)\n  }\n  if (options.ssrId) {\n    styleElement.setAttribute(ssrIdKey, obj.id)\n  }\n\n  if (sourceMap) {\n    // https://developer.chrome.com/devtools/docs/javascript-debugging\n    // this makes source maps inside style tags work properly in Chrome\n    css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n    // http://stackoverflow.com/a/26603875\n    css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n  }\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild)\n    }\n    styleElement.appendChild(document.createTextNode(css))\n  }\n}\n","import './app'\nimport './templates'\nimport './commentmodel'\nimport './commentcollection'\nimport './commentsummarymodel'\nimport './commentstabview'\nimport './commentsmodifymenu'\nimport './filesplugin'\nimport './activitytabviewplugin'\nimport './search'\n\nimport './vendor/Caret.js/dist/jquery.caret.min'\nimport './vendor/At.js/dist/js/jquery.atwho.min'\n\nimport './style/autocomplete.scss'\nimport './style/comments.scss'\n\nwindow.OCA.Comments = OCA.Comments\n","/*\n * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com>\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n(function() {\n\tif (!OCA.Comments) {\n\t\t/**\n\t\t * @namespace\n\t\t */\n\t\tOCA.Comments = {}\n\t}\n\n})()\n","(function() {\n  var template = Handlebars.template, templates = OCA.Comments.Templates = OCA.Comments.Templates || {};\ntemplates['comment'] = template({\"1\":function(container,depth0,helpers,partials,data) {\n    return \" unread\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    return \" collapsed\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    return \" currentUser\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var helper;\n\n  return \"data-username=\\\"\"\n    + container.escapeExpression(((helper = (helper = helpers.actorId || (depth0 != null ? depth0.actorId : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"actorId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n    return \"\t\t\t<a href=\\\"#\\\" class=\\\"action more icon icon-more has-tooltip\\\"></a>\\n\t\t\t<div class=\\\"deleteLoading icon-loading-small hidden\\\"></div>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n    return \"\t\t<div class=\\\"message-overlay\\\"></div>\\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n  return \"<li class=\\\"comment\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isUnread : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isLong : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\" data-id=\\\"\"\n    + alias4(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\t<div class=\\\"authorRow\\\">\\n\t\t<div class=\\\"avatar\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isUserAuthor : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.actorId : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"> </div>\\n\t\t<div class=\\\"author\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isUserAuthor : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.actorDisplayName || (depth0 != null ? depth0.actorDisplayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"actorDisplayName\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</div>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isUserAuthor : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t<div class=\\\"date has-tooltip live-relative-timestamp\\\" data-timestamp=\\\"\"\n    + alias4(((helper = (helper = helpers.timestamp || (depth0 != null ? depth0.timestamp : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"timestamp\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" title=\\\"\"\n    + alias4(((helper = (helper = helpers.altDate || (depth0 != null ? depth0.altDate : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"altDate\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.date || (depth0 != null ? depth0.date : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"date\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</div>\\n\t</div>\\n\t<div class=\\\"message\\\">\"\n    + ((stack1 = ((helper = (helper = helpers.formattedMessage || (depth0 != null ? depth0.formattedMessage : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"formattedMessage\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n    + \"</div>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isLong : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"</li>\\n\";\n},\"useData\":true});\ntemplates['commentsmodifymenu'] = template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n  return \"\t\t<li>\\n\t\t\t<a href=\\\"#\\\" class=\\\"menuitem action \"\n    + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n    + \" permanent\\\" data-action=\\\"\"\n    + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.iconClass : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(4, data, 0),\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t\t\t<span>\"\n    + alias4(((helper = (helper = helpers.displayName || (depth0 != null ? depth0.displayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"displayName\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\t\t\t</a>\\n\t\t</li>\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var helper;\n\n  return \"\t\t\t\t\t<span class=\\\"icon \"\n    + container.escapeExpression(((helper = (helper = helpers.iconClass || (depth0 != null ? depth0.iconClass : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"iconClass\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></span>\\n\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n    return \"\t\t\t\t\t<span class=\\\"no-icon\\\"></span>\\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return \"<ul>\\n\"\n    + ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.items : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"</ul>\\n\";\n},\"useData\":true});\ntemplates['edit_comment'] = template({\"1\":function(container,depth0,helpers,partials,data) {\n    var helper;\n\n  return \"\t\t\t<div class=\\\"action-container\\\">\\n\t\t\t\t<a href=\\\"#\\\" class=\\\"action cancel icon icon-close has-tooltip\\\" title=\\\"\"\n    + container.escapeExpression(((helper = (helper = helpers.cancelText || (depth0 != null ? depth0.cancelText : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"cancelText\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></a>\\n\t\t\t</div>\\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n  return \"<\"\n    + alias4(((helper = (helper = helpers.tag || (depth0 != null ? depth0.tag : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"tag\",\"hash\":{},\"data\":data}) : helper)))\n    + \" class=\\\"newCommentRow comment\\\" data-id=\\\"\"\n    + alias4(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"id\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\t<div class=\\\"authorRow\\\">\\n\t\t<div class=\\\"avatar currentUser\\\" data-username=\\\"\"\n    + alias4(((helper = (helper = helpers.actorId || (depth0 != null ? depth0.actorId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"actorId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></div>\\n\t\t<div class=\\\"author currentUser\\\">\"\n    + alias4(((helper = (helper = helpers.actorDisplayName || (depth0 != null ? depth0.actorDisplayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"actorDisplayName\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</div>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isEditMode : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t</div>\\n\t<form class=\\\"newCommentForm\\\">\\n\t\t<div contentEditable=\\\"true\\\" class=\\\"message\\\" data-placeholder=\\\"\"\n    + alias4(((helper = (helper = helpers.newMessagePlaceholder || (depth0 != null ? depth0.newMessagePlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"newMessagePlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.message || (depth0 != null ? depth0.message : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"message\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</div>\\n\t\t<input class=\\\"submit icon-confirm has-tooltip\\\" type=\\\"submit\\\" value=\\\"\\\" title=\\\"\"\n    + alias4(((helper = (helper = helpers.submitText || (depth0 != null ? depth0.submitText : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"submitText\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"/>\\n\t\t<div class=\\\"submitLoading icon-loading-small hidden\\\"></div>\\n\t</form>\\n</\"\n    + alias4(((helper = (helper = helpers.tag || (depth0 != null ? depth0.tag : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"tag\",\"hash\":{},\"data\":data}) : helper)))\n    + \">\\n\";\n},\"useData\":true});\ntemplates['filesplugin'] = template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n  return \"<a class=\\\"action action-comment permanent\\\" title=\\\"\"\n    + alias4(((helper = (helper = helpers.countMessage || (depth0 != null ? depth0.countMessage : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"countMessage\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" href=\\\"#\\\">\\n\t<img class=\\\"svg\\\" src=\\\"\"\n    + alias4(((helper = (helper = helpers.iconUrl || (depth0 != null ? depth0.iconUrl : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"iconUrl\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"/>\\n</a>\\n\";\n},\"useData\":true});\ntemplates['view'] = template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n  return \"<ul class=\\\"comments\\\">\\n</ul>\\n<div class=\\\"emptycontent hidden\\\"><div class=\\\"icon-comment\\\"></div>\\n\t<p>\"\n    + alias4(((helper = (helper = helpers.emptyResultLabel || (depth0 != null ? depth0.emptyResultLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"emptyResultLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</p></div>\\n<input type=\\\"button\\\" class=\\\"showMore hidden\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.moreLabel || (depth0 != null ? depth0.moreLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"moreLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" name=\\\"show-more\\\" id=\\\"show-more\\\" />\\n<div class=\\\"loading hidden\\\" style=\\\"height: 50px\\\"></div>\\n\";\n},\"useData\":true});\n})();","/*\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n(function(OC, OCA) {\n\n\t_.extend(OC.Files.Client, {\n\t\tPROPERTY_FILEID:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}id',\n\t\tPROPERTY_MESSAGE: '{' + OC.Files.Client.NS_OWNCLOUD + '}message',\n\t\tPROPERTY_ACTORTYPE:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}actorType',\n\t\tPROPERTY_ACTORID:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}actorId',\n\t\tPROPERTY_ISUNREAD:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}isUnread',\n\t\tPROPERTY_OBJECTID:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}objectId',\n\t\tPROPERTY_OBJECTTYPE:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}objectType',\n\t\tPROPERTY_ACTORDISPLAYNAME:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}actorDisplayName',\n\t\tPROPERTY_CREATIONDATETIME:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}creationDateTime',\n\t\tPROPERTY_MENTIONS: '{' + OC.Files.Client.NS_OWNCLOUD + '}mentions'\n\t})\n\n\t/**\n\t * @class OCA.Comments.CommentModel\n\t * @classdesc\n\t *\n\t * Comment\n\t *\n\t */\n\tvar CommentModel = OC.Backbone.Model.extend(\n\t\t/** @lends OCA.Comments.CommentModel.prototype */ {\n\t\t\tsync: OC.Backbone.davSync,\n\n\t\t\tdefaults: {\n\t\t\t\tactorType: 'users',\n\t\t\t\tobjectType: 'files'\n\t\t\t},\n\n\t\t\tdavProperties: {\n\t\t\t\t'id':\tOC.Files.Client.PROPERTY_FILEID,\n\t\t\t\t'message':\tOC.Files.Client.PROPERTY_MESSAGE,\n\t\t\t\t'actorType':\tOC.Files.Client.PROPERTY_ACTORTYPE,\n\t\t\t\t'actorId':\tOC.Files.Client.PROPERTY_ACTORID,\n\t\t\t\t'actorDisplayName':\tOC.Files.Client.PROPERTY_ACTORDISPLAYNAME,\n\t\t\t\t'creationDateTime':\tOC.Files.Client.PROPERTY_CREATIONDATETIME,\n\t\t\t\t'objectType':\tOC.Files.Client.PROPERTY_OBJECTTYPE,\n\t\t\t\t'objectId':\tOC.Files.Client.PROPERTY_OBJECTID,\n\t\t\t\t'isUnread':\tOC.Files.Client.PROPERTY_ISUNREAD,\n\t\t\t\t'mentions': OC.Files.Client.PROPERTY_MENTIONS\n\t\t\t},\n\n\t\t\tparse: function(data) {\n\t\t\t\treturn {\n\t\t\t\t\tid: data.id,\n\t\t\t\t\tmessage: data.message,\n\t\t\t\t\tactorType: data.actorType,\n\t\t\t\t\tactorId: data.actorId,\n\t\t\t\t\tactorDisplayName: data.actorDisplayName,\n\t\t\t\t\tcreationDateTime: data.creationDateTime,\n\t\t\t\t\tobjectType: data.objectType,\n\t\t\t\t\tobjectId: data.objectId,\n\t\t\t\t\tisUnread: (data.isUnread === 'true'),\n\t\t\t\t\tmentions: this._parseMentions(data.mentions)\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_parseMentions: function(mentions) {\n\t\t\t\tif (_.isUndefined(mentions)) {\n\t\t\t\t\treturn {}\n\t\t\t\t}\n\t\t\t\tvar result = {}\n\t\t\t\tfor (var i in mentions) {\n\t\t\t\t\tvar mention = mentions[i]\n\t\t\t\t\tif (_.isUndefined(mention.localName) || mention.localName !== 'mention') {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tresult[i] = {}\n\t\t\t\t\tfor (var child = mention.firstChild; child; child = child.nextSibling) {\n\t\t\t\t\t\tif (_.isUndefined(child.localName) || !child.localName.startsWith('mention')) {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult[i][child.localName] = child.textContent\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result\n\t\t\t}\n\t\t})\n\n\tOCA.Comments.CommentModel = CommentModel\n})(OC, OCA)\n","/* eslint-disable */\n/*\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n(function(OC, OCA) {\n\n\t/**\n\t * @class OCA.Comments.CommentCollection\n\t * @classdesc\n\t *\n\t * Collection of comments assigned to a file\n\t *\n\t */\n\tvar CommentCollection = OC.Backbone.Collection.extend(\n\t\t/** @lends OCA.Comments.CommentCollection.prototype */ {\n\n\t\t\tsync: OC.Backbone.davSync,\n\n\t\t\tmodel: OCA.Comments.CommentModel,\n\n\t\t\t/**\n\t\t * Object type\n\t\t *\n\t\t * @type string\n\t\t */\n\t\t\t_objectType: 'files',\n\n\t\t\t/**\n\t\t * Object id\n\t\t *\n\t\t * @type string\n\t\t */\n\t\t\t_objectId: null,\n\n\t\t\t/**\n\t\t * True if there are no more page results left to fetch\n\t\t *\n\t\t * @type bool\n\t\t */\n\t\t\t_endReached: false,\n\n\t\t\t/**\n\t\t * Number of comments to fetch per page\n\t\t *\n\t\t * @type int\n\t\t */\n\t\t\t_limit: 20,\n\n\t\t\t/**\n\t\t * Initializes the collection\n\t\t *\n\t\t * @param {string} [options.objectType] object type\n\t\t * @param {string} [options.objectId] object id\n\t\t */\n\t\t\tinitialize: function(models, options) {\n\t\t\t\toptions = options || {}\n\t\t\t\tif (options.objectType) {\n\t\t\t\t\tthis._objectType = options.objectType\n\t\t\t\t}\n\t\t\t\tif (options.objectId) {\n\t\t\t\t\tthis._objectId = options.objectId\n\t\t\t\t}\n\t\t\t},\n\n\t\t\turl: function() {\n\t\t\t\treturn OC.linkToRemote('dav') + '/comments/'\n\t\t\t\t+ encodeURIComponent(this._objectType) + '/'\n\t\t\t\t+ encodeURIComponent(this._objectId) + '/'\n\t\t\t},\n\n\t\t\tsetObjectId: function(objectId) {\n\t\t\t\tthis._objectId = objectId\n\t\t\t},\n\n\t\t\thasMoreResults: function() {\n\t\t\t\treturn !this._endReached\n\t\t\t},\n\n\t\t\treset: function() {\n\t\t\t\tthis._endReached = false\n\t\t\t\tthis._summaryModel = null\n\t\t\t\treturn OC.Backbone.Collection.prototype.reset.apply(this, arguments)\n\t\t\t},\n\n\t\t\t/**\n\t\t * Fetch the next set of results\n\t\t */\n\t\t\tfetchNext: function(options) {\n\t\t\t\tvar self = this\n\t\t\t\tif (!this.hasMoreResults()) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\n\t\t\t\tvar body = '<?xml version=\"1.0\" encoding=\"utf-8\" ?>\\n'\n\t\t\t\t+ '<oc:filter-comments xmlns:D=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\">\\n'\n\t\t\t\t// load one more so we know there is more\n\t\t\t\t+ '    <oc:limit>' + (this._limit + 1) + '</oc:limit>\\n'\n\t\t\t\t+ '    <oc:offset>' + this.length + '</oc:offset>\\n'\n\t\t\t\t+ '</oc:filter-comments>\\n'\n\n\t\t\t\toptions = options || {}\n\t\t\t\tvar success = options.success\n\t\t\t\toptions = _.extend({\n\t\t\t\t\tremove: false,\n\t\t\t\t\tparse: true,\n\t\t\t\t\tdata: body,\n\t\t\t\t\tdavProperties: CommentCollection.prototype.model.prototype.davProperties,\n\t\t\t\t\tsuccess: function(resp) {\n\t\t\t\t\t\tif (resp.length <= self._limit) {\n\t\t\t\t\t\t// no new entries, end reached\n\t\t\t\t\t\t\tself._endReached = true\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t// remove last entry, for next page load\n\t\t\t\t\t\t\tresp = _.initial(resp)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!self.set(resp, options)) {\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (success) {\n\t\t\t\t\t\t\tsuccess.apply(null, arguments)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.trigger('sync', 'REPORT', self, options)\n\t\t\t\t\t}\n\t\t\t\t}, options)\n\n\t\t\t\treturn this.sync('REPORT', this, options)\n\t\t\t},\n\n\t\t\t/**\n\t\t * Returns the matching summary model\n\t\t *\n\t\t * @returns {OCA.Comments.CommentSummaryModel} summary model\n\t\t */\n\t\t\tgetSummaryModel: function() {\n\t\t\t\tif (!this._summaryModel) {\n\t\t\t\t\tthis._summaryModel = new OCA.Comments.CommentSummaryModel({\n\t\t\t\t\t\tid: this._objectId,\n\t\t\t\t\t\tobjectType: this._objectType\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn this._summaryModel\n\t\t\t},\n\n\t\t\t/**\n\t\t * Updates the read marker for this comment thread\n\t\t *\n\t\t * @param {Date} [date] optional date, defaults to now\n\t\t * @param {Object} [options] backbone options\n\t\t */\n\t\t\tupdateReadMarker: function(date, options) {\n\t\t\t\toptions = options || {}\n\n\t\t\t\treturn this.getSummaryModel().save({\n\t\t\t\t\treadMarker: (date || new Date()).toUTCString()\n\t\t\t\t}, options)\n\t\t\t}\n\t\t})\n\n\tOCA.Comments.CommentCollection = CommentCollection\n})(OC, OCA)\n","/*\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n(function(OC, OCA) {\n\n\t_.extend(OC.Files.Client, {\n\t\tPROPERTY_READMARKER:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}readMarker'\n\t})\n\n\t/**\n\t * @class OCA.Comments.CommentSummaryModel\n\t * @classdesc\n\t *\n\t * Model containing summary information related to comments\n\t * like the read marker.\n\t *\n\t */\n\tvar CommentSummaryModel = OC.Backbone.Model.extend(\n\t\t/** @lends OCA.Comments.CommentSummaryModel.prototype */ {\n\t\t\tsync: OC.Backbone.davSync,\n\n\t\t\t/**\n\t\t * Object type\n\t\t *\n\t\t * @type string\n\t\t */\n\t\t\t_objectType: 'files',\n\n\t\t\t/**\n\t\t * Object id\n\t\t *\n\t\t * @type string\n\t\t */\n\t\t\t_objectId: null,\n\n\t\t\tdavProperties: {\n\t\t\t\t'readMarker': OC.Files.Client.PROPERTY_READMARKER\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Initializes the summary model\n\t\t\t *\n\t\t\t * @param {any} [attrs] ignored\n\t\t\t * @param {Object} [options] destructuring object\n\t\t\t * @param {string} [options.objectType] object type\n\t\t\t * @param {string} [options.objectId] object id\n\t\t\t */\n\t\t\tinitialize: function(attrs, options) {\n\t\t\t\toptions = options || {}\n\t\t\t\tif (options.objectType) {\n\t\t\t\t\tthis._objectType = options.objectType\n\t\t\t\t}\n\t\t\t},\n\n\t\t\turl: function() {\n\t\t\t\treturn OC.linkToRemote('dav') + '/comments/'\n\t\t\t\t+ encodeURIComponent(this._objectType) + '/'\n\t\t\t\t+ encodeURIComponent(this.id) + '/'\n\t\t\t}\n\t\t})\n\n\tOCA.Comments.CommentSummaryModel = CommentSummaryModel\n})(OC, OCA)\n","/* eslint-disable */\n/*\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n/* global Handlebars, escapeHTML */\n\n(function(OC, OCA) {\n\n\t/**\n\t * @memberof OCA.Comments\n\t */\n\tvar CommentsTabView = OCA.Files.DetailTabView.extend(\n\t\t/** @lends OCA.Comments.CommentsTabView.prototype */ {\n\t\t\tid: 'commentsTabView',\n\t\t\tclassName: 'tab commentsTabView',\n\t\t\t_autoCompleteData: undefined,\n\t\t\t_commentsModifyMenu: undefined,\n\n\t\t\tevents: {\n\t\t\t\t'submit .newCommentForm': '_onSubmitComment',\n\t\t\t\t'click .showMore': '_onClickShowMore',\n\t\t\t\t'click .cancel': '_onClickCloseComment',\n\t\t\t\t'click .comment': '_onClickComment',\n\t\t\t\t'keyup div.message': '_onTextChange',\n\t\t\t\t'change div.message': '_onTextChange',\n\t\t\t\t'input div.message': '_onTextChange',\n\t\t\t\t'paste div.message': '_onPaste'\n\t\t\t},\n\n\t\t\t_commentMaxLength: 1000,\n\n\t\t\tinitialize: function() {\n\t\t\t\tOCA.Files.DetailTabView.prototype.initialize.apply(this, arguments)\n\t\t\t\tthis.collection = new OCA.Comments.CommentCollection()\n\t\t\t\tthis.collection.on('request', this._onRequest, this)\n\t\t\t\tthis.collection.on('sync', this._onEndRequest, this)\n\t\t\t\tthis.collection.on('add', this._onAddModel, this)\n\t\t\t\tthis.collection.on('change:message', this._onChangeModel, this)\n\n\t\t\t\tthis._commentMaxThreshold = this._commentMaxLength * 0.9\n\n\t\t\t\t// TODO: error handling\n\t\t\t\t_.bindAll(this, '_onTypeComment', '_initAutoComplete', '_onAutoComplete')\n\t\t\t},\n\n\t\t\ttemplate: function(params) {\n\t\t\t\tvar currentUser = OC.getCurrentUser()\n\t\t\t\treturn OCA.Comments.Templates['view'](_.extend({\n\t\t\t\t\tactorId: currentUser.uid,\n\t\t\t\t\tactorDisplayName: currentUser.displayName\n\t\t\t\t}, params))\n\t\t\t},\n\n\t\t\teditCommentTemplate: function(params) {\n\t\t\t\tvar currentUser = OC.getCurrentUser()\n\t\t\t\treturn OCA.Comments.Templates['edit_comment'](_.extend({\n\t\t\t\t\tactorId: currentUser.uid,\n\t\t\t\t\tactorDisplayName: currentUser.displayName,\n\t\t\t\t\tnewMessagePlaceholder: t('comments', 'New comment …'),\n\t\t\t\t\tsubmitText: t('comments', 'Post'),\n\t\t\t\t\tcancelText: t('comments', 'Cancel'),\n\t\t\t\t\ttag: 'li'\n\t\t\t\t}, params))\n\t\t\t},\n\n\t\t\tcommentTemplate: function(params) {\n\t\t\t\tparams = _.extend({\n\t\t\t\t\teditTooltip: t('comments', 'Edit comment'),\n\t\t\t\t\tisUserAuthor: OC.getCurrentUser().uid === params.actorId,\n\t\t\t\t\tisLong: this._isLong(params.message)\n\t\t\t\t}, params)\n\n\t\t\t\tif (params.actorType === 'deleted_users') {\n\t\t\t\t// makes the avatar a X\n\t\t\t\t\tparams.actorId = null\n\t\t\t\t\tparams.actorDisplayName = t('comments', '[Deleted user]')\n\t\t\t\t}\n\n\t\t\t\treturn OCA.Comments.Templates['comment'](params)\n\t\t\t},\n\n\t\t\tgetLabel: function() {\n\t\t\t\treturn t('comments', 'Comments')\n\t\t\t},\n\n\t\t\tgetIcon: function() {\n\t\t\t\treturn 'icon-comment'\n\t\t\t},\n\n\t\t\tsetFileInfo: function(fileInfo) {\n\t\t\t\tif (fileInfo) {\n\t\t\t\t\tthis.model = fileInfo\n\n\t\t\t\t\tthis.render()\n\t\t\t\t\tthis._initAutoComplete($('#commentsTabView').find('.newCommentForm .message'))\n\t\t\t\t\tthis.collection.setObjectId(this.model.id)\n\t\t\t\t\t// reset to first page\n\t\t\t\t\tthis.collection.reset([], { silent: true })\n\t\t\t\t\tthis.nextPage()\n\t\t\t\t} else {\n\t\t\t\t\tthis.model = null\n\t\t\t\t\tthis.render()\n\t\t\t\t\tthis.collection.reset()\n\t\t\t\t}\n\t\t\t},\n\n\t\t\trender: function() {\n\t\t\t\tthis.$el.html(this.template({\n\t\t\t\t\temptyResultLabel: t('comments', 'No comments yet, start the conversation!'),\n\t\t\t\t\tmoreLabel: t('comments', 'More comments …')\n\t\t\t\t}))\n\t\t\t\tthis.$el.find('.comments').before(this.editCommentTemplate({ tag: 'div' }))\n\t\t\t\tthis.$el.find('.has-tooltip').tooltip()\n\t\t\t\tthis.$container = this.$el.find('ul.comments')\n\t\t\t\tthis.$el.find('.avatar').avatar(OC.getCurrentUser().uid, 32)\n\t\t\t\tthis.delegateEvents()\n\t\t\t\tthis.$el.find('.message').on('keydown input change', this._onTypeComment)\n\n\t\t\t\tautosize(this.$el.find('.newCommentRow .message'))\n\t\t\t\tthis.$el.find('.newCommentForm .message').focus()\n\t\t\t},\n\n\t\t\t_initAutoComplete: function($target) {\n\t\t\t\tvar s = this\n\t\t\t\tvar limit = 10\n\t\t\t\tif (!_.isUndefined(OC.appConfig.comments)) {\n\t\t\t\t\tlimit = OC.appConfig.comments.maxAutoCompleteResults\n\t\t\t\t}\n\t\t\t\t$target.atwho({\n\t\t\t\t\tat: '@',\n\t\t\t\t\tlimit: limit,\n\t\t\t\t\tcallbacks: {\n\t\t\t\t\t\tremoteFilter: s._onAutoComplete,\n\t\t\t\t\t\thighlighter: function(li) {\n\t\t\t\t\t\t// misuse the highlighter callback to instead of\n\t\t\t\t\t\t// highlighting loads the avatars.\n\t\t\t\t\t\t\tvar $li = $(li)\n\t\t\t\t\t\t\t$li.find('.avatar').avatar(undefined, 32)\n\t\t\t\t\t\t\treturn $li\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsorter: function(q, items) { return items }\n\t\t\t\t\t},\n\t\t\t\t\tdisplayTpl: function(item) {\n\t\t\t\t\t\treturn '<li>'\n\t\t\t\t\t\t+ '<span class=\"avatar-name-wrapper\">'\n\t\t\t\t\t\t\t+ '<span class=\"avatar\" '\n\t\t\t\t\t\t\t\t\t+ 'data-username=\"' + escapeHTML(item.id) + '\" ' // for avatars\n\t\t\t\t\t\t\t\t\t+ 'data-user=\"' + escapeHTML(item.id) + '\" ' // for contactsmenu\n\t\t\t\t\t\t\t\t\t+ 'data-user-display-name=\"' + escapeHTML(item.label) + '\">'\n\t\t\t\t\t\t\t+ '</span>'\n\t\t\t\t\t\t\t+ '<strong>' + escapeHTML(item.label) + '</strong>'\n\t\t\t\t\t\t+ '</span></li>'\n\t\t\t\t\t},\n\t\t\t\t\tinsertTpl: function(item) {\n\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t+ '<span class=\"avatar-name-wrapper\">'\n\t\t\t\t\t\t\t+ '<span class=\"avatar\" '\n\t\t\t\t\t\t\t\t\t+ 'data-username=\"' + escapeHTML(item.id) + '\" ' // for avatars\n\t\t\t\t\t\t\t\t\t+ 'data-user=\"' + escapeHTML(item.id) + '\" ' // for contactsmenu\n\t\t\t\t\t\t\t\t\t+ 'data-user-display-name=\"' + escapeHTML(item.label) + '\">'\n\t\t\t\t\t\t\t+ '</span>'\n\t\t\t\t\t\t\t+ '<strong>' + escapeHTML(item.label) + '</strong>'\n\t\t\t\t\t\t+ '</span>'\n\t\t\t\t\t},\n\t\t\t\t\tsearchKey: 'label'\n\t\t\t\t})\n\t\t\t\t$target.on('inserted.atwho', function(je, $el) {\n\t\t\t\t\tvar editionMode = true\n\t\t\t\t\ts._postRenderItem(\n\t\t\t\t\t// we need to pass the parent of the inserted element\n\t\t\t\t\t// passing the whole comments form would re-apply and request\n\t\t\t\t\t// avatars from the server\n\t\t\t\t\t\t$(je.target).find(\n\t\t\t\t\t\t\t'span[data-username=\"' + $el.find('[data-username]').data('username') + '\"]'\n\t\t\t\t\t\t).parent(),\n\t\t\t\t\t\teditionMode\n\t\t\t\t\t)\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t_onAutoComplete: function(query, callback) {\n\t\t\t\tvar s = this\n\t\t\t\tif (!_.isUndefined(this._autoCompleteRequestTimer)) {\n\t\t\t\t\tclearTimeout(this._autoCompleteRequestTimer)\n\t\t\t\t}\n\t\t\t\tthis._autoCompleteRequestTimer = _.delay(function() {\n\t\t\t\t\tif (!_.isUndefined(this._autoCompleteRequestCall)) {\n\t\t\t\t\t\tthis._autoCompleteRequestCall.abort()\n\t\t\t\t\t}\n\t\t\t\t\tthis._autoCompleteRequestCall = $.ajax({\n\t\t\t\t\t\turl: OC.linkToOCS('core', 2) + 'autocomplete/get',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tsearch: query,\n\t\t\t\t\t\t\titemType: 'files',\n\t\t\t\t\t\t\titemId: s.model.get('id'),\n\t\t\t\t\t\t\tsorter: 'commenters|share-recipients',\n\t\t\t\t\t\t\tlimit: OC.appConfig.comments.maxAutoCompleteResults\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbeforeSend: function(request) {\n\t\t\t\t\t\t\trequest.setRequestHeader('Accept', 'application/json')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsuccess: function(result) {\n\t\t\t\t\t\t\tcallback(result.ocs.data)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}, 400)\n\t\t\t},\n\n\t\t\t_formatItem: function(commentModel) {\n\t\t\t\tvar timestamp = new Date(commentModel.get('creationDateTime')).getTime()\n\t\t\t\tvar data = _.extend({\n\t\t\t\t\ttimestamp: timestamp,\n\t\t\t\t\tdate: OC.Util.relativeModifiedDate(timestamp),\n\t\t\t\t\taltDate: OC.Util.formatDate(timestamp),\n\t\t\t\t\tformattedMessage: this._formatMessage(commentModel.get('message'), commentModel.get('mentions'))\n\t\t\t\t}, commentModel.attributes)\n\t\t\t\treturn data\n\t\t\t},\n\n\t\t\t_toggleLoading: function(state) {\n\t\t\t\tthis._loading = state\n\t\t\t\tthis.$el.find('.loading').toggleClass('hidden', !state)\n\t\t\t},\n\n\t\t\t_onRequest: function(type) {\n\t\t\t\tif (type === 'REPORT') {\n\t\t\t\t\tthis._toggleLoading(true)\n\t\t\t\t\tthis.$el.find('.showMore').addClass('hidden')\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_onEndRequest: function(type) {\n\t\t\t\tvar fileInfoModel = this.model\n\t\t\t\tthis._toggleLoading(false)\n\t\t\t\tthis.$el.find('.emptycontent').toggleClass('hidden', !!this.collection.length)\n\t\t\t\tthis.$el.find('.showMore').toggleClass('hidden', !this.collection.hasMoreResults())\n\n\t\t\t\tif (type !== 'REPORT') {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// find first unread comment\n\t\t\t\tvar firstUnreadComment = this.collection.findWhere({ isUnread: true })\n\t\t\t\tif (firstUnreadComment) {\n\t\t\t\t// update read marker\n\t\t\t\t\tthis.collection.updateReadMarker(\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsuccess: function() {\n\t\t\t\t\t\t\t\tfileInfoModel.set('commentsUnread', 0)\n\t\t\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\tthis.$el.find('.newCommentForm .message').focus()\n\n\t\t\t},\n\n\t\t\t/**\n\t\t * takes care of post-rendering after a new comment was added to the\n\t\t * collection\n\t\t *\n\t\t * @param model\n\t\t * @param collection\n\t\t * @param options\n\t\t * @private\n\t\t */\n\t\t\t_onAddModel: function(model, collection, options) {\n\t\t\t// we need to render it immediately, to ensure that the right\n\t\t\t// order of comments is kept on opening comments tab\n\t\t\t\tvar $comment = $(this.commentTemplate(this._formatItem(model)))\n\t\t\t\tif (!_.isUndefined(options.at) && collection.length > 1) {\n\t\t\t\t\tthis.$container.find('li').eq(options.at).before($comment)\n\t\t\t\t} else {\n\t\t\t\t\tthis.$container.append($comment)\n\t\t\t\t}\n\t\t\t\tthis._postRenderItem($comment)\n\t\t\t\t$('#commentsTabView').find('.newCommentForm div.message').text('').prop('contenteditable', true)\n\n\t\t\t\t// we need to update the model, because it consists of client data\n\t\t\t\t// only, but the server might add meta data, e.g. about mentions\n\t\t\t\tvar oldMentions = model.get('mentions')\n\t\t\t\tvar self = this\n\t\t\t\tmodel.fetch({\n\t\t\t\t\tsuccess: function(model) {\n\t\t\t\t\t\tif (_.isEqual(oldMentions, model.get('mentions'))) {\n\t\t\t\t\t\t// don't attempt to render if unnecessary, avoids flickering\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar $updated = $(self.commentTemplate(self._formatItem(model)))\n\t\t\t\t\t\t$comment.html($updated.html())\n\t\t\t\t\t\tself._postRenderItem($comment)\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t},\n\n\t\t\t/**\n\t\t * takes care of post-rendering after a new comment was edited\n\t\t *\n\t\t * @param model\n\t\t * @private\n\t\t */\n\t\t\t_onChangeModel: function(model) {\n\t\t\t\tif (model.get('message').trim() === model.previous('message').trim()) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tvar $form = this.$container.find('.comment[data-id=\"' + model.id + '\"] form')\n\t\t\t\tvar $row = $form.closest('.comment')\n\t\t\t\tvar $target = $row.data('commentEl')\n\t\t\t\tif (_.isUndefined($target)) {\n\t\t\t\t// ignore noise – this is only set after editing a comment and hitting post\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tvar self = this\n\n\t\t\t\t// we need to update the model, because it consists of client data\n\t\t\t\t// only, but the server might add meta data, e.g. about mentions\n\t\t\t\tmodel.fetch({\n\t\t\t\t\tsuccess: function(model) {\n\t\t\t\t\t\t$target.removeClass('hidden')\n\t\t\t\t\t\t$row.remove()\n\n\t\t\t\t\t\tvar $message = $target.find('.message')\n\t\t\t\t\t\t$message\n\t\t\t\t\t\t\t.html(self._formatMessage(model.get('message'), model.get('mentions')))\n\t\t\t\t\t\t\t.find('.avatar')\n\t\t\t\t\t\t\t.each(function() { $(this).avatar() })\n\t\t\t\t\t\tself._postRenderItem($message)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t_postRenderItem: function($el, editionMode) {\n\t\t\t\t$el.find('.has-tooltip').tooltip()\n\t\t\t\tvar inlineAvatars = $el.find('.message .avatar')\n\t\t\t\tif ($($el.context).hasClass('message')) {\n\t\t\t\t\tinlineAvatars = $el.find('.avatar')\n\t\t\t\t}\n\t\t\t\tinlineAvatars.each(function() {\n\t\t\t\t\tvar $this = $(this)\n\t\t\t\t\t$this.avatar($this.attr('data-username'), 16)\n\t\t\t\t})\n\t\t\t\t$el.find('.authorRow .avatar').each(function() {\n\t\t\t\t\tvar $this = $(this)\n\t\t\t\t\t$this.avatar($this.attr('data-username'), 32)\n\t\t\t\t})\n\n\t\t\t\tvar username = $el.find('.avatar').data('username')\n\t\t\t\tif (username !== OC.getCurrentUser().uid) {\n\t\t\t\t\t$el.find('.authorRow .avatar, .authorRow .author').contactsMenu(\n\t\t\t\t\t\tusername, 0, $el.find('.authorRow'))\n\t\t\t\t}\n\n\t\t\t\tvar $message = $el.find('.message')\n\t\t\t\tif ($message.length === 0) {\n\t\t\t\t// it is the case when writing a comment and mentioning a person\n\t\t\t\t\t$message = $el\n\t\t\t\t}\n\n\t\t\t\tif (!editionMode) {\n\t\t\t\t\tvar self = this\n\t\t\t\t\t// add the dropdown menu to display the edit and delete option\n\t\t\t\t\tvar modifyCommentMenu = new OCA.Comments.CommentsModifyMenu()\n\t\t\t\t\t$el.find('.authorRow').append(modifyCommentMenu.$el)\n\t\t\t\t\t$el.find('.more').on('click', _.bind(modifyCommentMenu.show, modifyCommentMenu))\n\n\t\t\t\t\tself.listenTo(modifyCommentMenu, 'select:menu-item-clicked', function(ev, action) {\n\t\t\t\t\t\tif (action === 'edit') {\n\t\t\t\t\t\t\tself._onClickEditComment(ev)\n\t\t\t\t\t\t} else if (action === 'delete') {\n\t\t\t\t\t\t\tself._onClickDeleteComment(ev)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis._postRenderMessage($message, editionMode)\n\t\t\t},\n\n\t\t\t_postRenderMessage: function($el, editionMode) {\n\t\t\t\tif (editionMode) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t$el.find('.avatar-name-wrapper').each(function() {\n\t\t\t\t\tvar $this = $(this)\n\t\t\t\t\tvar $avatar = $this.find('.avatar')\n\n\t\t\t\t\tvar user = $avatar.data('user')\n\t\t\t\t\tif (user !== OC.getCurrentUser().uid) {\n\t\t\t\t\t\t$this.contactsMenu(user, 0, $this)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t/**\n\t\t * Convert a message to be displayed in HTML,\n\t\t * converts newlines to <br> tags.\n\t\t */\n\t\t\t_formatMessage: function(message, mentions, editMode) {\n\t\t\t\tmessage = escapeHTML(message).replace(/\\n/g, '<br/>')\n\n\t\t\t\tfor (var i in mentions) {\n\t\t\t\t\tif (!mentions.hasOwnProperty(i)) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tvar mention = '@' + mentions[i].mentionId\n\t\t\t\t\tif (mentions[i].mentionId.indexOf(' ') !== -1) {\n\t\t\t\t\t\tmention = _.escape('@\"' + mentions[i].mentionId + '\"')\n\t\t\t\t\t}\n\n\t\t\t\t\t// escape possible regex characters in the name\n\t\t\t\t\tmention = mention.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n\t\t\t\t\tvar regex = new RegExp('(^|\\\\s)(' + mention + ')\\\\b', 'g')\n\t\t\t\t\tif (mentions[i].mentionId.indexOf(' ') !== -1) {\n\t\t\t\t\t\tregex = new RegExp('(^|\\\\s)(' + mention + ')', 'g')\n\t\t\t\t\t}\n\n\t\t\t\t\tvar displayName = this._composeHTMLMention(mentions[i].mentionId, mentions[i].mentionDisplayName)\n\n\t\t\t\t\t// replace every mention either at the start of the input or after a whitespace\n\t\t\t\t\t// followed by a non-word character.\n\t\t\t\t\tmessage = message.replace(regex,\n\t\t\t\t\t\tfunction(match, p1) {\n\t\t\t\t\t\t// to  get number of whitespaces (0 vs 1) right\n\t\t\t\t\t\t\treturn p1 + displayName\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tif (editMode !== true) {\n\t\t\t\t\tmessage = OCP.Comments.plainToRich(message)\n\t\t\t\t}\n\t\t\t\treturn message\n\t\t\t},\n\n\t\t\t_composeHTMLMention: function(uid, displayName) {\n\t\t\t\tvar avatar = ''\n\t\t\t\t+ '<span class=\"avatar\" '\n\t\t\t\t\t\t+ 'data-username=\"' + _.escape(uid) + '\" '\n\t\t\t\t\t\t+ 'data-user=\"' + _.escape(uid) + '\" '\n\t\t\t\t\t\t+ 'data-user-display-name=\"' + _.escape(displayName) + '\">'\n\t\t\t\t+ '</span>'\n\n\t\t\t\tvar isCurrentUser = (uid === OC.getCurrentUser().uid)\n\n\t\t\t\treturn ''\n\t\t\t\t+ '<span class=\"atwho-inserted\" contenteditable=\"false\">'\n\t\t\t\t\t+ '<span class=\"avatar-name-wrapper' + (isCurrentUser ? ' currentUser' : '') + '\">'\n\t\t\t\t\t\t+ avatar\n\t\t\t\t\t\t+ '<strong>' + _.escape(displayName) + '</strong>'\n\t\t\t\t\t+ '</span>'\n\t\t\t\t+ '</span>'\n\t\t\t},\n\n\t\t\tnextPage: function() {\n\t\t\t\tif (this._loading || !this.collection.hasMoreResults()) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tthis.collection.fetchNext()\n\t\t\t},\n\n\t\t\t_onClickEditComment: function(ev) {\n\t\t\t\tev.preventDefault()\n\t\t\t\tvar $comment = $(ev.target).closest('.comment')\n\t\t\t\tvar commentId = $comment.data('id')\n\t\t\t\tvar commentToEdit = this.collection.get(commentId)\n\t\t\t\tvar $formRow = $(this.editCommentTemplate(_.extend({\n\t\t\t\t\tisEditMode: true,\n\t\t\t\t\tsubmitText: t('comments', 'Save')\n\t\t\t\t}, commentToEdit.attributes)))\n\n\t\t\t\t$comment.addClass('hidden').removeClass('collapsed')\n\t\t\t\t// spawn form\n\t\t\t\t$comment.after($formRow)\n\t\t\t\t$formRow.data('commentEl', $comment)\n\t\t\t\t$formRow.find('.message').on('keydown input change', this._onTypeComment)\n\n\t\t\t\t// copy avatar element from original to avoid flickering\n\t\t\t\t$formRow.find('.avatar:first').replaceWith($comment.find('.avatar:first').clone())\n\t\t\t\t$formRow.find('.has-tooltip').tooltip()\n\n\t\t\t\tvar $message = $formRow.find('.message')\n\t\t\t\t$message\n\t\t\t\t\t.html(this._formatMessage(commentToEdit.get('message'), commentToEdit.get('mentions'), true))\n\t\t\t\t\t.find('.avatar')\n\t\t\t\t\t.each(function() { $(this).avatar() })\n\t\t\t\tvar editionMode = true\n\t\t\t\tthis._postRenderItem($message, editionMode)\n\n\t\t\t\t// Enable autosize\n\t\t\t\tautosize($formRow.find('.message'))\n\n\t\t\t\t// enable autocomplete\n\t\t\t\tthis._initAutoComplete($formRow.find('.message'))\n\n\t\t\t\treturn false\n\t\t\t},\n\n\t\t\t_onTypeComment: function(ev) {\n\t\t\t\tvar $field = $(ev.target)\n\t\t\t\tvar len = $field.text().length\n\t\t\t\tvar $submitButton = $field.data('submitButtonEl')\n\t\t\t\tif (!$submitButton) {\n\t\t\t\t\t$submitButton = $field.closest('form').find('.submit')\n\t\t\t\t\t$field.data('submitButtonEl', $submitButton)\n\t\t\t\t}\n\t\t\t\t$field.tooltip('hide')\n\t\t\t\tif (len > this._commentMaxThreshold) {\n\t\t\t\t\t$field.attr('data-original-title', t('comments', 'Allowed characters {count} of {max}', { count: len, max: this._commentMaxLength }))\n\t\t\t\t\t$field.tooltip({ trigger: 'manual' })\n\t\t\t\t\t$field.tooltip('show')\n\t\t\t\t\t$field.addClass('error')\n\t\t\t\t}\n\n\t\t\t\tvar limitExceeded = (len > this._commentMaxLength)\n\t\t\t\t$field.toggleClass('error', limitExceeded)\n\t\t\t\t$submitButton.prop('disabled', limitExceeded)\n\n\t\t\t\t// Submits form with Enter, but Shift+Enter is a new line. If the\n\t\t\t\t// autocomplete popover is being shown Enter does not submit the\n\t\t\t\t// form either; it will be handled by At.js which will add the\n\t\t\t\t// currently selected item to the message.\n\t\t\t\tif (ev.keyCode === 13 && !ev.shiftKey && !$field.atwho('isSelecting')) {\n\t\t\t\t\t$submitButton.click()\n\t\t\t\t\tev.preventDefault()\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_onClickComment: function(ev) {\n\t\t\t\tvar $row = $(ev.target)\n\t\t\t\tif (!$row.is('.comment')) {\n\t\t\t\t\t$row = $row.closest('.comment')\n\t\t\t\t}\n\t\t\t\t$row.removeClass('collapsed')\n\t\t\t},\n\n\t\t\t_onClickCloseComment: function(ev) {\n\t\t\t\tev.preventDefault()\n\t\t\t\tvar $row = $(ev.target).closest('.comment')\n\t\t\t\t$row.data('commentEl').removeClass('hidden')\n\t\t\t\t$row.remove()\n\t\t\t\treturn false\n\t\t\t},\n\n\t\t\t_onClickDeleteComment: function(ev) {\n\t\t\t\tev.preventDefault()\n\t\t\t\tvar $comment = $(ev.target).closest('.comment')\n\t\t\t\tvar commentId = $comment.data('id')\n\t\t\t\tvar $loading = $comment.find('.deleteLoading')\n\t\t\t\tvar $moreIcon = $comment.find('.more')\n\n\t\t\t\t$comment.addClass('disabled')\n\t\t\t\t$loading.removeClass('hidden')\n\t\t\t\t$moreIcon.addClass('hidden')\n\n\t\t\t\t$comment.data('commentEl', $comment)\n\n\t\t\t\tthis.collection.get(commentId).destroy({\n\t\t\t\t\tsuccess: function() {\n\t\t\t\t\t\t$comment.data('commentEl').remove()\n\t\t\t\t\t\t$comment.remove()\n\t\t\t\t\t},\n\t\t\t\t\terror: function() {\n\t\t\t\t\t\t$loading.addClass('hidden')\n\t\t\t\t\t\t$moreIcon.removeClass('hidden')\n\t\t\t\t\t\t$comment.removeClass('disabled')\n\n\t\t\t\t\t\tOC.Notification.showTemporary(t('comments', 'Error occurred while retrieving comment with ID {id}', { id: commentId }))\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\treturn false\n\t\t\t},\n\n\t\t\t_onClickShowMore: function(ev) {\n\t\t\t\tev.preventDefault()\n\t\t\t\tthis.nextPage()\n\t\t\t},\n\n\t\t\t/**\n\t\t * takes care of updating comment element states after submit (either new\n\t\t * comment or edit).\n\t\t *\n\t\t * @param {OC.Backbone.Model} model\n\t\t * @param {jQuery} $form\n\t\t * @private\n\t\t */\n\t\t\t_onSubmitSuccess: function(model, $form) {\n\t\t\t\tvar $submit = $form.find('.submit')\n\t\t\t\tvar $loading = $form.find('.submitLoading')\n\n\t\t\t\t$submit.removeClass('hidden')\n\t\t\t\t$loading.addClass('hidden')\n\t\t\t},\n\n\t\t\t_commentBodyHTML2Plain: function($el) {\n\t\t\t\tvar $comment = $el.clone()\n\n\t\t\t\t$comment.find('.avatar-name-wrapper').each(function() {\n\t\t\t\t\tvar $this = $(this)\n\t\t\t\t\tvar $inserted = $this.parent()\n\t\t\t\t\tvar userId = $this.find('.avatar').data('username').toString()\n\t\t\t\t\tif (userId.indexOf(' ') !== -1) {\n\t\t\t\t\t\t$inserted.html('@\"' + userId + '\"')\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$inserted.html('@' + userId)\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$comment.html(OCP.Comments.richToPlain($comment.html()))\n\n\t\t\t\tvar oldHtml\n\t\t\t\tvar html = $comment.html()\n\t\t\t\tdo {\n\t\t\t\t// replace works one by one\n\t\t\t\t\toldHtml = html\n\t\t\t\t\thtml = oldHtml.replace('<br>', '\\n')\t// preserve line breaks\n\t\t\t\t} while (oldHtml !== html)\n\t\t\t\t$comment.html(html)\n\n\t\t\t\treturn $comment.text()\n\t\t\t},\n\n\t\t\t_onSubmitComment: function(e) {\n\t\t\t\tvar self = this\n\t\t\t\tvar $form = $(e.target)\n\t\t\t\tvar commentId = $form.closest('.comment').data('id')\n\t\t\t\tvar currentUser = OC.getCurrentUser()\n\t\t\t\tvar $submit = $form.find('.submit')\n\t\t\t\tvar $loading = $form.find('.submitLoading')\n\t\t\t\tvar $commentField = $form.find('.message')\n\t\t\t\tvar message = $commentField.text().trim()\n\t\t\t\te.preventDefault()\n\n\t\t\t\tif (!message.length || message.length > this._commentMaxLength) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t$commentField.prop('contenteditable', false)\n\t\t\t\t$submit.addClass('hidden')\n\t\t\t\t$loading.removeClass('hidden')\n\n\t\t\t\tmessage = this._commentBodyHTML2Plain($commentField)\n\t\t\t\tif (commentId) {\n\t\t\t\t// edit mode\n\t\t\t\t\tvar comment = this.collection.get(commentId)\n\t\t\t\t\tcomment.save({\n\t\t\t\t\t\tmessage: message\n\t\t\t\t\t}, {\n\t\t\t\t\t\tsuccess: function(model) {\n\t\t\t\t\t\t\tself._onSubmitSuccess(model, $form)\n\t\t\t\t\t\t\tif (model.get('message').trim() === model.previous('message').trim()) {\n\t\t\t\t\t\t\t// model change event doesn't trigger, manually remove the row.\n\t\t\t\t\t\t\t\tvar $row = $form.closest('.comment')\n\t\t\t\t\t\t\t\t$row.data('commentEl').removeClass('hidden')\n\t\t\t\t\t\t\t\t$row.remove()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror: function() {\n\t\t\t\t\t\t\tself._onSubmitError($form, commentId)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tthis.collection.create({\n\t\t\t\t\t\tactorId: currentUser.uid,\n\t\t\t\t\t\tactorDisplayName: currentUser.displayName,\n\t\t\t\t\t\tactorType: 'users',\n\t\t\t\t\t\tverb: 'comment',\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\tcreationDateTime: (new Date()).toUTCString()\n\t\t\t\t\t}, {\n\t\t\t\t\t\tat: 0,\n\t\t\t\t\t\t// wait for real creation before adding\n\t\t\t\t\t\twait: true,\n\t\t\t\t\t\tsuccess: function(model) {\n\t\t\t\t\t\t\tself._onSubmitSuccess(model, $form)\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror: function() {\n\t\t\t\t\t\t\tself._onSubmitError($form, undefined)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\treturn false\n\t\t\t},\n\n\t\t\t/**\n\t\t * takes care of updating the UI after an error on submit (either new\n\t\t * comment or edit).\n\t\t *\n\t\t * @param {jQuery} $form\n\t\t * @param {string|undefined} commentId\n\t\t * @private\n\t\t */\n\t\t\t_onSubmitError: function($form, commentId) {\n\t\t\t\t$form.find('.submit').removeClass('hidden')\n\t\t\t\t$form.find('.submitLoading').addClass('hidden')\n\t\t\t\t$form.find('.message').prop('contenteditable', true)\n\n\t\t\t\tif (!_.isUndefined(commentId)) {\n\t\t\t\t\tOC.Notification.show(t('comments', 'Error occurred while updating comment with id {id}', { id: commentId }), { type: 'error' })\n\t\t\t\t} else {\n\t\t\t\t\tOC.Notification.show(t('comments', 'Error occurred while posting comment'), { type: 'error' })\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t * ensures the contenteditable div is really empty, when user removed\n\t\t * all input, so that the placeholder will be shown again\n\t\t *\n\t\t * @private\n\t\t */\n\t\t\t_onTextChange: function() {\n\t\t\t\tvar $message = $('#commentsTabView').find('.newCommentForm div.message')\n\t\t\t\tif (!$message.text().trim().length) {\n\t\t\t\t\t$message.empty()\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t * Limit pasting to plain text\n\t\t *\n\t\t * @param e\n\t\t * @private\n\t\t */\n\t\t\t_onPaste: function(e) {\n\t\t\t\te.preventDefault()\n\t\t\t\tvar text = e.originalEvent.clipboardData.getData('text/plain')\n\t\t\t\tdocument.execCommand('insertText', false, text)\n\t\t\t},\n\n\t\t\t/**\n\t\t * Returns whether the given message is long and needs\n\t\t * collapsing\n\t\t */\n\t\t\t_isLong: function(message) {\n\t\t\t\treturn message.length > 250 || (message.match(/\\n/g) || []).length > 1\n\t\t\t}\n\t\t})\n\n\tOCA.Comments.CommentsTabView = CommentsTabView\n})(OC, OCA)\n","/*\n * Copyright (c) 2018\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n(function() {\n\n\t/**\n\t * Construct a new CommentsModifyMenuinstance\n\t * @constructs CommentsModifyMenu\n\t * @memberof OC.Comments\n\t * @private\n\t */\n\tvar CommentsModifyMenu = OC.Backbone.View.extend({\n\t\ttagName: 'div',\n\t\tclassName: 'commentsModifyMenu popovermenu bubble menu',\n\t\t_scopes: [\n\t\t\t{\n\t\t\t\tname: 'edit',\n\t\t\t\tdisplayName: t('comments', 'Edit comment'),\n\t\t\t\ticonClass: 'icon-rename'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'delete',\n\t\t\t\tdisplayName: t('comments', 'Delete comment'),\n\t\t\t\ticonClass: 'icon-delete'\n\t\t\t}\n\t\t],\n\t\tinitialize: function() {\n\n\t\t},\n\t\tevents: {\n\t\t\t'click a.action': '_onClickAction'\n\t\t},\n\n\t\t/**\n\t\t * Event handler whenever an action has been clicked within the menu\n\t\t *\n\t\t * @param {Object} event event object\n\t\t */\n\t\t_onClickAction: function(event) {\n\t\t\tvar $target = $(event.currentTarget)\n\t\t\tif (!$target.hasClass('menuitem')) {\n\t\t\t\t$target = $target.closest('.menuitem')\n\t\t\t}\n\n\t\t\tOC.hideMenus()\n\n\t\t\tthis.trigger('select:menu-item-clicked', event, $target.data('action'))\n\t\t},\n\n\t\t/**\n\t\t * Renders the menu with the currently set items\n\t\t */\n\t\trender: function() {\n\t\t\tthis.$el.html(OCA.Comments.Templates['commentsmodifymenu']({\n\t\t\t\titems: this._scopes\n\t\t\t}))\n\t\t},\n\n\t\t/**\n\t\t * Displays the menu\n\t\t * @param {Event} context the click event\n\t\t */\n\t\tshow: function(context) {\n\t\t\tthis._context = context\n\n\t\t\tfor (var i in this._scopes) {\n\t\t\t\tthis._scopes[i].active = false\n\t\t\t}\n\n\t\t\tvar $el = $(context.target)\n\t\t\tvar offsetIcon = $el.offset()\n\t\t\tvar offsetContainer = $el.closest('.authorRow').offset()\n\n\t\t\t// adding some extra top offset to push the menu below the button.\n\t\t\tvar position = {\n\t\t\t\ttop: offsetIcon.top - offsetContainer.top + 48,\n\t\t\t\tleft: '',\n\t\t\t\tright: ''\n\t\t\t}\n\n\t\t\tposition.left = offsetIcon.left - offsetContainer.left\n\n\t\t\tif (position.left > 200) {\n\t\t\t\t// we need to position the menu to the right.\n\t\t\t\tposition.left = ''\n\t\t\t\tposition.right = this.$el.closest('.comment').find('.date').width()\n\t\t\t\tthis.$el.removeClass('menu-left').addClass('menu-right')\n\t\t\t} else {\n\t\t\t\tthis.$el.removeClass('menu-right').addClass('menu-left')\n\t\t\t}\n\t\t\tthis.$el.css(position)\n\t\t\tthis.render()\n\t\t\tthis.$el.removeClass('hidden')\n\n\t\t\tOC.showMenu(null, this.$el)\n\t\t}\n\t})\n\n\tOCA.Comments = OCA.Comments || {}\n\tOCA.Comments.CommentsModifyMenu = CommentsModifyMenu\n})(OC, OCA)\n","/*\n * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com>\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n(function() {\n\n\t_.extend(OC.Files.Client, {\n\t\tPROPERTY_COMMENTS_UNREAD:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}comments-unread'\n\t})\n\n\tOCA.Comments = _.extend({}, OCA.Comments)\n\tif (!OCA.Comments) {\n\t\t/**\n\t\t * @namespace\n\t\t */\n\t\tOCA.Comments = {}\n\t}\n\n\t/**\n\t * @namespace\n\t */\n\tOCA.Comments.FilesPlugin = {\n\t\tignoreLists: [\n\t\t\t'trashbin',\n\t\t\t'files.public'\n\t\t],\n\n\t\t_formatCommentCount: function(count) {\n\t\t\treturn OCA.Comments.Templates['filesplugin']({\n\t\t\t\tcount: count,\n\t\t\t\tcountMessage: n('comments', '%n unread comment', '%n unread comments', count),\n\t\t\t\ticonUrl: OC.imagePath('core', 'actions/comment')\n\t\t\t})\n\t\t},\n\n\t\tattach: function(fileList) {\n\t\t\tvar self = this\n\t\t\tif (this.ignoreLists.indexOf(fileList.id) >= 0) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tfileList.registerTabView(new OCA.Comments.CommentsTabView('commentsTabView'))\n\n\t\t\tvar oldGetWebdavProperties = fileList._getWebdavProperties\n\t\t\tfileList._getWebdavProperties = function() {\n\t\t\t\tvar props = oldGetWebdavProperties.apply(this, arguments)\n\t\t\t\tprops.push(OC.Files.Client.PROPERTY_COMMENTS_UNREAD)\n\t\t\t\treturn props\n\t\t\t}\n\n\t\t\tfileList.filesClient.addFileInfoParser(function(response) {\n\t\t\t\tvar data = {}\n\t\t\t\tvar props = response.propStat[0].properties\n\t\t\t\tvar commentsUnread = props[OC.Files.Client.PROPERTY_COMMENTS_UNREAD]\n\t\t\t\tif (!_.isUndefined(commentsUnread) && commentsUnread !== '') {\n\t\t\t\t\tdata.commentsUnread = parseInt(commentsUnread, 10)\n\t\t\t\t}\n\t\t\t\treturn data\n\t\t\t})\n\n\t\t\tfileList.$el.addClass('has-comments')\n\t\t\tvar oldCreateRow = fileList._createRow\n\t\t\tfileList._createRow = function(fileData) {\n\t\t\t\tvar $tr = oldCreateRow.apply(this, arguments)\n\t\t\t\tif (fileData.commentsUnread) {\n\t\t\t\t\t$tr.attr('data-comments-unread', fileData.commentsUnread)\n\t\t\t\t}\n\t\t\t\treturn $tr\n\t\t\t}\n\n\t\t\t// register \"comment\" action for reading comments\n\t\t\tfileList.fileActions.registerAction({\n\t\t\t\tname: 'Comment',\n\t\t\t\tdisplayName: function(context) {\n\t\t\t\t\tif (context && context.$file) {\n\t\t\t\t\t\tvar unread = parseInt(context.$file.data('comments-unread'), 10)\n\t\t\t\t\t\tif (unread >= 0) {\n\t\t\t\t\t\t\treturn n('comments', '1 new comment', '{unread} new comments', unread, { unread: unread })\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn t('comments', 'Comment')\n\t\t\t\t},\n\t\t\t\tmime: 'all',\n\t\t\t\torder: -140,\n\t\t\t\ticonClass: 'icon-comment',\n\t\t\t\tpermissions: OC.PERMISSION_READ,\n\t\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\t\trender: function(actionSpec, isDefault, context) {\n\t\t\t\t\tvar $file = context.$file\n\t\t\t\t\tvar unreadComments = $file.data('comments-unread')\n\t\t\t\t\tif (unreadComments) {\n\t\t\t\t\t\tvar $actionLink = $(self._formatCommentCount(unreadComments))\n\t\t\t\t\t\tcontext.$file.find('a.name>span.fileactions').append($actionLink)\n\t\t\t\t\t\treturn $actionLink\n\t\t\t\t\t}\n\t\t\t\t\treturn ''\n\t\t\t\t},\n\t\t\t\tactionHandler: function(fileName, context) {\n\t\t\t\t\tcontext.$file.find('.action-comment').tooltip('hide')\n\t\t\t\t\t// open sidebar in comments section\n\t\t\t\t\tcontext.fileList.showDetailsView(fileName, 'comments')\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// add attribute to \"elementToFile\"\n\t\t\tvar oldElementToFile = fileList.elementToFile\n\t\t\tfileList.elementToFile = function($el) {\n\t\t\t\tvar fileInfo = oldElementToFile.apply(this, arguments)\n\t\t\t\tvar commentsUnread = $el.data('comments-unread')\n\t\t\t\tif (commentsUnread) {\n\t\t\t\t\tfileInfo.commentsUnread = commentsUnread\n\t\t\t\t}\n\t\t\t\treturn fileInfo\n\t\t\t}\n\t\t}\n\t}\n\n})()\n\nOC.Plugins.register('OCA.Files.FileList', OCA.Comments.FilesPlugin)\n","/**\n * @author Joas Schilling <coding@schilljs.com>\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n */\n\n(function() {\n\tOCA.Comments.ActivityTabViewPlugin = {\n\n\t\t/**\n\t\t * Prepare activity for display\n\t\t *\n\t\t * @param {OCA.Activity.ActivityModel} model for this activity\n\t\t * @param {jQuery} $el jQuery handle for this activity\n\t\t * @param {string} view The view that displayes this activity\n\t\t */\n\t\tprepareModelForDisplay: function(model, $el, view) {\n\t\t\tif (model.get('app') !== 'comments' || model.get('type') !== 'comments') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (view === 'ActivityTabView') {\n\t\t\t\t$el.addClass('comment')\n\t\t\t\tif (model.get('message') && this._isLong(model.get('message'))) {\n\t\t\t\t\t$el.addClass('collapsed')\n\t\t\t\t\tvar $overlay = $('<div>').addClass('message-overlay')\n\t\t\t\t\t$el.find('.activitymessage').after($overlay)\n\t\t\t\t\t$el.on('click', this._onClickCollapsedComment)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/*\n\t\t * Copy of CommentsTabView._onClickComment()\n\t\t */\n\t\t_onClickCollapsedComment: function(ev) {\n\t\t\tvar $row = $(ev.target)\n\t\t\tif (!$row.is('.comment')) {\n\t\t\t\t$row = $row.closest('.comment')\n\t\t\t}\n\t\t\t$row.removeClass('collapsed')\n\t\t},\n\n\t\t/*\n\t\t * Copy of CommentsTabView._isLong()\n\t\t */\n\t\t_isLong: function(message) {\n\t\t\treturn message.length > 250 || (message.match(/\\n/g) || []).length > 1\n\t\t}\n\t}\n\n})()\n\nOC.Plugins.register('OCA.Activity.RenderingPlugins', OCA.Comments.ActivityTabViewPlugin)\n","/* eslint-disable */\n/*\n * Copyright (c) 2014\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n(function(OC, OCA, $) {\n\t'use strict'\n\n\t/**\n\t * Construct a new FileActions instance\n\t * @constructs Files\n\t */\n\tvar Comment = function() {\n\t\tthis.initialize()\n\t}\n\n\tComment.prototype = {\n\n\t\tfileList: null,\n\n\t\t/**\n\t\t * Initialize the file search\n\t\t */\n\t\tinitialize: function() {\n\n\t\t\tvar self = this\n\n\t\t\tthis.fileAppLoaded = function() {\n\t\t\t\treturn !!OCA.Files && !!OCA.Files.App\n\t\t\t}\n\t\t\tfunction inFileList($row, result) {\n\t\t\t\treturn false\n\n\t\t\t\tif (!self.fileAppLoaded()) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tvar dir = self.fileList.getCurrentDirectory().replace(/\\/+$/, '')\n\t\t\t\tvar resultDir = OC.dirname(result.path)\n\t\t\t\treturn dir === resultDir && self.fileList.inList(result.name)\n\t\t\t}\n\t\t\tfunction hideNoFilterResults() {\n\t\t\t\tvar $nofilterresults = $('.nofilterresults')\n\t\t\t\tif (!$nofilterresults.hasClass('hidden')) {\n\t\t\t\t\t$nofilterresults.addClass('hidden')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t * @param {jQuery} $row\n\t\t\t * @param {Object} result\n\t\t\t * @param {int} result.id\n\t\t\t * @param {string} result.comment\n\t\t\t * @param {string} result.authorId\n\t\t\t * @param {string} result.authorName\n\t\t\t * @param {string} result.link\n\t\t\t * @param {string} result.fileName\n\t\t\t * @param {string} result.path\n\t\t\t * @returns {*}\n\t\t\t */\n\t\t\tthis.renderCommentResult = function($row, result) {\n\t\t\t\tif (inFileList($row, result)) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\t\t\t\thideNoFilterResults()\n\t\t\t\t/* render preview icon, show path beneath filename,\n\t\t\t\t show size and last modified date on the right */\n\t\t\t\tthis.updateLegacyMimetype(result)\n\n\t\t\t\tvar $pathDiv = $('<div>').addClass('path').text(result.path)\n\n\t\t\t\tvar $avatar = $('<div>')\n\t\t\t\t$avatar.addClass('avatar')\n\t\t\t\t\t.css('display', 'inline-block')\n\t\t\t\t\t.css('vertical-align', 'middle')\n\t\t\t\t\t.css('margin', '0 5px 2px 3px')\n\n\t\t\t\tif (result.authorName) {\n\t\t\t\t\t$avatar.avatar(result.authorId, 21, undefined, false, undefined, result.authorName)\n\t\t\t\t} else {\n\t\t\t\t\t$avatar.avatar(result.authorId, 21)\n\t\t\t\t}\n\n\t\t\t\t$row.find('td.info div.name').after($pathDiv).text(result.comment).prepend($('<span>').addClass('path').css('margin-right', '5px').text(result.authorName)).prepend($avatar)\n\t\t\t\t$row.find('td.result a').attr('href', result.link)\n\n\t\t\t\t$row.find('td.icon')\n\t\t\t\t\t.css('background-image', 'url(' + OC.imagePath('core', 'actions/comment') + ')')\n\t\t\t\t\t.css('opacity', '.4')\n\t\t\t\tvar dir = OC.dirname(result.path)\n\t\t\t\t// \"result.path\" does not include a leading \"/\", so \"OC.dirname\"\n\t\t\t\t// returns the path itself for files or folders in the root.\n\t\t\t\tif (dir === result.path) {\n\t\t\t\t\tdir = '/'\n\t\t\t\t}\n\t\t\t\t$row.find('td.info a').attr('href',\n\t\t\t\t\tOC.generateUrl('/apps/files/?dir={dir}&scrollto={scrollto}', { dir: dir, scrollto: result.fileName })\n\t\t\t\t)\n\n\t\t\t\treturn $row\n\t\t\t}\n\n\t\t\tthis.handleCommentClick = function($row, result, event) {\n\t\t\t\tif (self.fileAppLoaded() && self.fileList.id === 'files') {\n\t\t\t\t\tself.fileList.changeDirectory(OC.dirname(result.path))\n\t\t\t\t\tself.fileList.scrollTo(result.name)\n\t\t\t\t\treturn false\n\t\t\t\t} else {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.updateLegacyMimetype = function(result) {\n\t\t\t\t// backward compatibility:\n\t\t\t\tif (!result.mime && result.mime_type) {\n\t\t\t\t\tresult.mime = result.mime_type\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.setFileList = function(fileList) {\n\t\t\t\tthis.fileList = fileList\n\t\t\t}\n\n\t\t\tOC.Plugins.register('OCA.Search.Core', this)\n\t\t},\n\t\tattach: function(search) {\n\t\t\tsearch.setRenderer('comment', this.renderCommentResult.bind(this))\n\t\t\tsearch.setHandler('comment', this.handleCommentClick.bind(this))\n\t\t}\n\t}\n\n\tOCA.Search.comment = new Comment()\n})(OC, OCA, $)\n","/*! jquery.caret 2015-02-01 */\n!function(a,b){\"function\"==typeof define&&define.amd?define([\"jquery\"],function(c){return a.returnExportsGlobal=b(c)}):\"object\"==typeof exports?module.exports=b(require(\"jquery\")):b(jQuery)}(this,function(a){\"use strict\";var b,c,d,e,f,g,h,i,j,k,l;k=\"caret\",b=function(){function b(a){this.$inputor=a,this.domInputor=this.$inputor[0]}return b.prototype.setPos=function(){return this.domInputor},b.prototype.getIEPosition=function(){return this.getPosition()},b.prototype.getPosition=function(){var a,b;return b=this.getOffset(),a=this.$inputor.offset(),b.left-=a.left,b.top-=a.top,b},b.prototype.getOldIEPos=function(){var a,b;return b=h.selection.createRange(),a=h.body.createTextRange(),a.moveToElementText(this.domInputor),a.setEndPoint(\"EndToEnd\",b),a.text.length},b.prototype.getPos=function(){var a,b,c;return(c=this.range())?(a=c.cloneRange(),a.selectNodeContents(this.domInputor),a.setEnd(c.endContainer,c.endOffset),b=a.toString().length,a.detach(),b):h.selection?this.getOldIEPos():void 0},b.prototype.getOldIEOffset=function(){var a,b;return a=h.selection.createRange().duplicate(),a.moveStart(\"character\",-1),b=a.getBoundingClientRect(),{height:b.bottom-b.top,left:b.left,top:b.top}},b.prototype.getOffset=function(){var b,c,d,e,f;return j.getSelection&&(d=this.range())?(d.endOffset-1>0&&d.endContainer===!this.domInputor&&(b=d.cloneRange(),b.setStart(d.endContainer,d.endOffset-1),b.setEnd(d.endContainer,d.endOffset),e=b.getBoundingClientRect(),c={height:e.height,left:e.left+e.width,top:e.top},b.detach()),c&&0!==(null!=c?c.height:void 0)||(b=d.cloneRange(),f=a(h.createTextNode(\"|\")),b.insertNode(f[0]),b.selectNode(f[0]),e=b.getBoundingClientRect(),c={height:e.height,left:e.left,top:e.top},f.remove(),b.detach())):h.selection&&(c=this.getOldIEOffset()),c&&(c.top+=a(j).scrollTop(),c.left+=a(j).scrollLeft()),c},b.prototype.range=function(){var a;if(j.getSelection)return a=j.getSelection(),a.rangeCount>0?a.getRangeAt(0):null},b}(),c=function(){function b(a){this.$inputor=a,this.domInputor=this.$inputor[0]}return b.prototype.getIEPos=function(){var a,b,c,d,e,f,g;return b=this.domInputor,f=h.selection.createRange(),e=0,f&&f.parentElement()===b&&(d=b.value.replace(/\\r\\n/g,\"\\n\"),c=d.length,g=b.createTextRange(),g.moveToBookmark(f.getBookmark()),a=b.createTextRange(),a.collapse(!1),e=g.compareEndPoints(\"StartToEnd\",a)>-1?c:-g.moveStart(\"character\",-c)),e},b.prototype.getPos=function(){return h.selection?this.getIEPos():this.domInputor.selectionStart},b.prototype.setPos=function(a){var b,c;return b=this.domInputor,h.selection?(c=b.createTextRange(),c.move(\"character\",a),c.select()):b.setSelectionRange&&b.setSelectionRange(a,a),b},b.prototype.getIEOffset=function(a){var b,c,d,e;return c=this.domInputor.createTextRange(),a||(a=this.getPos()),c.move(\"character\",a),d=c.boundingLeft,e=c.boundingTop,b=c.boundingHeight,{left:d,top:e,height:b}},b.prototype.getOffset=function(b){var c,d,e;return c=this.$inputor,h.selection?(d=this.getIEOffset(b),d.top+=a(j).scrollTop()+c.scrollTop(),d.left+=a(j).scrollLeft()+c.scrollLeft(),d):(d=c.offset(),e=this.getPosition(b),d={left:d.left+e.left-c.scrollLeft(),top:d.top+e.top-c.scrollTop(),height:e.height})},b.prototype.getPosition=function(a){var b,c,e,f,g,h,i;return b=this.$inputor,f=function(a){return a=a.replace(/<|>|`|\"|&/g,\"?\").replace(/\\r\\n|\\r|\\n/g,\"<br/>\"),/firefox/i.test(navigator.userAgent)&&(a=a.replace(/\\s/g,\"&nbsp;\")),a},void 0===a&&(a=this.getPos()),i=b.val().slice(0,a),e=b.val().slice(a),g=\"<span style='position: relative; display: inline;'>\"+f(i)+\"</span>\",g+=\"<span id='caret' style='position: relative; display: inline;'>|</span>\",g+=\"<span style='position: relative; display: inline;'>\"+f(e)+\"</span>\",h=new d(b),c=h.create(g).rect()},b.prototype.getIEPosition=function(a){var b,c,d,e,f;return d=this.getIEOffset(a),c=this.$inputor.offset(),e=d.left-c.left,f=d.top-c.top,b=d.height,{left:e,top:f,height:b}},b}(),d=function(){function b(a){this.$inputor=a}return b.prototype.css_attr=[\"borderBottomWidth\",\"borderLeftWidth\",\"borderRightWidth\",\"borderTopStyle\",\"borderRightStyle\",\"borderBottomStyle\",\"borderLeftStyle\",\"borderTopWidth\",\"boxSizing\",\"fontFamily\",\"fontSize\",\"fontWeight\",\"height\",\"letterSpacing\",\"lineHeight\",\"marginBottom\",\"marginLeft\",\"marginRight\",\"marginTop\",\"outlineWidth\",\"overflow\",\"overflowX\",\"overflowY\",\"paddingBottom\",\"paddingLeft\",\"paddingRight\",\"paddingTop\",\"textAlign\",\"textOverflow\",\"textTransform\",\"whiteSpace\",\"wordBreak\",\"wordWrap\"],b.prototype.mirrorCss=function(){var b,c=this;return b={position:\"absolute\",left:-9999,top:0,zIndex:-2e4},\"TEXTAREA\"===this.$inputor.prop(\"tagName\")&&this.css_attr.push(\"width\"),a.each(this.css_attr,function(a,d){return b[d]=c.$inputor.css(d)}),b},b.prototype.create=function(b){return this.$mirror=a(\"<div></div>\"),this.$mirror.css(this.mirrorCss()),this.$mirror.html(b),this.$inputor.after(this.$mirror),this},b.prototype.rect=function(){var a,b,c;return a=this.$mirror.find(\"#caret\"),b=a.position(),c={left:b.left,top:b.top,height:a.height()},this.$mirror.remove(),c},b}(),e={contentEditable:function(a){return!(!a[0].contentEditable||\"true\"!==a[0].contentEditable)}},g={pos:function(a){return a||0===a?this.setPos(a):this.getPos()},position:function(a){return h.selection?this.getIEPosition(a):this.getPosition(a)},offset:function(a){var b;return b=this.getOffset(a)}},h=null,j=null,i=null,l=function(a){var b;return(b=null!=a?a.iframe:void 0)?(i=b,j=b.contentWindow,h=b.contentDocument||j.document):(i=void 0,j=window,h=document)},f=function(a){var b;h=a[0].ownerDocument,j=h.defaultView||h.parentWindow;try{return i=j.frameElement}catch(c){b=c}},a.fn.caret=function(d,f,h){var i;return g[d]?(a.isPlainObject(f)?(l(f),f=void 0):l(h),i=e.contentEditable(this)?new b(this):new c(this),g[d].apply(i,[f])):a.error(\"Method \"+d+\" does not exist on jQuery.caret\")},a.fn.caret.EditableCaret=b,a.fn.caret.InputCaret=c,a.fn.caret.Utils=e,a.fn.caret.apis=g});","!function(t,e){\"function\"==typeof define&&define.amd?define([\"jquery\"],function(t){return e(t)}):\"object\"==typeof exports?module.exports=e(require(\"jquery\")):e(jQuery)}(this,function(t){var e,i;i={ESC:27,TAB:9,ENTER:13,CTRL:17,A:65,P:80,N:78,LEFT:37,UP:38,RIGHT:39,DOWN:40,BACKSPACE:8,SPACE:32},e={beforeSave:function(t){return r.arrayToDefaultHash(t)},matcher:function(t,e,i,n){var r,o,s,a,h;return t=t.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\"\\\\$&\"),i&&(t=\"(?:^|\\\\s)\"+t),r=decodeURI(\"%C3%80\"),o=decodeURI(\"%C3%BF\"),h=n?\" \":\"\",a=new RegExp(t+\"([A-Za-z\"+r+\"-\"+o+\"0-9_\"+h+\"'.+-]*)$|\"+t+\"([^\\\\x00-\\\\xff]*)$\",\"gi\"),s=a.exec(e),s?s[2]||s[1]:null},filter:function(t,e,i){var n,r,o,s;for(n=[],r=0,s=e.length;s>r;r++)o=e[r],~new String(o[i]).toLowerCase().indexOf(t.toLowerCase())&&n.push(o);return n},remoteFilter:null,sorter:function(t,e,i){var n,r,o,s;if(!t)return e;for(n=[],r=0,s=e.length;s>r;r++)o=e[r],o.atwho_order=new String(o[i]).toLowerCase().indexOf(t.toLowerCase()),o.atwho_order>-1&&n.push(o);return n.sort(function(t,e){return t.atwho_order-e.atwho_order})},tplEval:function(t,e){var i,n,r;r=t;try{return\"string\"!=typeof t&&(r=t(e)),r.replace(/\\$\\{([^\\}]*)\\}/g,function(t,i,n){return e[i]})}catch(n){return i=n,\"\"}},highlighter:function(t,e){var i;return e?(i=new RegExp(\">\\\\s*([^<]*?)(\"+e.replace(\"+\",\"\\\\+\")+\")([^<]*)\\\\s*<\",\"ig\"),t.replace(i,function(t,e,i,n){return\"> \"+e+\"<strong>\"+i+\"</strong>\"+n+\" <\"})):t},beforeInsert:function(t,e,i){return t},beforeReposition:function(t){return t},afterMatchFailed:function(t,e){}};var n;n=function(){function e(e){this.currentFlag=null,this.controllers={},this.aliasMaps={},this.$inputor=t(e),this.setupRootElement(),this.listen()}return e.prototype.createContainer=function(e){var i;return null!=(i=this.$el)&&i.remove(),t(e.body).append(this.$el=t(\"<div class='atwho-container'></div>\"))},e.prototype.setupRootElement=function(e,i){var n,r;if(null==i&&(i=!1),e)this.window=e.contentWindow,this.document=e.contentDocument||this.window.document,this.iframe=e;else{this.document=this.$inputor[0].ownerDocument,this.window=this.document.defaultView||this.document.parentWindow;try{this.iframe=this.window.frameElement}catch(r){if(n=r,this.iframe=null,t.fn.atwho.debug)throw new Error(\"iframe auto-discovery is failed.\\nPlease use `setIframe` to set the target iframe manually.\\n\"+n)}}return this.createContainer((this.iframeAsRoot=i)?this.document:document)},e.prototype.controller=function(t){var e,i,n,r;if(this.aliasMaps[t])i=this.controllers[this.aliasMaps[t]];else{r=this.controllers;for(n in r)if(e=r[n],n===t){i=e;break}}return i?i:this.controllers[this.currentFlag]},e.prototype.setContextFor=function(t){return this.currentFlag=t,this},e.prototype.reg=function(t,e){var i,n;return n=(i=this.controllers)[t]||(i[t]=this.$inputor.is(\"[contentEditable]\")?new l(this,t):new s(this,t)),e.alias&&(this.aliasMaps[e.alias]=t),n.init(e),this},e.prototype.listen=function(){return this.$inputor.on(\"compositionstart\",function(t){return function(e){var i;return null!=(i=t.controller())&&i.view.hide(),t.isComposing=!0,null}}(this)).on(\"compositionend\",function(t){return function(e){return t.isComposing=!1,setTimeout(function(e){return t.dispatch(e)}),null}}(this)).on(\"keyup.atwhoInner\",function(t){return function(e){return t.onKeyup(e)}}(this)).on(\"keydown.atwhoInner\",function(t){return function(e){return t.onKeydown(e)}}(this)).on(\"blur.atwhoInner\",function(t){return function(e){var i;return(i=t.controller())?(i.expectedQueryCBId=null,i.view.hide(e,i.getOpt(\"displayTimeout\"))):void 0}}(this)).on(\"click.atwhoInner\",function(t){return function(e){return t.dispatch(e)}}(this)).on(\"scroll.atwhoInner\",function(t){return function(){var e;return e=t.$inputor.scrollTop(),function(i){var n,r;return n=i.target.scrollTop,e!==n&&null!=(r=t.controller())&&r.view.hide(i),e=n,!0}}}(this)())},e.prototype.shutdown=function(){var t,e,i;i=this.controllers;for(t in i)e=i[t],e.destroy(),delete this.controllers[t];return this.$inputor.off(\".atwhoInner\"),this.$el.remove()},e.prototype.dispatch=function(t){var e,i,n,r;n=this.controllers,r=[];for(e in n)i=n[e],r.push(i.lookUp(t));return r},e.prototype.onKeyup=function(e){var n;switch(e.keyCode){case i.ESC:e.preventDefault(),null!=(n=this.controller())&&n.view.hide();break;case i.DOWN:case i.UP:case i.CTRL:case i.ENTER:t.noop();break;case i.P:case i.N:e.ctrlKey||this.dispatch(e);break;default:this.dispatch(e)}},e.prototype.onKeydown=function(e){var n,r;if(r=null!=(n=this.controller())?n.view:void 0,r&&r.visible())switch(e.keyCode){case i.ESC:e.preventDefault(),r.hide(e);break;case i.UP:e.preventDefault(),r.prev();break;case i.DOWN:e.preventDefault(),r.next();break;case i.P:if(!e.ctrlKey)return;e.preventDefault(),r.prev();break;case i.N:if(!e.ctrlKey)return;e.preventDefault(),r.next();break;case i.TAB:case i.ENTER:case i.SPACE:if(!r.visible())return;if(!this.controller().getOpt(\"spaceSelectsMatch\")&&e.keyCode===i.SPACE)return;if(!this.controller().getOpt(\"tabSelectsMatch\")&&e.keyCode===i.TAB)return;r.highlighted()?(e.preventDefault(),r.choose(e)):r.hide(e);break;default:t.noop()}},e}();var r,o=[].slice;r=function(){function i(e,i){this.app=e,this.at=i,this.$inputor=this.app.$inputor,this.id=this.$inputor[0].id||this.uid(),this.expectedQueryCBId=null,this.setting=null,this.query=null,this.pos=0,this.range=null,0===(this.$el=t(\"#atwho-ground-\"+this.id,this.app.$el)).length&&this.app.$el.append(this.$el=t(\"<div id='atwho-ground-\"+this.id+\"'></div>\")),this.model=new u(this),this.view=new c(this)}return i.prototype.uid=function(){return(Math.random().toString(16)+\"000000000\").substr(2,8)+(new Date).getTime()},i.prototype.init=function(e){return this.setting=t.extend({},this.setting||t.fn.atwho[\"default\"],e),this.view.init(),this.model.reload(this.setting.data)},i.prototype.destroy=function(){return this.trigger(\"beforeDestroy\"),this.model.destroy(),this.view.destroy(),this.$el.remove()},i.prototype.callDefault=function(){var i,n,r,s;s=arguments[0],i=2<=arguments.length?o.call(arguments,1):[];try{return e[s].apply(this,i)}catch(r){return n=r,t.error(n+\" Or maybe At.js doesn't have function \"+s)}},i.prototype.trigger=function(t,e){var i,n;return null==e&&(e=[]),e.push(this),i=this.getOpt(\"alias\"),n=i?t+\"-\"+i+\".atwho\":t+\".atwho\",this.$inputor.trigger(n,e)},i.prototype.callbacks=function(t){return this.getOpt(\"callbacks\")[t]||e[t]},i.prototype.getOpt=function(t,e){var i,n;try{return this.setting[t]}catch(n){return i=n,null}},i.prototype.insertContentFor=function(e){var i,n;return n=this.getOpt(\"insertTpl\"),i=t.extend({},e.data(\"item-data\"),{\"atwho-at\":this.at}),this.callbacks(\"tplEval\").call(this,n,i,\"onInsert\")},i.prototype.renderView=function(t){var e;return e=this.getOpt(\"searchKey\"),t=this.callbacks(\"sorter\").call(this,this.query.text,t.slice(0,1001),e),this.view.render(t.slice(0,this.getOpt(\"limit\")))},i.arrayToDefaultHash=function(e){var i,n,r,o;if(!t.isArray(e))return e;for(o=[],i=0,r=e.length;r>i;i++)n=e[i],t.isPlainObject(n)?o.push(n):o.push({name:n});return o},i.prototype.lookUp=function(t){var e,i;if((!t||\"click\"!==t.type||this.getOpt(\"lookUpOnClick\"))&&(!this.getOpt(\"suspendOnComposing\")||!this.app.isComposing))return(e=this.catchQuery(t))?(this.app.setContextFor(this.at),(i=this.getOpt(\"delay\"))?this._delayLookUp(e,i):this._lookUp(e),e):(this.expectedQueryCBId=null,e)},i.prototype._delayLookUp=function(t,e){var i,n;return i=Date.now?Date.now():(new Date).getTime(),this.previousCallTime||(this.previousCallTime=i),n=e-(i-this.previousCallTime),n>0&&e>n?(this.previousCallTime=i,this._stopDelayedCall(),this.delayedCallTimeout=setTimeout(function(e){return function(){return e.previousCallTime=0,e.delayedCallTimeout=null,e._lookUp(t)}}(this),e)):(this._stopDelayedCall(),this.previousCallTime!==i&&(this.previousCallTime=0),this._lookUp(t))},i.prototype._stopDelayedCall=function(){return this.delayedCallTimeout?(clearTimeout(this.delayedCallTimeout),this.delayedCallTimeout=null):void 0},i.prototype._generateQueryCBId=function(){return{}},i.prototype._lookUp=function(e){var i;return i=function(t,e){return t===this.expectedQueryCBId?e&&e.length>0?this.renderView(this.constructor.arrayToDefaultHash(e)):this.view.hide():void 0},this.expectedQueryCBId=this._generateQueryCBId(),this.model.query(e.text,t.proxy(i,this,this.expectedQueryCBId))},i}();var s,a=function(t,e){function i(){this.constructor=t}for(var n in e)h.call(e,n)&&(t[n]=e[n]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},h={}.hasOwnProperty;s=function(e){function i(){return i.__super__.constructor.apply(this,arguments)}return a(i,e),i.prototype.catchQuery=function(){var t,e,i,n,r,o,s;return e=this.$inputor.val(),t=this.$inputor.caret(\"pos\",{iframe:this.app.iframe}),s=e.slice(0,t),r=this.callbacks(\"matcher\").call(this,this.at,s,this.getOpt(\"startWithSpace\"),this.getOpt(\"acceptSpaceBar\")),n=\"string\"==typeof r,n&&r.length<this.getOpt(\"minLen\",0)?void 0:(n&&r.length<=this.getOpt(\"maxLen\",20)?(o=t-r.length,i=o+r.length,this.pos=o,r={text:r,headPos:o,endPos:i},this.trigger(\"matched\",[this.at,r.text])):(r=null,this.view.hide()),this.query=r)},i.prototype.rect=function(){var e,i,n;if(e=this.$inputor.caret(\"offset\",this.pos-1,{iframe:this.app.iframe}))return this.app.iframe&&!this.app.iframeAsRoot&&(i=t(this.app.iframe).offset(),e.left+=i.left,e.top+=i.top),n=this.app.document.selection?0:2,{left:e.left,top:e.top,bottom:e.top+e.height+n}},i.prototype.insert=function(t,e){var i,n,r,o,s;return i=this.$inputor,n=i.val(),r=n.slice(0,Math.max(this.query.headPos-this.at.length,0)),o=\"\"===(o=this.getOpt(\"suffix\"))?o:o||\" \",t+=o,s=\"\"+r+t+n.slice(this.query.endPos||0),i.val(s),i.caret(\"pos\",r.length+t.length,{iframe:this.app.iframe}),i.is(\":focus\")||i.focus(),i.change()},i}(r);var l,a=function(t,e){function i(){this.constructor=t}for(var n in e)h.call(e,n)&&(t[n]=e[n]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},h={}.hasOwnProperty;l=function(e){function n(){return n.__super__.constructor.apply(this,arguments)}return a(n,e),n.prototype._getRange=function(){var t;return t=this.app.window.getSelection(),t.rangeCount>0?t.getRangeAt(0):void 0},n.prototype._setRange=function(e,i,n){return null==n&&(n=this._getRange()),n&&i?(i=t(i)[0],\"after\"===e?(n.setEndAfter(i),n.setStartAfter(i)):(n.setEndBefore(i),n.setStartBefore(i)),n.collapse(!1),this._clearRange(n)):void 0},n.prototype._clearRange=function(t){var e;return null==t&&(t=this._getRange()),e=this.app.window.getSelection(),null==this.ctrl_a_pressed?(e.removeAllRanges(),e.addRange(t)):void 0},n.prototype._movingEvent=function(t){var e;return\"click\"===t.type||(e=t.which)===i.RIGHT||e===i.LEFT||e===i.UP||e===i.DOWN},n.prototype._unwrap=function(e){var i;return e=t(e).unwrap().get(0),(i=e.nextSibling)&&i.nodeValue&&(e.nodeValue+=i.nodeValue,t(i).remove()),e},n.prototype.catchQuery=function(e){var n,r,o,s,a,h,l,u,c,p,f,d;if((d=this._getRange())&&d.collapsed){if(e.which===i.ENTER)return(r=t(d.startContainer).closest(\".atwho-query\")).contents().unwrap(),r.is(\":empty\")&&r.remove(),(r=t(\".atwho-query\",this.app.document)).text(r.text()).contents().last().unwrap(),void this._clearRange();if(/firefox/i.test(navigator.userAgent)){if(t(d.startContainer).is(this.$inputor))return void this._clearRange();e.which===i.BACKSPACE&&d.startContainer.nodeType===document.ELEMENT_NODE&&(c=d.startOffset-1)>=0?(o=d.cloneRange(),o.setStart(d.startContainer,c),t(o.cloneContents()).contents().last().is(\".atwho-inserted\")&&(a=t(d.startContainer).contents().get(c),this._setRange(\"after\",t(a).contents().last()))):e.which===i.LEFT&&d.startContainer.nodeType===document.TEXT_NODE&&(n=t(d.startContainer.previousSibling),n.is(\".atwho-inserted\")&&0===d.startOffset&&this._setRange(\"after\",n.contents().last()))}if(t(d.startContainer).closest(\".atwho-inserted\").addClass(\"atwho-query\").siblings().removeClass(\"atwho-query\"),(r=t(\".atwho-query\",this.app.document)).length>0&&r.is(\":empty\")&&0===r.text().length&&r.remove(),this._movingEvent(e)||r.removeClass(\"atwho-inserted\"),r.length>0)switch(e.which){case i.LEFT:return this._setRange(\"before\",r.get(0),d),void r.removeClass(\"atwho-query\");case i.RIGHT:return this._setRange(\"after\",r.get(0).nextSibling,d),void r.removeClass(\"atwho-query\")}if(r.length>0&&(f=r.attr(\"data-atwho-at-query\"))&&(r.empty().html(f).attr(\"data-atwho-at-query\",null),this._setRange(\"after\",r.get(0),d)),o=d.cloneRange(),o.setStart(d.startContainer,0),u=this.callbacks(\"matcher\").call(this,this.at,o.toString(),this.getOpt(\"startWithSpace\"),this.getOpt(\"acceptSpaceBar\")),h=\"string\"==typeof u,0===r.length&&h&&(s=d.startOffset-this.at.length-u.length)>=0&&(d.setStart(d.startContainer,s),r=t(\"<span/>\",this.app.document).attr(this.getOpt(\"editableAtwhoQueryAttrs\")).addClass(\"atwho-query\"),d.surroundContents(r.get(0)),l=r.contents().last().get(0),l&&(/firefox/i.test(navigator.userAgent)?(d.setStart(l,l.length),d.setEnd(l,l.length),this._clearRange(d)):this._setRange(\"after\",l,d))),!(h&&u.length<this.getOpt(\"minLen\",0)))return h&&u.length<=this.getOpt(\"maxLen\",20)?(p={text:u,el:r},this.trigger(\"matched\",[this.at,p.text]),this.query=p):(this.view.hide(),this.query={el:r},r.text().indexOf(this.at)>=0&&(this._movingEvent(e)&&r.hasClass(\"atwho-inserted\")?r.removeClass(\"atwho-query\"):!1!==this.callbacks(\"afterMatchFailed\").call(this,this.at,r)&&this._setRange(\"after\",this._unwrap(r.text(r.text()).contents().first()))),null)}},n.prototype.rect=function(){var e,i,n;return n=this.query.el.offset(),n&&this.query.el[0].getClientRects().length?(this.app.iframe&&!this.app.iframeAsRoot&&(i=(e=t(this.app.iframe)).offset(),n.left+=i.left-this.$inputor.scrollLeft(),n.top+=i.top-this.$inputor.scrollTop()),n.bottom=n.top+this.query.el.height(),n):void 0},n.prototype.insert=function(t,e){var i,n,r,o,s;return this.$inputor.is(\":focus\")||this.$inputor.focus(),n=this.getOpt(\"functionOverrides\"),n.insert?n.insert.call(this,t,e):(o=\"\"===(o=this.getOpt(\"suffix\"))?o:o||\" \",i=e.data(\"item-data\"),this.query.el.removeClass(\"atwho-query\").addClass(\"atwho-inserted\").html(t).attr(\"data-atwho-at-query\",\"\"+i[\"atwho-at\"]+this.query.text).attr(\"contenteditable\",\"false\"),(r=this._getRange())&&(this.query.el.length&&r.setEndAfter(this.query.el[0]),r.collapse(!1),r.insertNode(s=this.app.document.createTextNode(\"\"+o)),this._setRange(\"after\",s,r)),this.$inputor.is(\":focus\")||this.$inputor.focus(),this.$inputor.change())},n}(r);var u;u=function(){function e(t){this.context=t,this.at=this.context.at,this.storage=this.context.$inputor}return e.prototype.destroy=function(){return this.storage.data(this.at,null)},e.prototype.saved=function(){return this.fetch()>0},e.prototype.query=function(t,e){var i,n,r;return n=this.fetch(),r=this.context.getOpt(\"searchKey\"),n=this.context.callbacks(\"filter\").call(this.context,t,n,r)||[],i=this.context.callbacks(\"remoteFilter\"),n.length>0||!i&&0===n.length?e(n):i.call(this.context,t,e)},e.prototype.fetch=function(){return this.storage.data(this.at)||[]},e.prototype.save=function(t){return this.storage.data(this.at,this.context.callbacks(\"beforeSave\").call(this.context,t||[]))},e.prototype.load=function(t){return!this.saved()&&t?this._load(t):void 0},e.prototype.reload=function(t){return this._load(t)},e.prototype._load=function(e){return\"string\"==typeof e?t.ajax(e,{dataType:\"json\"}).done(function(t){return function(e){return t.save(e)}}(this)):this.save(e)},e}();var c;c=function(){function e(e){this.context=e,this.$el=t(\"<div class='atwho-view'><ul class='atwho-view-ul'></ul></div>\"),this.$elUl=this.$el.children(),this.timeoutID=null,this.context.$el.append(this.$el),this.bindEvent()}return e.prototype.init=function(){var t,e;return e=this.context.getOpt(\"alias\")||this.context.at.charCodeAt(0),t=this.context.getOpt(\"headerTpl\"),t&&1===this.$el.children().length&&this.$el.prepend(t),this.$el.attr({id:\"at-view-\"+e})},e.prototype.destroy=function(){return this.$el.remove()},e.prototype.bindEvent=function(){var e,i,n;return e=this.$el.find(\"ul\"),i=0,n=0,e.on(\"mousemove.atwho-view\",\"li\",function(r){return function(r){var o;if((i!==r.clientX||n!==r.clientY)&&(i=r.clientX,n=r.clientY,o=t(r.currentTarget),!o.hasClass(\"cur\")))return e.find(\".cur\").removeClass(\"cur\"),o.addClass(\"cur\")}}(this)).on(\"click.atwho-view\",\"li\",function(i){return function(n){return e.find(\".cur\").removeClass(\"cur\"),t(n.currentTarget).addClass(\"cur\"),i.choose(n),n.preventDefault()}}(this))},e.prototype.visible=function(){return t.expr.filters.visible(this.$el[0])},e.prototype.highlighted=function(){return this.$el.find(\".cur\").length>0},e.prototype.choose=function(t){var e,i;return(e=this.$el.find(\".cur\")).length&&(i=this.context.insertContentFor(e),this.context._stopDelayedCall(),this.context.insert(this.context.callbacks(\"beforeInsert\").call(this.context,i,e,t),e),this.context.trigger(\"inserted\",[e,t]),this.hide(t)),this.context.getOpt(\"hideWithoutSuffix\")?this.stopShowing=!0:void 0},e.prototype.reposition=function(e){var i,n,r,o;return i=this.context.app.iframeAsRoot?this.context.app.window:window,e.bottom+this.$el.height()-t(i).scrollTop()>t(i).height()&&(e.bottom=e.top-this.$el.height()),e.left>(r=t(i).width()-this.$el.width()-5)&&(e.left=r),n={left:e.left,top:e.bottom},null!=(o=this.context.callbacks(\"beforeReposition\"))&&o.call(this.context,n),this.$el.offset(n),this.context.trigger(\"reposition\",[n])},e.prototype.next=function(){var t,e,i,n;return t=this.$el.find(\".cur\").removeClass(\"cur\"),e=t.next(),e.length||(e=this.$el.find(\"li:first\")),e.addClass(\"cur\"),i=e[0],n=i.offsetTop+i.offsetHeight+(i.nextSibling?i.nextSibling.offsetHeight:0),this.scrollTop(Math.max(0,n-this.$el.height()))},e.prototype.prev=function(){var t,e,i,n;return t=this.$el.find(\".cur\").removeClass(\"cur\"),i=t.prev(),i.length||(i=this.$el.find(\"li:last\")),i.addClass(\"cur\"),n=i[0],e=n.offsetTop+n.offsetHeight+(n.nextSibling?n.nextSibling.offsetHeight:0),this.scrollTop(Math.max(0,e-this.$el.height()))},e.prototype.scrollTop=function(t){var e;return e=this.context.getOpt(\"scrollDuration\"),e?this.$elUl.animate({scrollTop:t},e):this.$elUl.scrollTop(t)},e.prototype.show=function(){var t;return this.stopShowing?void(this.stopShowing=!1):(this.visible()||(this.$el.show(),this.$el.scrollTop(0),this.context.trigger(\"shown\")),(t=this.context.rect())?this.reposition(t):void 0)},e.prototype.hide=function(t,e){var i;if(this.visible())return isNaN(e)?(this.$el.hide(),this.context.trigger(\"hidden\",[t])):(i=function(t){return function(){return t.hide()}}(this),clearTimeout(this.timeoutID),this.timeoutID=setTimeout(i,e))},e.prototype.render=function(e){var i,n,r,o,s,a,h;if(!(t.isArray(e)&&e.length>0))return void this.hide();for(this.$el.find(\"ul\").empty(),n=this.$el.find(\"ul\"),h=this.context.getOpt(\"displayTpl\"),r=0,s=e.length;s>r;r++)o=e[r],o=t.extend({},o,{\"atwho-at\":this.context.at}),a=this.context.callbacks(\"tplEval\").call(this.context,h,o,\"onDisplay\"),i=t(this.context.callbacks(\"highlighter\").call(this.context,a,this.context.query.text)),i.data(\"item-data\",o),n.append(i);return this.show(),this.context.getOpt(\"highlightFirst\")?n.find(\"li:first\").addClass(\"cur\"):void 0},e}();var p;p={load:function(t,e){var i;return(i=this.controller(t))?i.model.load(e):void 0},isSelecting:function(){var t;return!!(null!=(t=this.controller())?t.view.visible():void 0)},hide:function(){var t;return null!=(t=this.controller())?t.view.hide():void 0},reposition:function(){var t;return(t=this.controller())?t.view.reposition(t.rect()):void 0},setIframe:function(t,e){return this.setupRootElement(t,e),null},run:function(){return this.dispatch()},destroy:function(){return this.shutdown(),this.$inputor.data(\"atwho\",null)}},t.fn.atwho=function(e){var i,r;return i=arguments,r=null,this.filter('textarea, input, [contenteditable=\"\"], [contenteditable=true]').each(function(){var o,s;return(s=(o=t(this)).data(\"atwho\"))||o.data(\"atwho\",s=new n(this)),\"object\"!=typeof e&&e?p[e]&&s?r=p[e].apply(s,Array.prototype.slice.call(i,1)):t.error(\"Method \"+e+\" does not exist on jQuery.atwho\"):s.reg(e.at,e)}),null!=r?r:this},t.fn.atwho[\"default\"]={at:void 0,alias:void 0,data:null,displayTpl:\"<li>${name}</li>\",insertTpl:\"${atwho-at}${name}\",headerTpl:null,callbacks:e,functionOverrides:{},searchKey:\"name\",suffix:void 0,hideWithoutSuffix:!1,startWithSpace:!0,acceptSpaceBar:!1,highlightFirst:!0,limit:5,maxLen:20,minLen:0,displayTimeout:300,delay:null,spaceSelectsMatch:!1,tabSelectsMatch:!0,editableAtwhoQueryAttrs:{},scrollDuration:150,suspendOnComposing:!0,lookUpOnClick:!0},t.fn.atwho.debug=!1});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./autocomplete.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8e87fa8e\", content, true, {});","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".atwho-view{position:absolute;top:0;left:0;display:none;margin-top:18px;background:var(--color-main-background);color:var(--color-main-text);border:1px solid var(--color-border);border-radius:var(--border-radius);box-shadow:0 0 5px var(--color-box-shadow);min-width:120px;z-index:11110 !important}.atwho-view .atwho-header{padding:5px;margin:5px;cursor:pointer;border-bottom:solid 1px var(--color-border);color:var(--color-main-text);font-size:11px;font-weight:bold}.atwho-view .atwho-header .small{color:var(--color-main-text);float:right;padding-top:2px;margin-right:-5px;font-size:12px;font-weight:normal}.atwho-view .atwho-header:hover{cursor:default}.atwho-view .cur{background:var(--color-primary);color:var(--color-primary-text)}.atwho-view .cur small{color:var(--color-primary-text)}.atwho-view strong{color:var(--color-main-text);font-weight:normal}.atwho-view .cur strong{color:var(--color-primary-text);font-weight:normal}.atwho-view ul{list-style:none;padding:0;margin:auto;max-height:200px;overflow-y:auto}.atwho-view ul li{display:block;padding:5px 10px;border-bottom:1px solid var(--color-border);cursor:pointer}.atwho-view small{font-size:smaller;color:var(--color-main-text);font-weight:normal}\\n\", \"\"]);\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./comments.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"477a5c21\", content, true, {});","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"#commentsTabView .emptycontent{margin-top:0}#commentsTabView .newCommentForm{margin-left:36px;position:relative}#commentsTabView .newCommentForm .message{width:100%;padding:10px;min-height:44px;margin:0;padding-right:30px}#commentsTabView .newCommentForm .submit,#commentsTabView .newCommentForm .submitLoading{width:44px;height:44px;margin:0;padding:13px;background-color:transparent;border:none;opacity:.3;position:absolute;bottom:0;right:0}#commentsTabView .deleteLoading{padding:14px;vertical-align:middle}#commentsTabView .newCommentForm .submit:not(:disabled):hover,#commentsTabView .newCommentForm .submit:not(:disabled):focus{opacity:1}#commentsTabView .newCommentForm div.message{resize:none}#commentsTabView .newCommentForm div.message:empty:before{content:attr(data-placeholder);color:grey}#commentsTabView .comment{position:relative;padding:10px 0 15px}#commentsTabView .comments .comment{border-top:1px solid var(--color-border)}#commentsTabView .comment .avatar,.atwho-view-ul * .avatar{width:32px;height:32px;line-height:32px;margin-right:5px}#commentsTabView .comment .message .avatar,.atwho-view-ul * .avatar{display:inline-block}#activityTabView li.comment.collapsed .activitymessage,#commentsTabView .comment.collapsed .message{white-space:pre-wrap}#activityTabView li.comment.collapsed .activitymessage,#commentsTabView .comment.collapsed .message{max-height:70px;overflow:hidden}#activityTabView li.comment .message-overlay,#commentsTabView .comment .message-overlay{display:none}#activityTabView li.comment.collapsed .message-overlay,#commentsTabView .comment.collapsed .message-overlay{display:block;position:absolute;z-index:2;height:50px;pointer-events:none;left:0;right:0;bottom:0;background:-moz-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background:-webkit-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background:-o-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background:-ms-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background:linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));background-repeat:no-repeat}#commentsTabView .hidden{display:none !important}#commentsTabView .comment .authorRow{min-height:44px}#commentsTabView .comment .authorRow .tooltip{margin-top:5px}.atwho-view-ul * .avatar-name-wrapper,#commentsTabView .comment .authorRow{position:relative;display:inline-flex;align-items:center;width:100%}#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser),#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser) .avatar,#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser) .avatar img,#commentsTabView .comment .authorRow .avatar:not(.currentUser),#commentsTabView .comment .authorRow .author:not(.currentUser){cursor:pointer}.atwho-view-ul .avatar-name-wrapper,.atwho-view-ul .avatar-name-wrapper .avatar,.atwho-view-ul .avatar-name-wrapper .avatar img{cursor:pointer}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper{position:relative;display:inline;vertical-align:top;background-color:var(--color-background-dark);border-radius:50vh;padding:1px 7px 1px 1px;white-space:nowrap}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper .avatar,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper .avatar{height:16px;width:16px;vertical-align:middle;padding:1px;margin-top:-3px;margin-left:0;margin-right:2px}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper .avatar img,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper .avatar img{vertical-align:top}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper strong,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper strong{font-weight:bold}#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper.currentUser,#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper.currentUser{background-color:var(--color-primary);color:var(--color-primary-text)}.atwho-view-ul * .avatar-name-wrapper{white-space:nowrap}#commentsTabView .comment .author,#commentsTabView .comment .date{opacity:.5}#commentsTabView .comment .author{max-width:210px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}#commentsTabView .comment .date{margin-left:auto;padding:10px 0px}#commentsTabView .comments>li:not(.newCommentRow) .message{padding-left:40px;word-wrap:break-word;overflow-wrap:break-word}#commentsTabView .comment .action{opacity:0.3;padding:14px;display:block}#commentsTabView .comment .action:hover,#commentsTabView .comment .action:focus{opacity:1}#commentsTabView .newCommentRow .action-container{margin-left:auto}#commentsTabView .comment.disabled .message{opacity:0.3}#commentsTabView .comment.disabled .action{display:none}#commentsTabView .message.error{color:#e9322d;border-color:#e9322d;box-shadow:0 0 6px #f8b9b7}.app-files .action-comment{padding:16px 14px}#commentsTabView .comment .message .contactsmenu-popover{left:-6px;top:24px}\\n\", \"\"]);\n"],"sourceRoot":""}
\ No newline at end of file
index a638f46a2c6ee364d34f64f9f4c6dda60986f3a6..e7dbc0abba7caedd446e30689a2d32560d7d18dd 100644 (file)
                                $comment.find('.avatar-name-wrapper').each(function() {
                                        var $this = $(this)
                                        var $inserted = $this.parent()
-                                       var userId = $this.find('.avatar').data('username')
+                                       var userId = $this.find('.avatar').data('username').toString()
                                        if (userId.indexOf(' ') !== -1) {
                                                $inserted.html('@"' + userId + '"')
                                        } else {
index df244df987cb2ceffc6af69c044c6e7e8a0fd1d4..1e45bb63a76a82399c671ea76760e3d4d6bc011a 100644 (file)
@@ -107,7 +107,7 @@ class AutoCompleteController extends Controller {
                foreach ($results as $type => $subResult) {
                        foreach ($subResult as $result) {
                                $output[] = [
-                                       'id' => $result['value']['shareWith'],
+                                       'id' => (string) $result['value']['shareWith'],
                                        'label' => $result['label'],
                                        'source' => $type,
                                ];
index 971b702556473931ea145a9a90bc2dd7f271c2fa..9de269224f522cb16127819f30b071e5f333f2ba 100644 (file)
@@ -71,7 +71,7 @@ class UserPlugin implements ISearchPlugin {
                        foreach ($userGroups as $userGroup) {
                                $usersTmp = $this->groupManager->displayNamesInGroup($userGroup, $search, $limit, $offset);
                                foreach ($usersTmp as $uid => $userDisplayName) {
-                                       $users[$uid] = $userDisplayName;
+                                       $users[(string) $uid] = $userDisplayName;
                                }
                        }
                } else {
@@ -80,7 +80,7 @@ class UserPlugin implements ISearchPlugin {
 
                        foreach ($usersTmp as $user) {
                                if ($user->isEnabled()) { // Don't keep deactivated users
-                                       $users[$user->getUID()] = $user->getDisplayName();
+                                       $users[(string) $user->getUID()] = $user->getDisplayName();
                                }
                        }
                }
@@ -94,6 +94,7 @@ class UserPlugin implements ISearchPlugin {
                $foundUserById = false;
                $lowerSearch = strtolower($search);
                foreach ($users as $uid => $userDisplayName) {
+                       $uid = (string) $uid;
                        if (strtolower($uid) === $lowerSearch || strtolower($userDisplayName) === $lowerSearch) {
                                if (strtolower($uid) === $lowerSearch) {
                                        $foundUserById = true;
index 0e51b4ec2cc4a2b1808f0a5084f988210c6e7c75..dc4a7fbd11c68d3f52c10843be666426f731f298 100644 (file)
@@ -392,7 +392,7 @@ class Manager extends PublicEmitter implements IGroupManager {
 
                $matchingUsers = [];
                foreach ($groupUsers as $groupUser) {
-                       $matchingUsers[$groupUser->getUID()] = $groupUser->getDisplayName();
+                       $matchingUsers[(string) $groupUser->getUID()] = $groupUser->getDisplayName();
                }
                return $matchingUsers;
        }