File: //usr/share/usermin/authentic-theme/extensions/mail/mail.min.js
/*!
* Authentic Theme (https://github.com/authentic-theme/authentic-theme)
* Copyright Ilia Rostovtsev <ilia@virtualmin.com>
* Licensed under MIT (https://github.com/authentic-theme/authentic-theme/blob/master/LICENSE)
*/
"use strict";const mail=function(){const e={path:{origin:v___location_origin,prefix:v___location_prefix,extensions:v___server_extensions_path,css:v___server_css_path,js:v___server_js_path},variable:{switch:function(){return $t_uri_webmail},module:{name:function(){return"mailbox"},link:function(){let e=v___location_prefix;return e?`${e}/${v___module}`:`/${this.name()}`}},locale:{short:config_portable_theme_locale_format_short}},platform:{mac:"MacIntel"===window.navigator.platform},pjax:{fetch:plugins.pjax.page.link.get},fetch:{options:{headers:{"x-requested-with":"XMLHttpRequest"}}},load,sdata:session.server.data,mavailable:core.moduleAvailable,lang:theme_language,notification:{post:plugins.messenger.post,hideAll:plugins.messenger.toast.hideAll},file_chooser:plugins.chooser.file,button:{progress:snippets.progressive_button,lock:snippets.button_lock},rows:page_table_rows_control,document_title:theme_title_generate,update_mdata:core.updateModuleData,uri_param:uri_parse_param,error:connection_error,error_quota:theme_error_disk_quota_exceeded,event:{generate:event_generate},navigation:{reset:plugins.navigation.reset},plugin:{json_to_query:Convert.json_to_query,serialized_to_json:Convert.serialized_to_json,nice_size:Convert.nice_size,html_escape:Convert.htmlEscape,html_strip:Convert.htmlStrip,quote_escape:Convert.quoteEscape,arr_prepend:Convert.arrPrepend,quill_toolip:quill_toolbar_tooltip,setup_modifier:theme_modifiers_replace_for_mac,timestamp:snippets.datetime.locale,offset_adjust:page.handle.content.offset,preloader:{hide:page.handle.content.preloader.hide},dayjs,select:(e,t="34")=>{Array.isArray(e)?e[0].select2(e[1]):(e.select2({minimumResultsForSearch:5,containerCssClass:`select2-content heighter-${t}`,dropdownCssClass:`select2-content h${t}`}),e.next(".select2").addClass("select2-content-container"),e.on("select2:open",function(){$(".select2-container").off("click.container").on("click.container",function(e){e.stopPropagation()})}))},scroll:(e,t)=>{"string"==typeof e?$(e).mCustomScrollbar(t):$(e[0]).mCustomScrollbar("scrollTo",e[1],{scrollOffset:[$(e[0]),3,4]})},arialabel:()=>{let e="aria-label";document.querySelectorAll('[data-tooltip="mailbox"]:not('+e+")").forEach(t=>t.setAttribute(e,t.getAttribute("data-title")))},tooltip:e=>{(e||$('[data-tooltip="mailbox"]')).tooltip({html:!0,trigger:"hover",container:"body",sanitize:!1,delay:{show:600,hide:30}})}}},t={$:{layout:{container:"container-fluid",controls:"mail-controls",panel:"panel-mail panel-body",row:{controls:"row row-controls",messages:"row row-messages colorify",quota:"row row-quota",centered:"row text-center"},column:{3:"col-xs-3",4:"col-xs-4",6:"col-xs-6",8:"col-xs-8",9:"col-xs-9",12:"col-xs-12"},button:{link:"btn btn-link text-decoration-none",transparent:{plain:"btn btn-transparent",link:"btn btn-link btn-transparent"},default:"btn btn-default",primary:"btn btn-primary",block:{default:"btn btn-default btn-block",transparent:"btn btn-transparent btn-block"},dropdown:{default:"btn btn-default dropdown-toggle"}}},tree:{container:"data-mail-folders",active:"fancytree-active",loader:"fancytree-loader",title:"fancytree-title",bubble:"label label-danger"},controls:{compose:{button:"[data-compose]",icon:"fa-fw fa-plus"},select:{dropdown:"dropdown-select",checkbox:"[data-select] input",menus:"[data-select-mass]"},delete:"btn btn-default fa fa-trash",forward:"btn btn-default fa fa-forward",search:{link:'[data-href^="sort.cgi"]',clear:{link:"search-clear text-danger",icon:"fa-fw fa-times-circle-o"},dropdown:"dropdown-search",icon:"fa-search",data:{form:{action:"data-form-action",type:"data-form-action-type",advanced:"data-form-action-advanced"}},button:{type:'[data-toggle-type="1"]'},caret:{down:"fa-caret-down",up:"fa-caret-up"},submit:"[data-search-submit]"},move:{dropdown:"dropdown-move",checkbox:"[data-copy-only]",icon:"fa-folder-move",submit:"[data-transfer-submit]"},more:{dropdown:"dropdown-more",icon:"fa-dots-vertical",menu:{read:'[data-form-action="markas1"]',unread:'[data-form-action="markas0"]',special:'[data-form-action="markas2"]',spam:'[data-form-action="razor"]',ham:'[data-form-action="ham"]',black:'[data-form-action="black"]',white:'[data-form-action="white"]'}},sort:{dropdown:"dropdown-sort",icon:"fa-fw fa-sort"},counter:"mail-selected-count",refresh:{button:"btn btn-lg btn-default fa fa-refresh-mdi"},pagination:"pagination-title",settings:"btn btn-default fa fa-cog"},messages:{checkbox:"input[data-check]",flag:"mail-list-trow-flag-security",special:{star:"star",starred:"fa-star star",unstarred:"fa-star-o star"},row:{empty:"fa fa-fw fa-1_50x fa-inbox"}},compose:{button:{inverse:"btn-inverse",submit:"btn-primary",schedule:"btn-info"},hidden:"hidden",panel:{content:"jsPanel-content",container:"jspCompose",container_shown:"jspShown",backdrop:"compose_backdrop"},editor:{compose:"ql-compose",composer:"data-composer",scheduled:"scheduled",content:"ql-editor",toolbar:"ql-toolbar",disabled:"ql-disabled",tb_bold:"ql-bold",tb_link:"ql-link",tb_image:"ql-image",controls:{compose:"compose-controls",more:"more-options",extra:{attach:"e-attachment",link:"e-ql-link",image:"e-ql-image",html:"e-html",discard:"e-discard"}}},form:{header:"form-head",recipients:{control:"recipients-control",fields:"recipients-control-fields"},name:{tattach:"tattachments",scheduled:"scheduled"}},icons:{upload:{server:"fa fa-fw fa-download-cloud",attach:"fa2 fa2-attach"}}},notification:{danger:"exclamation-triangle",error:"exclamation-circle",success:"check-circle",type:{search:"search",scheduled:"clock",trash:"- fa2 fa2-trash"}},class:{events_none:"pointer-events-none"},template:{compose:e=>{let n,a=' class="'+e.class.hidden+'"',o=String(),l={server_file:o,abook:o,crypt:o,sign:o,dsn:o,del:o,menu:{server_file:o,encrypt:o,options:o}},r={server_file:e.toggle.more.server_file,crypt:e.toggle.more.crypt[0],sign:e.toggle.more.sign[0],abook:e.toggle.more.abook,dsn:e.toggle.more.dsn,del:e.toggle.more.del};return null===r.server_file&&(l.server_file=a),null===r.server_file&&(l.menu.server_file=a),null===r.crypt&&(l.crypt=a),null===r.sign&&(l.sign=a),null===r.crypt&&null===r.sign&&(l.menu.encrypt=a),null===r.abook&&(l.abook=a),null===r.dsn&&(l.dsn=a),null===r.del&&(l.del=a),null===r.abook&&null===r.dsn&&null===r.del&&(l.menu.options=a),n="basic"===e.toolbar_mode?`\n <span class="ql-formats">\n <button class="ql-bold"></button>\n <button class="ql-italic"></button>\n </span>\n <span class="ql-formats">\n <select class="ql-color"></select>\n </span>\n <span class="ql-formats">\n <button class="ql-blockquote"></button>\n </span>\n <span class="ql-formats ${e.class.hidden}">\n <button class="ql-link"></button>\n <button class="ql-image"></button>\n </span>\n `:"advanced"===e.toolbar_mode?`\n <span class="ql-formats">\n <select class="ql-font">\n <option value="initial" selected>${e.language._default}</option>\n <option value="monospace">${e.language._fixed_width}</option>\n </select>\n <select class="ql-size">\n <option value="0.75em">${e.language._font_size.small}</option>\n <option selected>${e.language._font_size.normal}</option>\n <option value="1.15em">${e.language._font_size.medium}</option>\n <option value="1.3em">${e.language._font_size.large}</option>\n </select>\n <select class="ql-header ql-paragraph">\n <option value="1">${e.language._heading} 1</option>\n <option value="2">${e.language._heading} 2</option>\n <option value="3">${e.language._heading} 3</option>\n <option value="4">${e.language._heading} 4</option>\n <option value="5">${e.language._heading} 5</option>\n <option value="6">${e.language._heading} 6</option>\n <option selected>${e.language._paragraph}</option>\n </select>\n </span>\n <span class="ql-formats">\n <button class="ql-bold"></button>\n <button class="ql-italic"></button>\n <button class="ql-underline"></button>\n </span>\n <span class="ql-formats">\n <select class="ql-color"></select>\n <select class="ql-background"></select>\n </span>\n <span class="ql-formats">\n <select class="ql-align"></select>\n </span>\n <span class="ql-formats">\n <span class="dropup">\n <button class="btn btn-default dropdown-toggle pd-0" type="button" id="extra-${e.id}" data-toggle="dropdown" aria-expanded="true">\n <span class="fa fa-lg fa-menu"></span>\n </button>\n <ul class="dropdown-menu pull-right" role="menu" aria-labelledby="extra-${e.id}">\n <li role="presentation">\n <button role="menuitem" tabindex="-1" class="ql-strike"></button>\n </li>\n <li role="presentation">\n <button role="menuitem" tabindex="-1" class="ql-blockquote"></button>\n </li>\n <li role="presentation">\n <button role="menuitem" tabindex="-1" class="ql-script" value="sub"></button>\n </li>\n <li role="presentation">\n <button role="menuitem" tabindex="-1" class="ql-script" value="super"></button>\n </li>\n <li role="presentation">\n <button role="menuitem" tabindex="-1" class="ql-list" value="ordered"></button>\n </li>\n <li role="presentation">\n <button role="menuitem" tabindex="-1" class="ql-list" value="bullet"></button>\n </li>\n <li role="presentation">\n <button role="menuitem" tabindex="-1" class="ql-indent" value="-1"></button>\n </li>\n <li role="presentation">\n <button role="menuitem" tabindex="-1" class="ql-indent" value="+1"></button>\n </li>\n <li role="presentation">\n <button role="menuitem" tabindex="-1" class="ql-code"></button>\n </li>\n <li role="presentation" class="${e.class.hidden}">\n <button role="menuitem" tabindex="-1" class="ql-link"></button>\n </li>\n <li role="presentation" class="${e.class.hidden}">\n <button role="menuitem" tabindex="-1" class="ql-image"></button>\n </li>\n <li role="presentation">\n <button role="menuitem" tabindex="-1" class="ql-direction" value="rtl"></button>\n </li>\n <li role="presentation">\n <button role="menuitem" tabindex="-1" class="ql-clean"></button>\n </li>\n </ul>\n </span>\n </span>\n `:`\n <span class="ql-formats">\n <select class="ql-font">\n <option value="initial" selected>${e.language._default}</option>\n <option value="monospace">${e.language._fixed_width}</option>\n </select>\n <select class="ql-size">\n <option value="0.75em">${e.language._font_size.small}</option>\n <option selected>${e.language._font_size.normal}</option>\n <option value="1.15em">${e.language._font_size.medium}</option>\n <option value="1.3em">${e.language._font_size.large}</option>\n </select>\n </span>\n <span class="ql-formats">\n <button class="ql-bold"></button>\n <button class="ql-italic"></button>\n <button class="ql-underline"></button>\n </span>\n <span class="ql-formats">\n <select class="ql-color"></select>\n <select class="ql-background"></select>\n </span>\n <span class="ql-formats">\n <select class="ql-align"></select>\n </span>\n <span class="ql-formats">\n <button class="ql-blockquote"></button>\n </span>\n <span class="ql-formats">\n <button class="ql-clean"></button>\n </span>\n <span class="ql-formats ${e.class.hidden}">\n <button class="ql-link"></button>\n <button class="ql-image"></button>\n </span>\n `,`\n <form class="compose" data-pjax="no" action="${e.prefix}/${e.target.send}?id=${e.id}" method="post" enctype="multipart/form-data" accept-charset="${e.charset}">\n <div class="form-e">\n <div class="${e.class.form.header}">\n <div class="form-group from">\n <div class="flex">\n <div class="col-xs-1">\n <label for="c-from-${e.id}">${e.language.real||e.language.from}</label>\n </div>\n <div class="col-xs-11">\n <span class="btn-group ${e.class.form.recipients.control}">\n <button type="button" class="btn btn-link btn-transparent-link btn-resized btn-link-bordered cc${e.toggle.recipients.cc}">Cc</button>\n <button type="button" class="btn btn-link btn-transparent-link btn-resized btn-link-bordered bcc${e.toggle.recipients.bcc}">Bcc</button>\n </span>\n ${"object"==typeof e.from?`<div class="input-group c-from-input-group">\n <input type="text" name="real" id="c-from-${e.id}" value="${e.from.name}" placeholder="${e.language._name}">\n <span class="ltgt"><</span><input type="text" name="user" value="${e.from.user}" placeholder="${e.language._username}">\n <span class="input-group-addon">@${e.from.dom}></span>\n <input type="hidden" name="dom" value="${e.from.dom}">\n </div>`:e.from}\n </div>\n </div>\n </div>\n <div class="form-group to">\n <div class="flex">\n <div class="col-xs-1">\n <label for="c-to-${e.id}">${e.language.to}</label>\n </div>\n <div class="col-xs-11">\n ${e.to}\n </div>\n </div>\n </div>\n <div class="${e.class.form.recipients.fields}">\n <div class="form-group cc${e.toggle.recipients.ccf}">\n <div class="flex">\n <div class="col-xs-1">\n <label for="c-cc-${e.id}">${e.language.cc}</label>\n </div>\n <div class="col-xs-11">\n ${e.cc}\n </div>\n </div>\n </div>\n <div class="form-group bcc${e.toggle.recipients.bccf}">\n <div class="flex">\n <div class="col-xs-1">\n <label for="c-bcc-${e.id}">${e.language.bcc}</label>\n </div>\n <div class="col-xs-11">\n ${e.bcc}\n </div>\n </div>\n </div>\n </div>\n <div class="form-group">\n <div class="flex">\n <div class="col-xs-1">\n <label for="c-subject-${e.id}">${e.language.subject}</label>\n </div>\n <div class="col-xs-11">\n ${e.subject}\n </div>\n </div>\n </div>\n <div class="form-group">\n <div class="flex attachments hidden">\n <div class="col-xs-1">\n <label for="c-attach-${e.id}">${e.language._attachments}</label>\n </div>\n <div class="col-xs-11">\n ${e.attachments}\n </div>\n </div>\n </div>\n </div>\n <div class="compose-controls-block">\n <div class="ql-compose-container">\n <textarea data-signature="${e.signature}" class="${e.status.text}" ${e.class.editor.composer}="text">\n\n\n${e.signature}</textarea>\n <div ${e.class.editor.composer}="html" class="ql-compose ql-container-toolbar-bottom ${e.status.html}">${e.body}</div>\n <div id="tb-${e.id}" data-mode="${e.toolbar_mode}">${n}</div>\n </div>\n <div class="btn-group ${e.class.editor.controls.compose}">\n <button type="submit" class="btn btn-primary btn-progress">\n <span>\n <span>${e.language._send}</span>\n <span>\n <span class="progressing"></span>\n </span>\n </span>\n </button>\n <button type="button" class="btn btn-primary dropdown-toggle ${e.status.module.schedule}" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\n <span class="fa fa-0_90x fa-clock"></span>\n </button>\n <ul class="dropdown-menu ${e.class.editor.scheduled} ${e.status.module.schedule}">\n <li><a>${t.create.checkbox(0,"scheduled",1)}${e.language._scheduled}</a></li>\n </ul>\n <button type="button" class="btn btn-link btn-transparent-link ${e.class.editor.controls.extra.attach}" data-title="${e.language._attach}"><i class="fa-fw fa2 fa2-attach fa-md"></i></button>\n <button type="button" class="btn btn-link btn-transparent-link ${e.class.editor.controls.extra.link} ${e.status.html}" ${e.class.editor.composer}-h data-title="${e.language._insert_link}"><i class="fa-fw fa2 fa2-link fa-1_25x"></i></button>\n <button type="button" class="btn btn-link btn-transparent-link ${e.class.editor.controls.extra.image} ${e.status.html}" ${e.class.editor.composer}-h data-title="${e.language._insert_picture}"><i class="fa fa-fw fa-md fa-image"></i></button>\n <button type="button" class="btn btn-link btn-transparent-link ${e.class.editor.controls.extra.html}" data-title="${e.language._toggle}"><i class="fa fa-fw fa-md fa-html"></i></button>\n </div>\n <div class="btn-group ${e.class.editor.controls.compose} pull-right">\n <span class="dropup ${e.class.editor.controls.more}">\n <button class="btn btn-link btn-transparent-link dropdown-toggle" type="button" id="${e.class.editor.controls.more}-${e.id}" data-toggle="dropdown" aria-expanded="true">\n <span class="fa fa-lg fa-dots-vertical"></span>\n </button>\n <ul class="dropdown-menu pull-right" role="menu" aria-labelledby="${e.class.editor.controls.more}-${e.id}">\n <li${l.server_file} role="presentation"><a data-value="server-attach"><i class="fa fa-fw fa-download-cloud"></i> ${e.language._server_attach}</a></li>\n <li${l.menu.server_file} class="divider"></li>\n <li${l.menu.encrypt} class="dropdown-submenu right" role="menu">\n <a tabindex="-1">${e.language._encrypt}</a>\n <ul class="dropdown-menu" role="menu" data-type="encrypt">\n <li data-encrypt-container>\n <div class="menu-group">\n <div${l.sign}>\n <label>${e.language.sign}</label>\n ${e.toggle.more.sign[1]}\n </div>\n <div${l.crypt}>\n <label>${e.language.crypt}</label>\n ${e.toggle.more.crypt[1]}\n </div>\n </div>\n </li>\n </ul>\n </li>\n <li class="dropdown-submenu right" role="menu">\n <a tabindex="-1">${e.language.pri.label}</a>\n <ul class="dropdown-menu" role="menu" data-type="priority">\n <li><a tabindex="-1" data-value="1">${e.language.pri.data[0]}</a></li>\n <li><a tabindex="-1" data-value="2">${e.language.pri.data[1]}</a></li>\n <li><a tabindex="-1"><i class="fa fa-fw fa-check pull-left"></i>${e.language.pri.data[2]}</a></li>\n <li><a tabindex="-1" data-value="4">${e.language.pri.data[3]}</a></li>\n <li><a tabindex="-1" data-value="5">${e.language.pri.data[4]}</a></li>\n </ul>\n </li>\n <li${l.menu.options} class="divider"></li>\n <li${l.menu.options} class="dropdown-submenu right" role="menu">\n <a tabindex="-1">${e.language._options}</a>\n <ul class="dropdown-menu" role="menu" data-type="options">\n <li${l.abook}><a tabindex="-1">${t.create.checkbox(0,"abook",1,0,r.abook)}${e.language._addrecipients}</a></li>\n <li${l.dsn}><a tabindex="-1">${t.create.checkbox(0,"dsn",1,r.dsn)}${e.language._notifications_dsn}</a></li>\n <li${l.del}><a tabindex="-1">${t.create.checkbox(0,"del",1,r.del)}${e.language._notifications_del}</a></li>\n </ul>\n </li>\n </ul>\n </span>\n <button type="button" class="btn btn-link btn-transparent-link ${e.class.editor.controls.extra.discard}" data-title="${e.language._discard}"><i class="fa fa2 fa-fw fa-sm fa2-trash"></i></button>\n </div>\n </div>\n </div>\n </form>\n `},html:{tags:{br:"<br>"}}}},create:{$:function(e,t,n="div",a=String(),o=String()){return o&&(o='data-tooltip="mailbox" data-placement="bottom" data-title="'+o+'"'),"<"+n+" "+this._attributes(t)+" "+o+' class="'+(e=this._classes(e))+'">'+a+"</"+n+">"},icon:function(e,t=String()){let n=this._attributes(t);return'<i class="fa '+this._classes(e)+" "+n+'"></i>'},button:function(e,t,n,a,o){return a=this._classes(a),this.$(e,t,"button",(a?'<i class="fa '+a+'"></i> ':"")+n,o)},input:function(e=String(),t=String(),n=String(),a="text",o=String()){let l=this._attributes(o),r=e;return"object"==typeof e&&(r=e[1],e=e[0]),"<input "+l+' type="'+a+'" name="'+e+'" id="'+r+'" placeholder="'+t+'" value="'+n+'">'},textarea:function(e=String(),t=String(),n=String(),a=String()){let o=this._attributes(a),l=e;return"object"==typeof e&&(l=e[1],e=e[0]),"<textarea "+o+' name="'+e+'" id="'+l+'" placeholder="'+t+'">'+n+"</textarea>"},label:function(e=String(),t=String(),n=String()){return"<label "+this._attributes(n)+' for="'+e+'">'+t+"</label>"},select:function(e,t=String(),n=String()){let a="<select "+this._attributes(t)+' name="'+n+'">';for(let[t,n]of Object.entries(e[0]))a+='<option value="'+t+'"'+(e[1]&&e[1]==t?" selected":String())+">"+n+"</option>";return a+="</select>",a},checkbox:function(e=String(),t=String(),n=String(),a=" ",o=String()){let l=this._attributes(e),r=String(),s=t+"-"+Math.floor(9e10*Math.random());return!a&&(a=" "),o&&(o="checked"),r+="<span "+l+' class="awcheckbox awobject">',r+='<input class="iawobject" '+o+' type="checkbox" name="'+t+'" value="'+n+'" id="'+s+'">',r+='<label class="lawobject" for="'+s+'">'+a+"</label>",r+="</span>",r},radio:function(e=String(),t=String(),n=String(),a=" ",o=String(),l=String()){let r=this._attributes(e),s=String();return s+="<span "+r+' class="awradio awobject">',s+='<input class="iawobject" '+l+' type="radio" name="'+t+'" value="'+n+'" id="'+o+'">',s+='<label class="lawobject" for="'+o+'">'+a+"</label>",s+="</span>",s},dropdown:function(e,n,a,o,l,r){let s=String();s+='<div class="btn-group '+(e=this._classes(e))+'">',a&&(/<[a-z][\s\S]*>/i.test(a)?s+=this.$("layout.button.default",!1,"span",a):s+=this.button("layout.button.default",!1,a)),s+=this.button("layout.button.dropdown.default",{toggle:"dropdown"},'<span class="'+(o?"fa "+t.$.controls[o].icon:"caret")+'"></span>',!1,l),s+='<ul class="dropdown-menu" role="menu">';for(let[e,t]of n[0].entries())t&&(s+="<li>"+t+"</li>"),n[e-1]&&n[1]&&n[1]===e+1&&n[0].length>n[1]&&(s+='<li role="separator" class="divider"></li>');return s+="</ul>",s+="</div>","function"==typeof r&&(s=r(s)),n[0].length?s:String()},_attributes:function(e){let t=String();return Array.isArray(e)?t=e.join(" "):e&&(t=Object.entries(e).map(([e,n])=>t+=(e.startsWith("data-")?e:"data-"+e)+"="+n+" ").slice(-1)[0]),t},_classes:function(e){return e?e.split(".").reduce((e,t)=>e?e[t]:void 0,t.$):String()}},selector:function(e){return(e=this.create._classes(e)).startsWith("[")?e:"."+e.replace(/\s+/g,".")},element:function(e){return e?$(this.selector(e)):String()}},n={d:{},set:function(e){this.d=e}},a={loaded:!1,get:function(t){if("object"!=typeof t||"object"==typeof t&&t.d&&!t.d.u)return;this.loaded=!0;let n=["jquery.jspanel","quill:min"];"advanced"===t.d.u.html_edit_mode&&(n=e.plugin.arr_prepend("highlight/highlight:min",n)),e.load.bundle(n,1)}},o=function(){let o={send:"send_mail.cgi",reply:"reply_mail.cgi"};!a.loaded&&a.get(n);return{message:(a=!1,l=!1,s={})=>{let i=e.path.prefix,c=`${i}/${e.variable.module.name()}`;o.getSize=`${i}/xhr.cgi?xhr-get_size=1&xhr-get_size_nodir=1&xhr-get_size_path=`,o.delete=`${c}/delete_mail.cgi?confirm=1&delete=1&noredirect=1`,o.schedule=`${i}/schedule/save.cgi`,o.addressBook=`${c}/export.cgi?fmt=csv&dup=0&incgr=1`,"object"==typeof a&&a.length?(a=$(a).serialize()+"&reply=1",s.new=0):(a="new=1",s.new=1),s.reply_all?a+="&rall=1":s.forward&&(a+="&forward=1"),fetch(`${c}/${o.reply}?${a}`,e.fetch.options).then(e=>e.text()).then(a=>{let i=$(a).find(`[action*="${o.send}"]`),d=()=>Math.floor(9e14*Math.random()),u=(()=>100*e.plugin.dayjs().valueOf())(),p=(i.find(":checkbox:not(:checked)").attr("value","0").prop("checked",!0).map(function(){return this.name}).get(),i.serialize()),m=$(a).find('textarea[name="body"]'),f=m.data("html-mode"),g=$.trim(e.plugin.quote_escape(m.text()));if(2==n.d.u.html_edit&&g&&(g=`${t.$.template.html.tags.br.repeat(2)+g}`),p){p=e.plugin.serialized_to_json(p);let a={visible:{},hidden:{}},m=t.$.compose,h={recipients:(e,t,n)=>{if("object"==typeof t){let n=t[0],a=t[1],o=`.${m.form.recipients.control}`,l=`.${m.form.recipients.fields}`,r=n.querySelector(o),s=n.querySelector(l);return r.querySelector(`.${e}`).classList.toggle(m.button.inverse,!a),void s.querySelector(`.${e}`).classList.toggle(m.hidden,a)}return"rc"===t?n[e]?` ${m.button.inverse}`:String():"rf"===t?n[e]?String():` ${m.hidden}`:void 0},attachments:e=>{let t=e.querySelector(`[name="${m.form.name.tattach}"]`),n=t.previousSibling.querySelectorAll(".tag").length;t.parentNode.parentNode.classList.toggle(m.hidden,!n),b.contenteditable(e)},backdrop:(e,t)=>{let n=$("body"),a=m.panel.backdrop;t?(e[0].dataset.zIndex=e[0].style.zIndex,e[0].style.zIndex=1e5,e[0].setAttribute("maximized",1),n.append(`<div class="modal-backdrop fade2 in zi-99999 ${a}"></div>`)):(e[0]&&(e[0].style.zIndex=e[0].dataset.zIndex,e[0].removeAttribute("maximized"),delete e[0].dataset.zIndex),n.find(`.modal-backdrop.${a}`).remove())},formatting:(e,t)=>{let n=m.editor.composer,a=e.querySelectorAll(`[${n}-h]`),o=e.querySelectorAll(`[${n}]`);a.forEach(e=>{e.classList.toggle(m.hidden,!t)}),o.forEach(e=>{"text"===e.getAttribute(n)?e.classList.toggle(m.hidden,t):e.classList.toggle(m.hidden,!t)}),b.contenteditable(e)}},b={contenteditable:e=>{let t=e.querySelector(`.${m.panel.content}`),n=(t?t.offsetHeight:window.innerHeight/4)-e.querySelector(`.${m.form.header}`).offsetHeight-(50+e.querySelector(`.${m.editor.toolbar}`).offsetHeight)+"px";e.querySelector(`[${m.editor.composer}]:not(.${m.hidden})`).style.height=n}},_={field:(e,t)=>{let n=t[e];return n&&!isNaN(n)&&(n=~~n),void 0===n?null:n}},v={input:(n,a,o=!1,l=!1,r="text")=>{let s="object"==typeof a?a[n]:a;return o&&(o=["readonly"]),l||(s=e.plugin.html_escape(s)),t.create.input([n,`c-${n}-${u}`],String(),s,r,o)},select:{},type:{time:()=>{let e=new Date,t=e=>("0"+e).substr(-2);return`<input type="time" name="time" step="300" value="${t(e.getHours())}:${(e=>{let t=10*Math.ceil(e/10);return 60===t?t-5:t})(t(e.getMinutes()))}">`},date:()=>{let e=new Date;return`<input type="text" name="date" data-value="${e.getFullYear()}-${e.getMonth()+1}-${e.getDate()}">`}},composer:function(n){let l=n,s=!!l.header,i={allowed:parseInt(a.hidden.html_edit),initial:parseInt(a.hidden.html_edit_config)},c=Quill.import("attributors/style/size"),p=Quill.import("attributors/style/font");c.whitelist=["0.75em","1.15em","1.3em"],Quill.register(c,!0),p.whitelist=["monospace"],Quill.register(p,!0);let f=(n=n[0]).querySelector(`.${m.form.header}`),g=n.querySelectorAll(`.${m.editor.controls.compose}`),_=n.querySelector(`.${m.form.recipients.control}`),k=n.querySelector(`.${m.editor.compose}`),x=n.querySelector(`[${m.editor.composer}="text"]`),w={this:new Quill(k,{modules:{syntax:"object"==typeof hljs,imageDrop:!0,imageResize:{modules:["DisplaySize","Resize"]},clipboard:{matchVisual:!1},toolbar:n.querySelector(`#tb-${u}`)},bounds:n,theme:"snow"}),get:{text:()=>x.value,html:()=>w.this.root.innerHTML,data:()=>i.allowed?w.get.html():w.get.text()},convert:()=>{let e=w.this,t=e.root.parentElement.previousElementSibling;i.allowed?e.setText(t.value):t.value=e.getText()},maximized:()=>n.hasAttribute("maximized")},q=function(t){let n=f.querySelector('[name="subject"]'),a=()=>{n.dispatchEvent(new Event("input"))},o=(e,t)=>{s&&(e.style.opacity=t?.7:1)};if(s){let s=l.header.title[0],i=s.textContent;t?(r=s,1===t?(r.textContent=e.lang("mail_composer_draft_saving"),o(r,!0)):-1===t&&(r.textContent=e.lang("mail_composer_draft_saved"),o(r,!0),setTimeout(()=>{o(r),a()},2e3))):(n.addEventListener("input",function(){s.textContent=this.value||i}),a())}var r};s&&n.classList.add(m.panel.container,m.panel.container_shown),b.contenteditable(n),q();let S=g[0].querySelector(`.${m.editor.controls.extra.html}`);S.addEventListener("click",()=>{let t=parseInt(i.allowed)||0,a=parseInt(i.initial)||0,o=+!t,l=o?2:1===a?1:0;var r,s;h.formatting(n,o),i.allowed=o,r="html_edit",s=l,e.update_mdata("/uconfig.cgi?mailbox","/uconfig_save.cgi",{[r]:s}),w.convert()});let j=n.querySelector('input[name="from"]:not(disabled)'),E=n.querySelector('input[name="real"]'),z=n.querySelector('input[name="user"]');E&&z&&($.fn.eW=function(e,t){return $.fn.eW.fakeEl||($.fn.eW.fakeEl=$("<span data-eW>").hide().appendTo(document.body)),$.fn.eW.fakeEl.text(e||this.val()||this.text()||this.attr("placeholder")).css("font",t||this.css("font")),$.fn.eW.fakeEl.width()+7},[E,z].forEach((e,t)=>{e.addEventListener("input",function(){$(this).css({width:parseInt($(this).eW()+(!t&&3))})}),e.dispatchEvent(new Event("input"))}));let C=j||E;C&&(C.focus(),C.setSelectionRange(-1,-1)),setTimeout(()=>{let c=w.this.options.modules.toolbar.container,p=[],k=[],j=null,E=null,z=n.querySelector(`[name="${m.form.name.tattach}"]`),C=(n.querySelector(`.${m.editor.content}`),g[0].querySelector(`.${m.editor.controls.extra.attach}`)),L=g[0].querySelector(`.${m.editor.controls.extra.link}`),T=g[0].querySelector(`.${m.editor.controls.extra.image}`),A=g[1].querySelector(`.${m.editor.controls.extra.discard}`),I=n.querySelector('button[type="submit"]'),M=n.querySelector('input[name="to"]'),O=n.querySelector('input[name="cc"]'),H=n.querySelector('input[name="bcc"]'),D=$(n).find(`.${m.editor.controls.more}`),K={target:n.querySelector(`[name="${m.form.name.scheduled}"]`),container:n.querySelector(`.${m.editor.scheduled}`),events:function(){this.container.addEventListener("click",e=>{e.stopPropagation()}),this.checkbox().addEventListener("click",function(){let t=I,n=t.querySelector("span").querySelector("span"),a=e.lang("mail_composer_schedule"),o=this.checked,l=m.button.submit,r=m.button.schedule,s=t.nextElementSibling,i=y._send;t.classList.toggle(r,o),t.classList.toggle(l,!o),s.classList.toggle(r,o),s.classList.toggle(l,!o),n.textContent=o?a:i}),this.datepicker()},status:function(){return this.target.checked},checkbox:function(){return this.container.querySelector('[type="checkbox"]')},holder:function(){return this.container.querySelector("[data-t]")},datepicker:function(){let t=this.holder(),n=t.previousSibling;t.addEventListener("click",function(){$(n).datepicker("show")}),$(n).datepicker({language:e.sdata("language"),todayHighlight:!0,autoclose:!0,startDate:"0d"}).on("changeDate",function(n){let a=e.lang("global_today").toLowerCase(),o=e.lang("global_tomorrow").toLowerCase(),l=a,r=new Date,s=r.getFullYear(),i=r.getMonth()+1,c=r.getDate(),d=n.date.getFullYear(),u=n.date.getMonth()+1,p=n.date.getDate(),m=n.dates[0],f=d+"-"+u+"-"+p,g=dayjs(m).format(e.variable.locale.short);this.dataset.value=f,s!==d||i!==u||c!==p&&c+1!==p?l=g:c+1===p&&(l=o),t.textContent=l})}},R={timeout:{update:null,discard:null},data:[],reset:function(){let e=this.data[0];this.data=[],e&&this.data.push(e)},test:function(){return this.data.length>=1},save:function(){this.terminate(),this.timeout.update=setTimeout(()=>{I.dispatchEvent(new Event("click"))},2e3)},terminate:function(){"number"==typeof this.timeout.update&&clearTimeout(this.timeout.update)},purge:function(t,n,a){fetch(`${o.delete}&id=${t}&folder=${n}&d=${a}`,e.fetch.options).then(e=>{e.text().then(()=>{R.refresh()})})},refresh:function(){this.test()&&r.check(this.data[0])&&r.refresh()},clean:function(){this.test()&&this.purge(this.data[0],this.data[1],this.data[3]),this.reset(),this.terminate()},control:{discard:function(){w.maximized()&&l.normalize(),R.timeout.discard=setTimeout(()=>{R.test()&&R.purge(R.data[0],R.data[1],R.data[3]),R.reset(),R.terminate(),s&&l.close()},5e3)},undo:function(){n.classList.remove(m.hidden),"number"==typeof R.timeout.discard&&clearTimeout(R.timeout.discard)}}},P=(t,a,o,l,r)=>{let s="server"===t?m.icons.upload.server:m.icons.upload.attach,i=o.name.split("/").pop()||o.name;$(z).tagsinput("add",`[i class="${s}"][/i]${i} [em](${e.plugin.nice_size(l)})[/em]`);let c=z.previousSibling.querySelectorAll(".tag");c[c.length-1].dataset.reference=a,"server"===t?k[a]=o.name:p[a]=o.file,r&&(b.contenteditable(n),h.attachments(n))};w.this.keyboard.addBinding({key:"7",shiftKey:!0,ctrlKey:!e.platform.mac,metaKey:e.platform.mac},function(e,t){"ordered"===this.quill.getFormat(e.index).list?this.quill.format("list",!1):this.quill.format("list","ordered")}),w.this.keyboard.addBinding({key:"8",shiftKey:!0,ctrlKey:!e.platform.mac,metaKey:e.platform.mac},function(e,t){"bullet"===this.quill.getFormat(e.index).list?this.quill.format("list",!1):this.quill.format("list","bullet")}),w.this.keyboard.addBinding({key:"9",shiftKey:!0,ctrlKey:!e.platform.mac,metaKey:e.platform.mac},function(e,t){this.quill.getFormat(e.index).blockquote?this.quill.format("blockquote",!1):this.quill.format("blockquote",!0)}),L.addEventListener("click",()=>{c.querySelector(`.${m.editor.tb_link}`).dispatchEvent(new Event("click"))}),T.addEventListener("click",()=>{c.querySelector(`.${m.editor.tb_image}`).dispatchEvent(new Event("click"))}),A.addEventListener("click",()=>{R.control.discard();let a={cancel:{label:e.lang("global_undo"),action:function(){R.control.undo()}}};e.notification.post([t.$.notification.type.trash,e.lang("mail_composer_discarded_draft")],10,"warning",`discard-${u}`,1,["bottom","center"],a),n.classList.add(m.hidden)}),_.querySelectorAll("button").forEach(e=>{e.addEventListener("click",()=>{let t=e.classList.contains(m.button.inverse),a=e.classList.contains("bcc")?"bcc":"cc";h.recipients(a,[n,t]),b.contenteditable(n)})}),C.addEventListener("click",()=>{let e=n.querySelector("form"),t=document.createElement("input");t.type="file",t.setAttribute("multiple",1),t.classList.add(m.hidden),t=e.appendChild(t),t.click(),t.addEventListener("change",function(){Array.from(this.files).forEach((e,n,a)=>{let o=d()+n,l=e.size,r=e.name,s=n===a.length-1;P("upload",o,{name:r,file:e},l,s),s&&t.remove()})})}),D.find(".dropdown-menu").on("click.bs.dropdown",function(n){let a=this.dataset.type,l=n.target,r=l.dataset.value;if("server-attach"===r){let n={read:e.lang("mail_composer_server_attach_error_read"),dir:e.lang("mail_composer_server_attach_error_dir")};return void e.file_chooser({file:E}).then(a=>{if(a){let l=d();fetch(o.getSize+a,e.fetch.options).then(o=>{o.text().then(o=>{let r=o.split("|")[1].replace(/\s+/g,String());if(-1==r||-2==r){let a=-1==r?n.read:n.dir;e.notification.post([t.$.notification.danger,a],10,"error",0,1,["bottom","center"])}else P("server",l,{name:a},r,!0)})})}E=a})}if(n.stopPropagation(),"priority"===a){let e=l.closest("ul").querySelector("i");e.remove(),l.appendChild(e),j=r?~~r:null}if("options"===a){let e=l.querySelector('input[type="checkbox"]');e&&(e.checked^=1)}}),$(z).tagsinput({allowDuplicates:!0,confirmKeys:[13],delimiter:"\\000"}),$(z).on("itemRemoved",e=>{let t=e.item[1];t&&(delete p[t],delete k[t]),h.attachments(n)}),e.plugin.tooltip($(C).add(T).add(C).add(L).add(S).add(A)),e.plugin.quill_toolip($(w.this.root).parent().parent()[0]),f.addEventListener("input",function(){R.save()}),f.querySelectorAll("input").forEach(e=>{e.addEventListener("keydown",e=>{13!==e.keyCode?R.save():e.preventDefault()})}),w.this.on("text-change",function(){R.save()}),x.addEventListener("input",function(){R.save()}),K.events(),fetch(o.addressBook,e.fetch.options).then(function(e){return e.text()}).then(function(t){[M,O,H].forEach(a=>{let o=$(a).tagsinput({confirmKeys:[13,32],addOnBlur:!1,cancelConfirmKeysOnEmpty:!1,tagClass:"label recipient"}),l=e.lang("theme_xhred_global_alias"),r=t.match(/"(.*)","(.*)"/gm);if(r){let e=[];r.map(function(t){let n=t.match(/"-","(.*)"/),a=t.match(/"(.*)","(.*)"/);n?e.push(l+" <"+a[2]+">"):a&&e.push(a[2]+" <"+a[1]+">")}),!$.isEmptyObject(e)&&o[0].$input.autocomplete({lookup:e,autoSelectFirst:!0,position:"relative",appendTo:o[0].$container,onSelect:function(e){$(a).tagsinput("add",e.value),this.value=String()}})}$(a).on("itemAdded itemRemoved",function(e){let t,a=e.item;a&&(t=a.match(/<(.*)>/),t&&(a=t[1]),e.item.startsWith(l)||"itemAdded"!==e.type||/.+@.+\..+/.test(a)||$(e.target.previousSibling).find(".recipient").last().addClass("error")),b.contenteditable(n)}),o[0].$input.on("keydown blur",function(t){let a=this.value;(9===t.keyCode||"blur"===t.type&&t.relatedTarget)&&($(this).trigger(e.event.generate("keypress",32)),b.contenteditable(n),a&&t.preventDefault())})})}),I.addEventListener("click",function(n){n.preventDefault();let r=this.closest("form"),c=new FormData(r),d=n.isTrusted||~~I.dataset.isTrusted,u=!d;this.dataset.isTrusted=0,d&&R.terminate(),c.append("body",w.get.data());j?c.set("pri",j):c.delete("pri"),Object.entries(a.hidden).forEach(e=>{let t=e[0],n=e[1];c.has(t)||c.set(t,n)});let m=Object.values(p);m.length&&m.forEach((e,t)=>{c.set(`attach${t}`,e)});let f=Object.values(k);f.length&&f.forEach((e,t)=>{c.set(`file${t}`,e)}),c.set("html_edit",i.allowed),c.set("spell",0),u&&(c.set("new",0),c.set("enew",1),c.set("save",1),q(1));let g={date:{get:function(e){let t=this.value,n=K.container.querySelector('[name="date"]');return n&&(t=n.dataset.value.split("-")),"y"===e?~~t[0]:"m"===e?~~t[1]:~~t[2]}},time:{value:K.container.querySelector('[type="time"]').value,get:function(e){let t=["12","00"];return this.value&&(t=this.value.split(":")),"h"===e?~~t[0]:~~t[1]}}};if(K.status()&&!u){let e={body:"mail",is_html:i.allowed,delete_after:1,enabled:1,status:1,mode:1,hour:g.time.get("h"),min:g.time.get("m"),day:g.date.get("d"),month:g.date.get("m"),year:g.date.get("y")};Object.entries(e).forEach(function(e,t){t?c.set(e[0],e[1]):(c.set(e[1],c.get(e[0])),c.delete(e[0]))})}let h=new XMLHttpRequest,b=K.status()&&!u?o.schedule:r.getAttribute("action");h.open("POST",b),h.setRequestHeader("x-requested-with","XMLHttpRequest"),h.upload.onprogress=t=>{!u&&(e.button.progress(this,Math.ceil(t.loaded/t.total*100)),e.button.lock(this,!0))},h.onload=n=>{let a=n.target.responseText,o=String(),i=String(),c=!1,d=new DOMParser,p=function(t){return e.uri_param(t,n.target.responseURL)},m={id:p("id"),folder:{index:p("folder"),type:p("folder_type"),id:p("folder_id")},input:{id:r.querySelector('[name="id"]'),folder:r.querySelector('[name="folder"]')}};u?(q(-1),R.data=[m.folder.id,m.folder.index,m.input.id&&m.input.id.value,m.id],(2==m.folder.type||4==m.folder.type)&&m.input.id?R.purge.apply(null,R.data):R.refresh(),m.input.id&&m.input.id.remove(),m.input.folder&&m.input.folder.remove(),r.insertAdjacentHTML("beforeend",v.input("id",m.id,!1,!1,"hidden")),r.insertAdjacentHTML("beforeend",v.input("folder",m.folder.index,!1,!1,"hidden"))):(a=d.parseFromString(a,"text/html"),a&&(a=a.querySelector(".panel-body"),c=a.querySelector("h3"),c?(i=c.innerHTML.replace(/\s:/,": "),e.error_quota(c.innerHTML)||e.notification.post([t.$.notification.danger,i],10,"error",0,1,["bottom","center"]),e.button.progress(this,0),e.button.lock(this,!1)):(o=a.innerHTML,e.notification.post([K.status()?t.$.notification.type.scheduled:t.$.notification.success,o],10,"success",0,1,["bottom","center"]),s&&l.close(),R.clean())))},h.onerror=t=>{e.button.progress(this,0),e.button.lock(this,!1),e.error({responseText:t.target.responseText,status:h.status,readyState:h.readyState,_errConnectionReset:0===h.status},1)},h.send(c)}),n.addEventListener("keydown",t=>{let n=e.platform.mac?t.metaKey:t.ctrlKey,a=13===t.keyCode;n&&a&&(I.dataset.isTrusted=1,I.dispatchEvent(new Event("click")))})},300)}},y={},k={};Object.entries(p).filter(e=>{["from","real","to","cc","bcc","subject","body"].includes(e[0])?a.visible[e[0]]=e[1]:a.hidden[e[0]]=e[1]}),Object.entries(a.visible).forEach(e=>{let t=e[0];y[t]=i.find(`[name=${t}]`).parent().prev().text()}),Object.entries(a.hidden).forEach(function(e){let t=e[0];if(["crypt","sign"].includes(t))y[t]=i.find(`[name=${t}]`).parent().prev().text();else if(["pri"].includes(t)){let e={};i.find(`[name=${t}] option`).map(function(t){e[t]=this.innerText}),y[t]={label:i.find(`[name=${t}]`).parent().prev().text(),data:e}}}),y._attachments=e.lang("global_attachments"),y._send=e.lang("mail_composer_send"),y._scheduled=e.lang("mail_composer_scheduled").replace(/%1/,`<span data-i>${v.type.date()}<span data-t>${e.lang("global_today").toLowerCase()}</span></span>`).replace(/%2/,v.type.time()),y._attach=e.lang("mail_composer_attach"),y._insert_link=e.plugin.setup_modifier(e.lang("editor_tb_link").replace("%cmd",e.platform.mac?"Meta":"Ctrl")),y._insert_picture=e.lang("editor_tb_image"),y._toggle=e.lang("mail_composer_toggle"),y._discard=e.lang("mail_composer_discard"),y._server_attach=e.lang("mail_composer_server_attach"),y._notifications=e.lang("global_notifications"),y._notifications_dsn=e.lang("mail_composer_notifications_dsn"),y._notifications_del=e.lang("mail_composer_notifications_del"),y._encrypt=e.lang("global_encrypt"),y._options=e.lang("global_options"),y._addrecipients=e.lang("mail_composer_addrecipients"),y._default=e.lang("global_default"),y._fixed_width=e.lang("editor_tb_font_fixed_width"),y._name=e.lang("mail_composer_real_name"),y._username=e.lang("mail_composer_username"),y._paragraph=e.lang("global_paragraph"),y._heading=e.lang("global_heading"),y._font_size={small:e.lang("global_small"),normal:e.lang("global_normal"),medium:e.lang("global_medium"),large:e.lang("global_large")};let x,w=i[0].querySelector('input[name="real"]'),q=i[0].querySelector('input[name="user"]'),S=i[0].querySelector('input[name="dom"]');if(S&&(x={name:w.value,user:q.value,dom:S.value}),v.select.from=i[0].querySelector('select[name="from"]'),v.select.sign=i[0].querySelector('select[name="sign"]'),v.select.crypt=i[0].querySelector('select[name="crypt"]'),v.select.from&&(v.select.from=v.select.from.outerHTML),v.select.sign&&(v.select.sign=v.select.sign.outerHTML),v.select.crypt&&(v.select.crypt=v.select.crypt.outerHTML),k.form=t.$.template.compose({prefix:c,target:{send:o.send},charset:a.hidden.charset,id:u,class:m,language:y,status:{text:~~a.hidden.html_edit?m.hidden:String(),html:~~a.hidden.html_edit?String():m.hidden,module:{schedule:e.mavailable("schedule")?String():m.hidden}},toggle:{recipients:{cc:h.recipients("cc","rc",a.visible),bcc:h.recipients("bcc","rc",a.visible),ccf:h.recipients("cc","rf",a.visible),bccf:h.recipients("bcc","rf",a.visible)},more:{server_file:_.field("file0",a.hidden),abook:_.field("abook",a.hidden),dsn:_.field("dsn",a.hidden),del:_.field("del",a.hidden),sign:[_.field("sign",a.hidden),v.select.sign],crypt:[_.field("crypt",a.hidden),v.select.crypt],pri:_.field("pri",a.hidden)}},from:x||v.select.from||v.input("from",a.visible,!~~n.d.g.edit_from),to:v.input("to",a.visible),cc:v.input("cc",a.visible),bcc:v.input("bcc",a.visible),subject:v.input("subject",a.visible),attachments:v.input(m.form.name.tattach,a.visible,!1,!0),body:1==s.new?g:a.visible.body,signature:g,toolbar_mode:f}),l){let e=l.append(k.form);v.composer(e)}else{let t=$(`.${m.panel.container} .${m.editor.compose}`).length,n=window.innerWidth,a=n<640,o=window.innerHeight,l=a||o<640,r=-15,s=t?5*r*t:r,i=l?{}:{my:"right-bottom",at:"right-bottom",offsetX:s,offsetY:s};$.jsPanel({position:i,theme:"#eaeaea",onwindowresize:!0,panelSize:{width:l?n+4*r:600,height:l?o+4*r:600},headerTitle:e.lang("mail_new_message"),content:k.form,maximizedMargin:{top:l?-1*r:.03*o,bottom:l?-1*r:.03*o,left:l?-1*r:.1*o,right:l?-1*r:.1*o},footerToolbar:function(){},dblclicks:{title:"maximize"},onminimized:function(){h.backdrop(this)},onclosed:function(){h.backdrop(this)},onnormalized:function(){b.contenteditable(this[0]),h.backdrop(this)},onmaximized:function(){b.contenteditable(this[0]),h.backdrop(this,1)},callback:function(){v.composer(this),l&&this.maximize()}}).header.title.addClass("plain")}}})}}}(),l=function(){const s={state:!1,initial:!0,abort:function(){!0===this.pending()&&!1===this.initial&&this.state.abort()},pending:function(){return"function"==typeof this.state.state&&"pending"===this.state.state()}},i={target:t.selector("tree.active"),start:function(){$(this.target).addClass(t.$.tree.loader)},end:function(){$(this.target).removeClass(t.$.tree.loader)}},c={target:"["+t.$.tree.container+"]",counter:t.selector("controls.counter"),get:function(e=0){let t=$(this.target).data("messages")||{};return e||(t=Object.keys(t)),t},set:function(n,a,o,l,r){let s=this.get(1);a?s[n]=[+o,+l]:delete s[n],$(this.target).data("messages",s);let i=Object.keys(s).length;$(this.counter).text((i?i+" "+e.lang("global_selected"):String()).toLowerCase());let c=t.selector("layout.controls");$(c).toggleClass("hidden",!i)},restore:function(){let e=this.get(),n=t.$.messages.checkbox;$(n).filter((t,n)=>{e.includes(n.value)&&$(n).prop("checked",1)}).promise().done(function(){$(n).trigger("change")})},reset:function(){let e=t.$.messages.checkbox;$(this.target).data("messages",{}),$(e+":checked").prop("checked",0).trigger("change")}},d={action:function(e,t=!1){return e=parseInt(e.replace(/^\D+/g,"")),t?e?"read":"unread":e},set:function(e,n){$(t.$.messages.checkbox).filter((e,t)=>n.includes(t.value)).parent().parents("td").parents("tr").attr("data-unread",+!this.action(e))},write:function(t,n=!1){let a=t[1].searched_folder_index||t[1].folder_index;if(n){let o=this.action(t[0],1);n=`&d=${n.join("&d=")}`,$.post(e.path.extensions+"/mail/message.cgi?folder="+a+"&mark="+o+n)}else{let n=this.action(t[0],1),o=t[1],l=c.get(1),r={read:[],unread:[]};$.each(l,function(e,t){1===t[1]&&(1===t[0]?r.unread.push(e):r.read.push(e),delete l[e])}),p(o,{[t[0]]:1},Object.keys(l),0,1);let s=e.path.extensions+"/mail/message.cgi?folder="+a+"&mark=starred&state="+n;r.read.length&&$.post(s+`&d=${r.read.join("&d=")}`),r.unread.length&&$.post(s+""+`&d=${r.unread.join("&d=")}`)}}},u=n=>{let a={compose:t.$.controls.compose.button,search:t.element("controls.search.dropdown"),refresh:t.element("controls.refresh.button"),delete:t.element("controls.delete"),forward:t.element("controls.forward"),special:{star:t.selector("messages.special.star"),starred:t.selector("messages.special.starred"),unstarred:t.selector("messages.special.unstarred")}},i={mark:{read:t.element("controls.more.menu.read"),unread:t.element("controls.more.menu.unread"),special:t.element("controls.more.menu.special"),spam:t.element("controls.more.menu.spam"),ham:t.element("controls.more.menu.ham"),black:t.element("controls.more.menu.black"),white:t.element("controls.more.menu.white")},select:t.selector("controls.select.dropdown"),move:t.element("controls.move.dropdown"),search:t.element("controls.search.dropdown")},u=$(t.$.controls.select.checkbox),m=t.$.messages.checkbox,f=t.selector("messages.flag"),g="click",h="change",b="keyup",_="shown.bs.dropdown";u.off(h).on(h,function(){let e=$(this).is(":checked");$(m).prop("checked",e).trigger(h)}).parent().parent().off(g).on(g,function(e){let t=$(this).find("input");!$(e.target).is(t)&&t.prop("checked",!t.is(":checked")).trigger(h)}),$(f).off(g).on(g,function(e){e.stopPropagation()}),$(i.select).find(t.$.controls.select.menus).off(g).on(g,function(e){let t=$(e.target).data("type"),n=$(m),a=h,o="checked";5===t||4===t?n.prop(o,1&t).trigger(a):3===t?n.prop(o,function(){return!this.checked}).trigger(a):2===t||1===t?n.prop(o,function(){return+$(this).parents("tr").attr("data-unread")===(1&t)}).trigger(a):0===t&&n.prop(o,function(){return+$(this).parents("tr").attr("data-starred")===+!(1&t)}).trigger(a)}),$(m).off(h).on(h,function(){let e=$(this),t=e.parents("td").parent("tr"),a=e.is(":checked"),o=e.val(),l=m+":checked",r=t.attr("data-unread"),s=t.attr("data-starred");c.set(o,a,r,s,n),$(l).length===$(m).length?u.prop("checked",1):u.prop("checked",0)}),a.delete.off(g).on(g,function(){p(n,{delete:1},c.get(),1,1)});let v=i.move.find("select");v.find("option").map((e,t)=>{t.value<=-1&&t.remove()}),e.plugin.select(v),v.on(h,function(){setTimeout(()=>{$(t.$.controls.move.submit).toggleClass("disabled",!this.value).trigger("focus")})}),i.move.find("li").off(g).on(g,function(a){a.stopPropagation();let o=$(a.target),l=$(t.$.controls.move.submit),r=$(t.$.controls.move.checkbox),s=r.is(":checked");if(o.is(r)&&l.text(s?e.lang("global_copy"):e.lang("global_move")),o.is("button:not(.disabled)")){let e=s,t=parseInt(v.val());p(n,{[(e?"copy":"move")+"1"]:1,mfolder1:t},c.get(),+!e||(n.searched_folder_index||n.folder_index)===t,1),i.move.removeClass("open")}}),i.move.off(_).on(_,function(){e.plugin.select([v,"open"])}),a.forward.off(g).on(g,function(){const t=`&mailforward=${c.get().map(function(e){return encodeURIComponent(e)}).join("&mailforward=")}`,n=e.path.origin+e.path.prefix+"/mailbox/reply_mail.cgi?folder=",a=JSON.parse(s.state.responseText)[0];e.pjax.fetch(n+a.folder_index+t)});let y=i.search.find("select"),k=i.search.find("[data-search-mail]"),x=i.search.find('[name="search-wordsin"]');n&&y.length&&(y[0].value=n.searched_folder_index||n.folder_index),e.plugin.select(y),a.search.find("li").off(g+" "+b).on(g+" "+b,function(n){n.stopPropagation();let o=$(n.target),r=i.search.find("["+t.$.controls.search.data.form.advanced+"]"),s=()=>"none"===window.getComputedStyle(r[0]).display;if(27!==n.keyCode){if((32===n.keyCode||9===n.keyCode||13===n.keyCode||"click"===n.type)&&o.is($(t.selector("controls.search.caret.down")).add(t.selector("controls.search.button.type")))){return(o.is("i")?o:o.find("i")).toggleClass(t.$.controls.search.caret.up),r.toggleClass("show"),k[0].disabled=!s(),(s()?k:r[0].querySelector("input")).focus(),void(s()?(k.val(x.val()),x.val(String())):(x.val(k.val()),k.val(String())))}if("keyup"===n.type&&13===n.keyCode&&o.is('[type="text"], [type="number"]')||"click"===n.type&&o.is("button:not(.disabled)")){let t={folder:parseInt(y[0].value),search:k[0].value};if(s())t.search&&$.post(e.path.prefix+"/"+e.variable.module.name()+"/mail_search.cgi?returned_format=json&json-error=1&simple=1&"+e.plugin.json_to_query(t),function(e){l.get(e)});else{let n=r.find('input[type="text"]').filter((e,t)=>t.value),a=r.find('input[name="status"]'),o=r.find('input[name^="limit"]'),s=r.find('input[name="attach"]'),i={all:1,dest_def:1};i.folder=t.folder;for(let e=0;e<n.length;e++){let t=n[e].value,a=n[e].name.includes("words"),o=n[e].name.replace("search-",String());t&&(i["what_"+e]=t,a?(i["field_"+e]="all",i["neg_"+e]=~~n[e].name.includes("out")):(i["field_"+e]=o,i["neg_"+e]=0))}i.status_def=0;for(let e=0;e<a.length;e++){let t=a[e],n=t.value,o=-1==n?1:0;t.checked&&(i.status_def=o,o||(i.status=n))}for(let e=0;e<o.length;e++){let t=o[e],n=t.name;(t.checked&&"limit_def"===t.name||"limit_def"!==t.name)&&(i[n]=t.value)}i.attach=~~s[0].checked,$.post(e.path.prefix+"/"+e.variable.module.name()+"/mail_search.cgi?returned_format=json&json-error=1&"+e.plugin.json_to_query(i),function(e){l.get(e)})}}}else a.search.trigger("click")}),i.search.off(_).on(_,function(){k.trigger("focus")}),a.refresh.off(g).on(g,function(){t.element("tree.active").click()}),$(a.special.star).off(g).on(g,function(o){o.stopImmediatePropagation();let l=$(this),r=$(o.target).parents("td").parent("tr"),s=t.$.messages.special,i=r.find("input[value]").val(),c=$(o.target).is($(a.special.starred))?1:0,u=+r.attr("data-unread"),m=e.lang("global_"+(c?"unstarred":"starred"));r.attr("data-starred",+!c),p(n,{["markas"+(c?1:2)]:1},[i]),l.removeClass(s[c?"starred":"unstarred"]).addClass(s[c?"unstarred":"starred"]).attr("data-original-title",m).next().remove(),d.write([(+!u).toString(),n],[i])}),i.mark.read.add(i.mark.unread).off(g).on(g,function(){let e=$(this).data("form-action"),t=c.get();d.write([e,n]),d.set(e,t)}),i.mark.spam.add(i.mark.ham).add(i.mark.black).add(i.mark.white).off(g).on(g,function(){let e=$(this).data("form-action"),t=c.get(),a=/razor|black/.test(e);p(n,{[e]:1},t,+a,1)}),$(t.$.controls.search.link).off(g).on(g,function(){let t=this.getAttribute("data-href");fetch(t,e.fetch.options).then(function(e){return e.json()}).then(function(e){l.get(e)})}),$(r.data.selector.navigation).off(g,a.compose).on(g,a.compose,function(){o.message()})},p=(t,n,a,o=0,l=0)=>{let r=t.form_list,d=e.variable.module.link()+`/${r.target}?`,u=r.hidden,p=t.searched_folder_index,f=parseInt(t.mail_system);u=e.plugin.json_to_query(u)+"&noredirect=1&",!p||2!==f&&4!==f||(u=u.replace(/folder=\d+/,`folder=${p}`)),n=e.plugin.json_to_query(n),a=`&d=${a.join("&d=")}`,o&&(i.start(),e.notification.hideAll()),$.post(d+u+n+encodeURI(a),function(){l&&c.reset(),(o||t.folder_counts_allowed)&&(s.abort(),$.post(e.path.extensions+"/mail/messages.cgi?"+u+"show_body_len="+parseInt($(window).width()/10),function(e){m(e),i.end()}))})},m=n=>{let a=t.element("layout.container"),o=n[0],i=o.list.messages&&o.form_list.buttons?o.list.messages.replace(/�/g,""):String();if(o.error){let n=o.error.error;for(let a=0;a<n.length;a++)e.notification.post([t.$.notification.error,n[a]],20,"error",a,1,["bottom","center"]);return void(o.redirect&&(s.abort(),e.pjax.fetch(o.redirect)))}let c=i.length>128?1:0;if(!c&&o.searched)return void e.notification.post([t.$.notification.type.search,e.lang("mail_search_empty")],5,"info",0,1,["bottom","center"]);a.empty().append(t.create.$("layout.panel"));let d=a.find(t.selector("layout.panel"));if(c){let n={select:o.form_list.buttons.select,submit:o.form_list.buttons.submit},a={link:o.pagination_arrow_last||o.pagination_arrow_first||String(),title:o.pagination_arrow_last?e.lang("mail_pagination_last"):!!o.pagination_arrow_first&&e.lang("mail_pagination_first")};d.append(t.create.$("layout.row.controls")).find(t.selector("layout.row.controls")).append(t.create.$("layout.column.6"),t.create.$("layout.column.6")).find(t.selector("layout.column.6")).first().append(t.create.dropdown("controls.select.dropdown",[[n.select.all,n.select.none,n.select.invert,n.select.read,n.select.unread,n.select.special],3],t.create.checkbox({select:1}),String(),e.lang("global_select")));let s=$(t.create.$("layout.controls",{"form-controls":1},"div"));Object.entries(n.submit).map(([n,a])=>{for(let[o,l]of a.entries())if("buttons"===n)s.append(t.create.$("controls."+l[0],{"form-control":l[0]},"span",String(),e.lang("global_"+l[0])));else if("dropdowns"===n)for(let[n,a]of l.entries()){let n=[];for(let[e,a]of l[1].entries())a[0]&&n.push(t.create.$(0,{"form-action":a[0]},"span",a[1]));"string"==typeof a&&s.append(t.create.dropdown("controls."+a+".dropdown",[n,2],0,a,e.lang("mail_"+a)||e.lang("global_"+a)))}}),d.find(t.selector("layout.column.6")).first().append(s,t.create.$("controls.refresh.button",{refresh:1},"button",String(),e.lang("global_refresh")),t.create.dropdown("controls.sort.dropdown",[[o.list.sort.date,o.list.sort.from,o.list.sort.size,o.list.sort.subject,o.list.sort.spam],5],o.list.sorted,"sort",e.lang("global_sort"),function(e){return e&&e.match(/<li.*?<a/)?e:String()}),t.create.dropdown("controls.search.dropdown",[[t.create.$(0,{[t.$.controls.search.data.form.action]:"search",[t.$.controls.search.data.form.type]:"simple"},"span",t.create.input("search",e.lang("mail_search_search_mail"),String(),"text",{"search-mail":1})+t.create.button("layout.button.transparent.link",{"toggle-type":1},String(),"controls.search.caret.down")),t.create.$(0,{[t.$.controls.search.data.form.action]:"search",[t.$.controls.search.data.form.advanced]:1},"span",t.create.$("layout.column.3",{},"span",t.create.label("search-from",e.lang("mail_search_from")))+t.create.$("layout.column.9",{},"span",t.create.input("search-from"))),t.create.$(0,{[t.$.controls.search.data.form.action]:"search",[t.$.controls.search.data.form.advanced]:1},"span",t.create.$("layout.column.3",0,"span",t.create.label("search-to",e.lang("mail_search_to")))+t.create.$("layout.column.9",0,"span",t.create.input("search-to"))),t.create.$(0,{[t.$.controls.search.data.form.action]:"search",[t.$.controls.search.data.form.advanced]:1},"span",t.create.$("layout.column.3",0,"span",t.create.label("search-subject",e.lang("mail_search_subject")))+t.create.$("layout.column.9",0,"span",t.create.input("search-subject"))),t.create.$(0,{[t.$.controls.search.data.form.action]:"search",[t.$.controls.search.data.form.advanced]:1},"span",t.create.$("layout.column.3",0,"span",t.create.label("search-wordsin",e.lang("mail_search_has_words")))+t.create.$("layout.column.9",0,"span",t.create.input("search-wordsin"))),t.create.$(0,{[t.$.controls.search.data.form.action]:"search",[t.$.controls.search.data.form.advanced]:1},"span",t.create.$("layout.column.3",0,"span",t.create.label("search-wordsout",e.lang("mail_search_doesnt_have_words")))+t.create.$("layout.column.9",0,"span",t.create.input("search-wordsout"))),t.create.$(0,{[t.$.controls.search.data.form.action]:"search",[t.$.controls.search.data.form.advanced]:1},"span",t.create.$("layout.column.3",0,"span",t.create.label("search-status",e.lang("mail_search_with_status")))+t.create.$("layout.column.9",0,"span",t.create.radio(0,"status",-1,e.lang("mail_search_with_status_any"),"status_def","checked")+t.create.radio(0,"status",0,e.lang("mail_search_with_status_unread"),"status0")+t.create.radio(0,"status",1,e.lang("mail_search_with_status_read"),"status1")+t.create.radio(0,"status",2,e.lang("mail_search_with_status_special"),"status2"))),t.create.$(0,{[t.$.controls.search.data.form.action]:"search",[t.$.controls.search.data.form.advanced]:1,[t.$.controls.search.data.form.type]:"search-in"},"span",t.create.$("layout.column.3",0,"span",t.create.label("search-folder",e.lang("mail_search_search_in")))+t.create.$("layout.column.9",0,"span",o.form_list.buttons.submit.dropdowns[0][1][0][1])),t.create.$(0,{[t.$.controls.search.data.form.action]:"search",[t.$.controls.search.data.form.advanced]:1,[t.$.controls.search.data.form.type]:"limit"},"span",t.create.$("layout.column.3",0,"span",t.create.label("search-wordsout",e.lang("mail_search_limit_results")))+t.create.$("layout.column.9",0,"span",t.create.radio(0,"limit_def",1,e.lang("global_no"),"limit_def0","checked")+t.create.radio(0,"limit_def",0,e.lang("mail_search_limit_results_yes")+" "+t.create.input("limit","",20,"number",['step="10"','min="10"'])+" latest messages","limit_def1"))),t.create.$(0,{[t.$.controls.search.data.form.action]:"search",[t.$.controls.search.data.form.advanced]:1,[t.$.controls.search.data.form.type]:"attach"},"span",t.create.checkbox(0,"attach",1,e.lang("mail_search_has_attach"))),t.create.$(0,{[t.$.controls.search.data.form.action]:"search",[t.$.controls.search.data.form.advanced]:1,[t.$.controls.search.data.form.type]:"submit"},"span",t.create.button("layout.button.primary",!1,e.lang("global_search"),"controls.search.icon"))],5],o.searched_message?t.create.$("controls.search.clear.link",['href="index.cgi?folder='+o.searched_folder_index+'"'],"a",t.create.icon("controls.search.clear.icon")+" "+o.searched_message.toLowerCase(),e.lang("mail_search_clear")):String(),"search",e.lang("global_search")),t.create.$("controls.counter",0,"span")).end().last().append(t.create.$("controls.pagination",!!a.link&&['href="'+a.link+'"','data-href="'+a.link+'"'],"a",o.pagination_message,a.title),o.pagination_arrow_left,o.pagination_arrow_right),d.append(t.create.$("layout.row.messages")).find(t.selector("layout.row.messages")).append(t.create.$("layout.column.12")).find(t.selector("layout.column.12")).append(i),o.quota&&d.append(t.create.$("layout.row.quota")).find(t.selector("layout.row.quota")).last().append(t.create.$("layout.column.12")).find(t.selector("layout.column.12")).append(o.quota),e.plugin.timestamp(),e.plugin.arialabel(),e.plugin.tooltip(),e.plugin.offset_adjust(!0),e.rows(),r.set(o),r.update(o),u(o),l.storage.restore(),l.refresh(d)}else u(),d.append(((e,n)=>{let a=String(),o=t.create.$("layout.row.centered");return a=$(o).append((n?t.create.icon(n):String())+'<div class="text-uppercase"> '+e+" </div>"),a})(0===o.folder_index?e.lang("mail_no_new_mail"):e.lang("mail_no_mail"),"messages.row.empty")),r.update(o);setTimeout(()=>{e.plugin.preloader.hide()},200)};return{get:t=>{i.start(),s.abort(),s.state=$.post(e.path.extensions+"/mail/messages.cgi?"+e.plugin.json_to_query(t),function(t){m(t),i.end(),e.document_title(0,e.lang("titles_mail")),n.set(t[0].config),s.initial=!1,!a.loaded&&a.get(n)})},storage:c,refresh:function(e,a){if("number"==typeof this.refreshTimer&&clearInterval(this.refreshTimer),a)return;let o=Date.now();e[0].addEventListener("mousemove",function(){o=Date.now()}),this.refreshTimer=setInterval(()=>{n.d.u&&(clearInterval(this.refreshTimer),n.d.u.refresh?this.refreshTimer=setInterval(()=>{document.querySelector(`.${e[0].classList[0]}`)||this.refresh(!1,!0);let n=t.element("controls.search.clear.icon").length,a=e.find('[name="d"]:checked').length,o=e.find('[href*="index.cgi"][href*="start=0"]').length,l=e.find(".open").length;a||o||l||n||!s.pending()&&e.find(t.element("controls.refresh.button")).trigger("click")},1e3*parseInt(n.d.u.refresh)):this.refresh(!1,!0))},100)},events:u}}(),r=function(){let n={file:{fancytree:"jquery.fancytree"},selector:{navigation:"aside .navigation"},options:{tree:{escapeTitles:!1,autoActivate:!1,autoScroll:!0,keyboard:!1,toggleEffect:!1},scroll:{axis:"x",theme:"minimal",keyboard:!1,scrollInertia:300,scrollButtons:!0,autoHideScrollbar:!1}},plugin:{tree:o=>{if(!$.fn.fancytree)return void setTimeout(()=>{n.plugin.tree(o)},400);let r="get"===o?"getTree":null,s="node"===o?"getActiveNode":null;return o="get"===o?"getTree":"node"===o?"getActiveNode":Object.assign(n.options.tree,{source:o,scrollParent:$("["+t.$.tree.container+"]"),click:(t,o)=>{"title"===o.targetType&&(setTimeout(()=>{a.adjust()},100),e.pjax.fetch(n.url.link+encodeURIComponent(o.node.key)),l.storage.reset(),e.navigation.reset())}}),$(a.container).length?r?$.ui.fancytree.getTree($(a.container)):s?$.ui.fancytree.getTree($(a.container)).getActiveNode():$(a.container).fancytree(o):void 0}},url:{link:e.path.origin+e.path.prefix+"/mailbox/index.cgi?id="}},a={fetched:0,container:"["+t.$.tree.container+"]",container_adjust:function(){let e=$(this.container+" >:first"),t=$(this.container+" >>:first");e.height()>t.height()&&e.css("height",t.height())},init:function(a){0!==this.fetched?0===$(n.selector.navigation+" "+this.container).length&&($(n.selector.navigation).prepend("<li><div "+t.$.tree.container+"></div></li>"),$(n.selector.navigation).prepend("<li>"+t.create.$("layout.button.block.transparent",{compose:1},"span",t.create.icon("controls.compose.icon")+" "+e.lang("mail_new_message"))+"</li>"),n.plugin.tree(a),e.plugin.scroll(this.container,n.options.scroll),this.container_adjust()):this.load()},expand:function(e){!e.isExpanded()&&e.toggleExpanded()},load:function(){this.fetched=1,e.load.bundle(n.file.fancytree,1,e.variable.switch()?[o]:0,1)},reload:function(e){let t=n.plugin.tree("get");t.$container.empty(),t.reload(e),setTimeout(()=>{this.adjust()},100)},node:function(){return n.plugin.tree("node")},adjust:function(){let t=this.node();t&&t.li&&$(t.li).length&&e.plugin.scroll([this.container,$(t.li)]),this.container_adjust()}};const o=t=>{t=t?"?key="+t.replace(/&/g,"%26"):String(),$.post(e.path.extensions+"/mail/folders.cgi"+t,function(e){t?a.reload(e):a.init(e)})};return{get:o,set:function(e){let t=n.plugin.tree("get");if("object"==typeof e){let t={id:e.searched_folder_id,file:e.searched_folder_file},n=e.folder_id;e=t.file&&null!=t.id&&2!=e.mail_system&&4!=e.mail_system?t.file:t.id||n}"object"==typeof t&&"function"==typeof t.activateKey?(t.activateKey(!1),t.activateKey(e)):setTimeout(()=>{this.set(e)},100)},refresh:()=>{a.node().span.click()},update:function(e){let n=e.folder_counts_allowed,a=e.unread,o=$(t.selector("tree.title")),l=t.selector("tree.active"),r=t.selector("tree.bubble"),s=$(l).find(t.selector("tree.title")),i=$(l).find(r);n?a?i.length?i.text(a):s.append(t.create.$("tree.bubble",!1,"span",a)):i.remove():o.find(r).remove()},check:function(e){let t=a.node();return!(!t||t.key!==e)},adjust:()=>{a.adjust()},data:n}}();return{folders:{get:r.get,set:r.set,refresh:r.refresh,update:r.update,check:r.check,adjust:r.adjust},messages:{get:l.get,sort:l.sort,events:l.events},compose:o.message}}();