');if(n){var a=n.split("/");l().each(a,(function(t,e){if(""===(e=a.pop()))return!1;i.prepend(o.octemplate({dir:a.join("/")+"/"+e,name:e}))}))}o.octemplate({dir:"",name:t("core","Home"),classList:"icon-home"},{escapeFunction:null}).addClass("crumb svg crumbhome").prependTo(i),this.$dirTree.find("> nav").prepend(i)},_handleTreeListSelect:function(t,e){var n=t.data,o=l()(t.target).closest(".crumb").data("dir");n._fillFilePicker(o,e);var i=t.target.closest(".oc-dialog"),a=l()(".primary",i);this._changeButtonsText(e,o.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?a.prop("disabled",!1):a.prop("disabled",!0)},_handlePickerClick:function(t,e,n){var o=this.$filePicker.closest(".oc-dialog").find(".primary");"file"===e.data("type")?(!0===this.$filePicker.data("multiselect")&&t.ctrlKey||this.$filelist.find(".filepicker_element_selected").removeClass("filepicker_element_selected"),e.toggleClass("filepicker_element_selected"),o.prop("disabled",!1)):"dir"===e.data("type")&&(this._fillFilePicker(this.$filePicker.data("path")+"/"+e.data("entryname"),n),this._changeButtonsText(n,e.data("entryname")),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?o.prop("disabled",!1):o.prop("disabled",!0))},_changeButtonsText:function(e,n){var o=""===n?t("core","Copy"):t("core","Copy to {folder}",{folder:n}),i=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),a=l()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:a.text(o);break;case this.FILEPICKER_TYPE_MOVE:a.text(i);break;case this.FILEPICKER_TYPE_COPY_MOVE:a.eq(0).text(o),a.eq(1).text(i)}}},et=tt,nt=((t,e)=>{let n=t.getElementsByTagName("head")[0].getAttribute("data-requesttoken");return{getToken:()=>n,setToken:t=>{n=t,e("csrf-token-update",{token:n})}}})(document,r.j8),ot=nt.getToken,it=(nt.setToken,function(t,e){var n,o,i="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},e)for(n in e)i+=n+"="+encodeURIComponent(e[n])+"&";if(i+="requesttoken="+encodeURIComponent(ot()),this.useFallBack||"undefined"==typeof EventSource){var a="oc_eventsource_iframe_"+it.iframeCount;it.fallBackSources[it.iframeCount]=this,this.iframe=l()(""),this.iframe.attr("id",a),this.iframe.hide(),o="&",-1===t.indexOf("?")&&(o="?"),this.iframe.attr("src",t+o+"fallback=true&fallback_id="+it.iframeCount+"&"+i),l()("body").append(this.iframe),this.useFallBack=!0,it.iframeCount++}else o="&",-1===t.indexOf("?")&&(o="?"),this.source=new EventSource(t+o+i),this.source.onmessage=function(t){for(var e=0;e18e5},requirePasswordConfirmation(e,n,o){n=void 0!==n?n:{};const i={title:t("core","Authentication required"),text:t("core","This action requires you to confirm your password"),confirm:t("core","Confirm"),label:t("core","Password"),error:""},a=f.default.extend(i,n),r=this;this.requiresPasswordConfirmation()&&Lt.dialogs.prompt(a.text,a.title,(function(t,e){t&&""!==e?r._confirmPassword(e,a):f.default.isFunction(o)&&o()}),!0,a.label,!0).then((function(){const t=l()(".oc-dialog:visible");if(t.find(".ui-icon").remove(),t.addClass("password-confirmation"),""!==a.error){const e=l()("").addClass("msg warning").text(a.error);t.find(".oc-dialog-content").append(e)}const e=t.find(".oc-dialog-buttonrow");e.addClass("aside");const n=e.find("button");n.eq(0).hide(),n.eq(1).text(a.confirm)})),this.callback=e},_confirmPassword(e,n){const o=this;l().ajax({url:(0,c.generateUrl)("/login/confirm"),data:{password:e},type:"POST",success(t){window.nc_lastLogin=t.lastLogin,f.default.isFunction(o.callback)&&o.callback()},error(){n.error=t("core","Failed to authenticate, try again"),Lt.PasswordConfirmation.requirePasswordConfirmation(o.callback,n)}})}},bt={_plugins:{},register(t,e){let n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins(t){return this._plugins[t]||[]},attach(t,e,n){const o=this.getPlugins(t);for(let t=0;t-1&&parseInt(navigator.userAgent.split("/").pop())<51){const t=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]');for(let e,n=0,o=t.length;n=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:t=>t.replace(/\+/g," "),parseUrlQuery(){const t=this._parseHashQuery();let e;return t&&(e=Lt.parseQueryString(this._decodeQuery(t))),e=f.default.extend(e||{},Lt.parseQueryString(this._decodeQuery(location.search))),e||{}},_onPopState(t){if(this._cancelPop)return void(this._cancelPop=!1);let e;if(this._handlers.length){e=t&&t.state,f.default.isString(e)?e=Lt.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(let t=0;t="0"&&n<="9";r!==a&&(i++,e[i]="",a=r),e[i]+=n,o++}return e}const xt={History:At,humanFileSize:_t.sS,computerFileSize(t){if("string"!=typeof t)return null;const e=t.toLowerCase().trim();let n=null;const o=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===o?null:(n=parseFloat(e),isFinite(n)?(o[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[o[5]]),n=Math.round(n),n):null)},formatDate:(t,e)=>(void 0===window.TESTING&&Lt.debug&&kt.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",wt()(t).format(e)),relativeModifiedDate(e){void 0===window.TESTING&&Lt.debug&&kt.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");const n=wt()().diff(wt()(e));return n>=0&&n<45e3?t("core","seconds ago"):wt()(e).fromNow()},getScrollBarWidth(){if(this._scrollBarWidth)return this._scrollBarWidth;const t=document.createElement("p");t.style.width="100%",t.style.height="200px";const e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);const n=t.offsetWidth;e.style.overflow="scroll";let o=t.offsetWidth;return n===o&&(o=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-o,this._scrollBarWidth},stripTime:t=>new Date(t.getFullYear(),t.getMonth(),t.getDate()),naturalSortCompare(t,e){let n;const o=Pt(t),i=Pt(e);for(n=0;o[n]&&i[n];n++)if(o[n]!==i[n]){const t=Number(o[n]),e=Number(i[n]);return t==o[n]&&e==i[n]?t-e:o[n].localeCompare(i[n],Lt.getLanguage())}return o.length-i.length},waitFor(t,e){const n=function(){!0!==t()&&setTimeout(n,e)};n()},isCookieSetToValue(t,e){const n=document.cookie.split(";");for(let o=0;o!$_",fileIsBlacklisted:t=>!!t.match(R.blacklist_files_regex),Apps:y,addScript:(t,e,n)=>{let o;OC.debug&&d.warn("OC.addScript is deprecated, use OCP.Loader.loadScript instead");const i=(0,c.generateFilePath)(t,"js",e+".js");return u[i]?n&&n():(o=l().Deferred(),l().getScript(i,(()=>o.resolve())),u[i]=o),u[i]},addStyle:(t,e)=>{OC.debug&&d.warn("OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead");const n=(0,c.generateFilePath)(t,"css",e+".css");-1===p.indexOf(n)&&(p.push(n),document.createStyleSheet?document.createStyleSheet(n):(e=l()(''),l()("head").append(e)))},AppConfig:A,appConfig:C,appSettings:e=>{if(OC.debug&&k.warn("OC.appSettings is deprecated and will be removed with Nextcloud 18"),void 0===e||void 0===e.appid)throw{name:"MissingParameter",message:"The parameter appid is missing"};var n={scriptName:"settings.php",cache:!0};l().extend(n,e);var o=l()("#appsettings");if(0===o.length)throw{name:"MissingDOMElement",message:'There has be be an element with id "appsettings" for the popup to show.'};var i=l()("#appsettings_popup");if(0===i.length&&(l()("body").prepend(''),(i=l()("#appsettings_popup")).addClass(o.hasClass("topright")?"topright":"bottomleft")),i.is(":visible"))i.hide().remove();else{const e=o.hasClass("topright")?"up":"left";l().get((0,c.generateFilePath)(n.appid,"",n.scriptName),(function(o){i.html(o).ready((function(){if(i.prepend('
'+t("core","Settings")+'
').show(),i.find(".close").bind("click",(function(){i.remove()})),void 0!==n.loadJS){var o;if(!0===n.loadJS)o="settings.js";else{if("string"!=typeof n.loadJS)throw{name:"InvalidParameter",message:'The "loadJS" parameter must be either boolean or a string.'};o=n.loadJS}n.cache&&l().ajaxSetup({cache:!0}),l().getScript((0,c.generateFilePath)(n.appid,"js",o)).fail((function(t,e,n){throw n}))}})).show()}),"html")}},appswebroots:P,Backbone:$,ContactsMenu:K,config:R,currentUser:G,dialogs:et,EventSource:at,getCurrentUser:()=>({uid:G,displayName:V}),isUserAdmin:()=>ut,L10N:mt,_ajaxConnectionLostHandler:v,_processAjaxError:t=>{(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!Lt._reloadCalled)&&(f.default.contains([302,303,307,401],t.status)&&Lt.currentUser?setTimeout((function(){if(!Lt._userIsNavigatingAway&&!Lt._reloadCalled){let t=0;const e=5,o=setInterval((function(){g.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",e-t)),t>=e&&(clearInterval(o),Lt.reload()),t++}),1e3);Lt._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){Lt._userIsNavigatingAway||Lt._reloadCalled||Lt._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:t=>{t.addEventListener&&(t.addEventListener("load",(()=>{4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||l()(document).trigger(new(l().Event)("ajaxError"),t))})),t.addEventListener("error",(()=>{l()(document).trigger(new(l().Event)("ajaxError"),t)})))},getCapabilities:()=>(OC.debug&&st.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,rt.getCapabilities)()),hideMenus:dt,registerMenu:function(t,e,n,o){e.addClass("menu");const i="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(i?"click.menu":"click.menu keyup.menu",(function(i){i.preventDefault(),i.key&&"Enter"!==i.key||(e.is(lt)?dt():(lt&&dt(),!0===o&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),lt=e,ct=t))}))},showMenu:(t,e,n)=>{e.is(lt)||(dt(),lt=e,ct=t,e.trigger(new(l().Event)("beforeShow")),e.show(),e.trigger(new(l().Event)("afterShow")),f.default.isFunction(n)&&n())},unregisterMenu:(t,e)=>{e.is(lt)&&dt(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:F.EZ,encodePath:F.Ec,dirname:F.XX,isSamePath:F.Mg,joinPaths:F.RQ,getHost:()=>window.location.host,getHostName:()=>window.location.hostname,getPort:()=>window.location.port,getProtocol:()=>window.location.protocol.split(":")[0],getCanonicalLocale:ht.aj,getLocale:ht.Kd,getLanguage:ht.G3,buildQueryString:t=>t?l().map(t,(function(t,e){let n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):"",parseQueryString:t=>{let e,n;const o={};let i;if(!t)return null;e=t.indexOf("?"),e>=0&&(t=t.substr(e+1));const a=t.replace(/\+/g,"%20").split("&");for(let t=0;t=0?[r.substr(0,e),r.substr(e+1)]:[r],n.length&&(i=decodeURIComponent(n[0]),i&&(o[i]=n.length>1?decodeURIComponent(n[1]):null))}return o},msg:gt,Notification:g,PasswordConfirmation:yt,Plugins:bt,theme:Ct,Util:xt,debug:Tt,filePath:c.generateFilePath,generateUrl:c.generateUrl,get:(St=window,t=>{const e=t.split("."),n=e.pop();for(let t=0;t(e,n)=>{const o=e.split("."),i=o.pop();for(let e=0;e{window.location=t},reload:()=>{window.location.reload()},requestToken:ot(),linkTo:c.linkTo,linkToOCS:(t,e)=>(0,c.generateOcsUrl)(t,{},{ocsVersion:e||1})+"/",linkToRemote:c.generateRemoteUrl,linkToRemoteBase:t=>(0,c.getRootUrl)()+"/remote.php/"+t,webroot:Et};var St;(0,r.Ld)("csrf-token-update",(t=>{OC.requestToken=t.token,jt.info("OC.requestToken changed",t.token)}));var Nt=i(79954),It=i(97047),Ut=i(22660),$t=i.n(Ut),Ft=i(10204),Rt=i.n(Ft),Mt=i(57290),Bt=i.n(Mt),zt=i(10861),Dt=i.n(zt);const qt={name:"LoginButton",components:{ArrowRight:i(39429).default,NcButton:Dt()},props:{value:{type:String,default:t("core","Log in")},valueLoading:{type:String,default:t("core","Logging in …")},loading:{type:Boolean,required:!0},invertedColors:{type:Boolean,default:!1}}};var Ht=i(93379),Yt=i.n(Ht),Kt=i(7795),Zt=i.n(Kt),Vt=i(90569),Gt=i.n(Vt),Wt=i(3565),Jt=i.n(Wt),Qt=i(19216),Xt=i.n(Qt),te=i(44589),ee=i.n(te),ne=i(76515),oe={};oe.styleTagTransform=ee(),oe.setAttributes=Jt(),oe.insert=Gt().bind(null,"head"),oe.domAPI=Zt(),oe.insertStyleElement=Xt(),Yt()(ne.Z,oe),ne.Z&&ne.Z.locals&&ne.Z.locals;var ie=i(51900);const ae=(0,ie.Z)(qt,(function(){var t=this,e=t._self._c;return e("NcButton",{attrs:{type:"primary","native-type":"submit",wide:!0},on:{click:function(e){return t.$emit("click")}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?e("div",{staticClass:"submit-wrapper__icon icon-loading-small-dark"}):e("ArrowRight",{staticClass:"submit-wrapper__icon"})]},proxy:!0}])},[t._v("\n\t"+t._s(t.loading?t.valueLoading:t.value)+"\n\t")])}),[],!1,null,"3fa8511b",null).exports,re={name:"LoginForm",components:{LoginButton:ae,NcPasswordField:$t(),NcTextField:Rt(),NcNoteCard:Bt()},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},errors:{type:Array,default:()=>[]},messages:{type:Array,default:()=>[]},throttleDelay:{type:Number,default:0},autoCompleteAllowed:{type:Boolean,default:!0},directLogin:{type:Boolean,default:!1}},data(){var e,n;return{loading:!1,timezone:null===(e=new Intl.DateTimeFormat)||void 0===e||null===(n=e.resolvedOptions())||void 0===n?void 0:n.timeZone,timezoneOffset:-(new Date).getTimezoneOffset()/60,headline:t("core","Log in to {productName}",{productName:OC.theme.name}),user:"",password:""}},computed:{isError(){return this.invalidPassword||this.userDisabled||this.throttleDelay>5e3},errorLabel(){return this.invalidPassword?t("core","Wrong username or password."):this.userDisabled?t("core","User disabled"):this.throttleDelay>5e3?t("core","We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds."):void 0},apacheAuthFailed(){return-1!==this.errors.indexOf("apacheAuthFailed")},internalException(){return-1!==this.errors.indexOf("internalexception")},invalidPassword(){return-1!==this.errors.indexOf("invalidpassword")},userDisabled(){return-1!==this.errors.indexOf("userdisabled")},loadingIcon:()=>(0,c.imagePath)("core","loading-dark.gif"),loginActionUrl:()=>(0,c.generateUrl)("login")},mounted(){""===this.username?this.$refs.user.$refs.inputField.$refs.input.focus():(this.user=this.username,this.$refs.password.$refs.inputField.$refs.input.focus())},methods:{updateUsername(){this.$emit("update:username",this.user)},submit(){this.loading=!0,this.$emit("submit")}}};var se=i(3591),le={};le.styleTagTransform=ee(),le.setAttributes=Jt(),le.insert=Gt().bind(null,"head"),le.domAPI=Zt(),le.insertStyleElement=Xt(),Yt()(se.Z,le),se.Z&&se.Z.locals&&se.Z.locals;const ce=(0,ie.Z)(re,(function(){var t=this,e=t._self._c;return e("form",{ref:"loginForm",staticClass:"login-form",attrs:{method:"post",name:"login",action:t.loginActionUrl},on:{submit:t.submit}},[e("fieldset",{staticClass:"login-form__fieldset",attrs:{"data-login-form":""}},[t.apacheAuthFailed?e("NcNoteCard",{attrs:{title:t.t("core","Server side authentication failed!"),type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),t.messages.length>0?e("NcNoteCard",t._l(t.messages,(function(n,o){return e("div",{key:o},[t._v("\n\t\t\t\t"+t._s(n)),e("br")])})),0):t._e(),t._v(" "),t.internalException?e("NcNoteCard",{class:t.t("core","An internal error occurred."),attrs:{type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please try again or contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),e("div",{staticClass:"hidden",attrs:{id:"message"}},[e("img",{staticClass:"float-spinner",attrs:{alt:"",src:t.loadingIcon}}),t._v(" "),e("span",{attrs:{id:"messageText"}}),t._v(" "),e("div",{staticStyle:{clear:"both"}})]),t._v(" "),e("h2",{staticClass:"login-form__headline",attrs:{"data-login-form-headline":""},domProps:{innerHTML:t._s(t.headline)}}),t._v(" "),e("NcTextField",{ref:"user",class:{shake:t.invalidPassword},attrs:{id:"user",label:t.t("core","Account name or email"),"label-visible":!0,name:"user",value:t.user,autocapitalize:"none",spellchecking:!1,autocomplete:t.autoCompleteAllowed?"username":"off",required:"","data-login-form-input-user":""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),e("NcPasswordField",{ref:"password",class:{shake:t.invalidPassword},attrs:{id:"password",name:"password","label-visible":!0,value:t.password,spellchecking:!1,autocapitalize:"none",autocomplete:t.autoCompleteAllowed?"current-password":"off",label:t.t("core","Password"),"helper-text":t.errorLabel,error:t.isError,"data-login-form-input-password":"",required:""},on:{"update:value":function(e){t.password=e}}}),t._v(" "),e("LoginButton",{attrs:{"data-login-form-submit":"",loading:t.loading}}),t._v(" "),t.redirectUrl?e("input",{attrs:{type:"hidden",name:"redirect_url"},domProps:{value:t.redirectUrl}}):t._e(),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone"},domProps:{value:t.timezone}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone_offset"},domProps:{value:t.timezoneOffset}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"requesttoken"},domProps:{value:t.OC.requestToken}}),t._v(" "),t.directLogin?e("input",{attrs:{type:"hidden",name:"direct",value:"1"}}):t._e()],1)])}),[],!1,null,"5bd351bc",null).exports;var de=i(4820),ue=i(37838),pe=i(38213),fe=i(25108);class he extends Error{}const me={name:"PasswordLessLoginForm",components:{LoginButton:ae,InformationIcon:ue.Z,LockOpenIcon:pe.Z},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},autoCompleteAllowed:{type:Boolean,default:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1},hasPublicKeyCredential:{type:Boolean,default:!1}},data(){return{user:this.username,loading:!1,validCredentials:!0}},methods:{authenticate(){fe.debug("passwordless login initiated"),this.getAuthenticationData(this.user).then((t=>(fe.debug(t),t))).then(this.sign).then(this.completeAuthentication).catch((t=>{t instanceof he?this.validCredentials=!1:fe.debug(t)}))},getAuthenticationData(t){const e=function(t){const e=(t=t.replace(/-/g,"+").replace(/_/g,"/")).length%4;if(e){if(1===e)throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");t+=new Array(5-e).join("=")}return window.atob(t)};return function(t){const e=(0,c.generateUrl)("/login/webauthn/start");return de.default.post(e,{loginName:t}).then((t=>t.data))}(t).then((t=>{if(fe.debug("Obtained PublicKeyCredentialRequestOptions"),fe.debug(t),!Object.prototype.hasOwnProperty.call(t,"allowCredentials"))throw fe.debug("No credentials found."),new he;return t.challenge=Uint8Array.from(e(t.challenge),(t=>t.charCodeAt(0))),t.allowCredentials=t.allowCredentials.map((function(t){return{...t,id:Uint8Array.from(e(t.id),(t=>t.charCodeAt(0)))}})),fe.debug("Converted PublicKeyCredentialRequestOptions"),fe.debug(t),t})).catch((t=>{throw fe.debug("Error while obtaining data"),t}))},sign(t){const e=function(t){return window.btoa(String.fromCharCode(...t))};return navigator.credentials.get({publicKey:t}).then((t=>{return fe.debug(t),fe.debug(new Uint8Array(t.rawId)),fe.debug(e(new Uint8Array(t.rawId))),{id:t.id,type:t.type,rawId:e(new Uint8Array(t.rawId)),response:{authenticatorData:e(new Uint8Array(t.response.authenticatorData)),clientDataJSON:e(new Uint8Array(t.response.clientDataJSON)),signature:e(new Uint8Array(t.response.signature)),userHandle:t.response.userHandle?(n=new Uint8Array(t.response.userHandle),String.fromCharCode(...n)):null}};var n})).then((t=>(fe.debug(t),t))).catch((t=>{fe.debug("GOT AN ERROR!"),fe.debug(t)}))},completeAuthentication(t){fe.debug("TIME TO COMPLETE");const e=this.redirectUrl;return function(t){const e=(0,c.generateUrl)("/login/webauthn/finish");return de.default.post(e,{data:t}).then((t=>t.data))}(JSON.stringify(t)).then((t=>{let{defaultRedirectUrl:n}=t;fe.debug("Logged in redirecting"),window.location.href=e||n})).catch((t=>{fe.debug("GOT AN ERROR WHILE SUBMITTING CHALLENGE!"),fe.debug(t)}))},submit(){}}};var ge=i(21280),ve={};ve.styleTagTransform=ee(),ve.setAttributes=Jt(),ve.insert=Gt().bind(null,"head"),ve.domAPI=Zt(),ve.insertStyleElement=Xt(),Yt()(ge.Z,ve),ge.Z&&ge.Z.locals&&ge.Z.locals;const we=(0,ie.Z)(me,(function(){var t=this,e=t._self._c;return(t.isHttps||t.isLocalhost)&&t.hasPublicKeyCredential?e("form",{ref:"loginForm",attrs:{method:"post",name:"login"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",[e("p",{staticClass:"grouptop groupbottom"},[e("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or\temail")))]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],ref:"user",attrs:{id:"user",type:"text",name:"user",autocomplete:t.autoCompleteAllowed?"on":"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:function(e){return t.$emit("update:username",t.user)},input:function(e){e.target.composing||(t.user=e.target.value)}}})]),t._v(" "),t.validCredentials?t._e():e("div",{staticClass:"body-login-container update form__message-box"},[t._v("\n\t\t\t"+t._s(t.t("core","Your account is not setup for passwordless login."))+"\n\t\t")]),t._v(" "),t.validCredentials?e("LoginButton",{attrs:{loading:t.loading},on:{click:t.authenticate}}):t._e()],1)]):t.hasPublicKeyCredential?t.isHttps||t.isLocalhost?t._e():e("div",{staticClass:"body-login-container update"},[e("LockOpenIcon",{attrs:{size:"70"}}),t._v(" "),e("h2",[t._v(t._s(t.t("core","Your connection is not secure")))]),t._v(" "),e("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is only available over a secure connection."))+"\n\t")])],1):e("div",{staticClass:"body-login-container update"},[e("InformationIcon",{attrs:{size:"70"}}),t._v(" "),e("h2",[t._v(t._s(t.t("core","Browser not supported")))]),t._v(" "),e("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is not supported in your browser."))+"\n\t")])],1)}),[],!1,null,"7c43fb49",null).exports;var ye=i(25108);const be={name:"ResetPassword",components:{LoginButton:ae,NcNoteCard:Bt(),NcTextField:Rt()},props:{username:{type:String,required:!0},resetPasswordLink:{type:String,required:!0}},data(){return{error:!1,loading:!1,message:void 0,user:this.username}},watch:{username(t){this.user=t}},methods:{updateUsername(){this.$emit("update:username",this.user)},submit(){this.loading=!0,this.error=!1,this.message="";const t=(0,c.generateUrl)("/lostpassword/email"),e={user:this.user};return de.default.post(t,e).then((t=>t.data)).then((t=>{if("success"!==t.status)throw new Error("got status ".concat(t.status));this.message="send-success"})).catch((t=>{ye.error("could not send reset email request",t),this.error=!0,this.message="send-error"})).then((()=>{this.loading=!1}))}}};var Ce=i(72076),Ae={};Ae.styleTagTransform=ee(),Ae.setAttributes=Jt(),Ae.insert=Gt().bind(null,"head"),Ae.domAPI=Zt(),Ae.insertStyleElement=Xt(),Yt()(Ce.Z,Ae),Ce.Z&&Ce.Z.locals&&Ce.Z.locals;const _e=(0,ie.Z)(be,(function(){var t=this,e=t._self._c;return e("form",{staticClass:"login-form",on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",{staticClass:"login-form__fieldset"},[e("NcTextField",{attrs:{id:"user",value:t.user,name:"user",autocapitalize:"off",label:t.t("core","Account name or email"),"label-visible":!0,required:""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),e("LoginButton",{attrs:{value:t.t("core","Reset password")}}),t._v(" "),"send-success"===t.message?e("NcNoteCard",{attrs:{type:"success"}},[t._v("\n\t\t\t"+t._s(t.t("core","If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or account name, check your spam/junk folders or ask your local administration for help."))+"\n\t\t")]):"send-error"===t.message?e("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Couldn't send reset email. Please contact your administrator."))+"\n\t\t")]):"reset-error"===t.message?e("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Password cannot be changed. Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),e("a",{staticClass:"login-form__link",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.$emit("abort")}}},[t._v("\n\t\t\t"+t._s(t.t("core","Back to login"))+"\n\t\t")])],1)])}),[],!1,null,"6636f1b2",null).exports,ke={name:"UpdatePassword",components:{LoginButton:ae},props:{username:{type:String,required:!0},resetPasswordTarget:{type:String,required:!0}},data(){return{error:!1,loading:!1,message:void 0,user:this.username,password:"",encrypted:!1,proceed:!1}},watch:{username(t){this.user=t}},methods:{async submit(){this.loading=!0,this.error=!1,this.message="";try{const{data:t}=await de.default.post(this.resetPasswordTarget,{password:this.password,proceed:this.proceed});if(t&&"success"===t.status)this.message="send-success",this.$emit("update:username",this.user),this.$emit("done");else{if(!t||!t.encryption)throw t&&t.msg?new Error(t.msg):new Error;this.encrypted=!0}}catch(e){this.error=!0,this.message=e.message?e.message:t("core","Password cannot be changed. Please contact your administrator.")}finally{this.loading=!1}}}};var Pe=i(74778),xe={};xe.styleTagTransform=ee(),xe.setAttributes=Jt(),xe.insert=Gt().bind(null,"head"),xe.domAPI=Zt(),xe.insertStyleElement=Xt(),Yt()(Pe.Z,xe),Pe.Z&&Pe.Z.locals&&Pe.Z.locals;const Te=(0,ie.Z)(ke,(function(){var t=this,e=t._self._c;return e("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",[e("p",[e("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","New password")))]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{id:"password",type:"password",name:"password",autocomplete:"new-password",autocapitalize:"none",autocorrect:"off",required:"",placeholder:t.t("core","New password")},domProps:{value:t.password},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}})]),t._v(" "),t.encrypted?e("div",{staticClass:"update"},[e("p",[t._v("\n\t\t\t\t"+t._s(t.t("core","Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?"))+"\n\t\t\t")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.proceed,expression:"proceed"}],staticClass:"checkbox",attrs:{id:"encrypted-continue",type:"checkbox"},domProps:{checked:Array.isArray(t.proceed)?t._i(t.proceed,null)>-1:t.proceed},on:{change:function(e){var n=t.proceed,o=e.target,i=!!o.checked;if(Array.isArray(n)){var a=t._i(n,null);o.checked?a<0&&(t.proceed=n.concat([null])):a>-1&&(t.proceed=n.slice(0,a).concat(n.slice(a+1)))}else t.proceed=i}}}),t._v(" "),e("label",{attrs:{for:"encrypted-continue"}},[t._v("\n\t\t\t\t"+t._s(t.t("core","I know what I'm doing"))+"\n\t\t\t")])]):t._e(),t._v(" "),e("LoginButton",{attrs:{loading:t.loading,value:t.t("core","Reset password"),"value-loading":t.t("core","Resetting password")}}),t._v(" "),t.error&&t.message?e("p",{class:{warning:t.error}},[t._v("\n\t\t\t"+t._s(t.message)+"\n\t\t")]):t._e()],1)])}),[],!1,null,"4dc21d74",null).exports;var Oe=i(25108);const Ee=It.Z.parse(location.search);if("1"===Ee.clear)try{window.localStorage.clear(),window.sessionStorage.clear(),Oe.debug("Browser storage cleared")}catch(t){Oe.error("Could not clear browser storage",t)}const je={name:"Login",components:{LoginForm:ce,PasswordLessLoginForm:we,ResetPassword:_e,UpdatePassword:Te,NcButton:Dt(),NcNoteCard:Bt()},data:()=>({loading:!1,user:(0,Nt.j)("core","loginUsername",""),passwordlessLogin:!1,resetPassword:!1,errors:(0,Nt.j)("core","loginErrors",[]),messages:(0,Nt.j)("core","loginMessages",[]),redirectUrl:(0,Nt.j)("core","loginRedirectUrl",!1),throttleDelay:(0,Nt.j)("core","loginThrottleDelay",0),canResetPassword:(0,Nt.j)("core","loginCanResetPassword",!1),resetPasswordLink:(0,Nt.j)("core","loginResetPasswordLink",""),autoCompleteAllowed:(0,Nt.j)("core","loginAutocomplete",!0),resetPasswordTarget:(0,Nt.j)("core","resetPasswordTarget",""),resetPasswordUser:(0,Nt.j)("core","resetPasswordUser",""),directLogin:"1"===Ee.direct,hasPasswordless:(0,Nt.j)("core","webauthn-available",!1),countAlternativeLogins:(0,Nt.j)("core","countAlternativeLogins",!1),alternativeLogins:(0,Nt.j)("core","alternativeLogins",[]),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hasPublicKeyCredential:void 0!==window.PublicKeyCredential,hideLoginForm:(0,Nt.j)("core","hideLoginForm",!1)}),methods:{passwordResetFinished(){this.resetPasswordTarget="",this.directLogin=!0}}};var Le=i(1612),Se={};Se.styleTagTransform=ee(),Se.setAttributes=Jt(),Se.insert=Gt().bind(null,"head"),Se.domAPI=Zt(),Se.insertStyleElement=Xt(),Yt()(Le.Z,Se),Le.Z&&Le.Z.locals&&Le.Z.locals;const Ne=(0,ie.Z)(je,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"guest-box login-box"},[!t.hideLoginForm||t.directLogin?[e("transition",{attrs:{name:"fade",mode:"out-in"}},[t.passwordlessLogin||t.resetPassword||""!==t.resetPasswordTarget?!t.loading&&t.passwordlessLogin?e("div",{key:"reset",staticClass:"login-additional"},[e("PasswordLessLoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"auto-complete-allowed":t.autoCompleteAllowed,"is-https":t.isHttps,"is-localhost":t.isLocalhost,"has-public-key-credential":t.hasPublicKeyCredential},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),e("a",{staticClass:"login-box__link",attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Back"))+"\n\t\t\t\t")])],1):!t.loading&&t.canResetPassword?e("div",{key:"reset",staticClass:"login-additional"},[e("div",{staticClass:"lost-password-container"},[t.resetPassword?e("ResetPassword",{attrs:{username:t.user,"reset-password-link":t.resetPasswordLink},on:{"update:username":function(e){t.user=e},abort:function(e){t.resetPassword=!1}}}):t._e()],1)]):""!==t.resetPasswordTarget?e("div",[e("UpdatePassword",{attrs:{username:t.user,"reset-password-target":t.resetPasswordTarget},on:{"update:username":function(e){t.user=e},done:t.passwordResetFinished}})],1):t._e():e("div",[e("LoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"direct-login":t.directLogin,messages:t.messages,errors:t.errors,"throttle-delay":t.throttleDelay,"auto-complete-allowed":t.autoCompleteAllowed},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),t.canResetPassword&&""!==t.resetPasswordLink?e("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t.canResetPassword&&!t.resetPassword?e("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink},on:{click:function(e){e.preventDefault(),t.resetPassword=!0}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t._e(),t._v(" "),t.hasPasswordless?[t.countAlternativeLogins?e("div",{staticClass:"alternative-logins"},[t.hasPasswordless?e("a",{staticClass:"button",class:{"single-alt-login-option":t.countAlternativeLogins},attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t\t")]):t._e()]):e("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t")])]:t._e()],2)])]:[e("transition",{attrs:{name:"fade",mode:"out-in"}},[e("NcNoteCard",{attrs:{type:"warning",title:t.t("core","Login form is disabled.")}},[t._v("\n\t\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t\t")])],1)],t._v(" "),e("div",{staticClass:"alternative-logins",attrs:{id:"alternative-logins"}},t._l(t.alternativeLogins,(function(n,o){return e("NcButton",{key:o,class:[n.class],attrs:{type:"secondary",wide:!0,role:"link",href:n.href}},[t._v("\n\t\t\t"+t._s(n.name)+"\n\t\t")])})),1)],2)}),[],!1,null,null,null).exports,Ie={data:()=>({OC:Lt}),methods:{t:mt.translate.bind(mt),n:mt.translatePlural.bind(mt)}};a.default.mixin(Ie),(new(a.default.extend(Ne))).$mount("#login")},76515:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var o=n(87537),i=n.n(o),a=n(23645),r=n.n(a)()(i());r.push([t.id,".button-vue[data-v-3fa8511b]{margin-top:.5rem}","",{version:3,sources:["webpack://./core/src/components/login/LoginButton.vue"],names:[],mappings:"AACA,6BACC,gBAAA",sourcesContent:["\n.button-vue {\n\tmargin-top: .5rem;\n}\n"],sourceRoot:""}]);const s=r},3591:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var o=n(87537),i=n.n(o),a=n(23645),r=n.n(a)()(i());r.push([t.id,".login-form[data-v-5bd351bc]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-5bd351bc]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-5bd351bc]{text-align:center}","",{version:3,sources:["webpack://./core/src/components/login/LoginForm.vue"],names:[],mappings:"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA",sourcesContent:["\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t}\n}\n"],sourceRoot:""}]);const s=r},21280:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var o=n(87537),i=n.n(o),a=n(23645),r=n.n(a)()(i());r.push([t.id,".body-login-container.update[data-v-7c43fb49]{margin:15px 0}.body-login-container.update.form__message-box[data-v-7c43fb49]{width:240px;margin:5px}","",{version:3,sources:["webpack://./core/src/components/login/PasswordLessLoginForm.vue"],names:[],mappings:"AACA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA",sourcesContent:["\n.body-login-container.update {\n\tmargin: 15px 0;\n\n\t&.form__message-box {\n\t\twidth: 240px;\n\t\tmargin: 5px;\n\t}\n}\n"],sourceRoot:""}]);const s=r},72076:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var o=n(87537),i=n.n(o),a=n(23645),r=n.n(a)()(i());r.push([t.id,".login-form[data-v-6636f1b2]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-6636f1b2]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-6636f1b2]{display:block;font-weight:normal !important;padding-bottom:1rem;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}","",{version:3,sources:["webpack://./core/src/components/login/ResetPassword.vue"],names:[],mappings:"AACA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,mBAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA",sourcesContent:["\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tpadding-bottom: 1rem;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\n\t}\n}\n"],sourceRoot:""}]);const s=r},1612:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var o=n(87537),i=n.n(o),a=n(23645),r=n.n(a)()(i());r.push([t.id,"body{font-size:var(--default-font-size)}.login-box{width:320px;box-sizing:border-box}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.login-box.guest-box,footer{color:var(--color-main-text);background-color:var(--color-main-background-blur);-webkit-backdrop-filter:var(--filter-background-blur);backdrop-filter:var(--filter-background-blur)}footer{min-width:320px;box-sizing:border-box;box-shadow:0 0 10px var(--color-box-shadow);border-radius:var(--border-radius-pill);padding:6px 24px;margin-bottom:1rem;min-height:unset}footer p.info{margin:auto 0px}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}","",{version:3,sources:["webpack://./core/src/views/Login.vue"],names:[],mappings:"AACA,KACC,kCAAA,CAGD,WAEC,WAAA,CACA,qBAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAKF,4BACC,4BAAA,CACA,kDAAA,CACA,qDAAA,CACA,6CAAA,CAGD,OAEC,eAAA,CACA,qBAAA,CAEA,2CAAA,CAEA,uCAAA,CACA,gBAAA,CAEA,kBAAA,CACA,gBAAA,CAGA,cACC,eAAA,CAIF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA",sourcesContent:["\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\t// Same size as dashboard panels\n\twidth: 320px;\n\tbox-sizing: border-box;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n\n// Same look like a dashboard panel\n.login-box.guest-box, footer {\n\tcolor: var(--color-main-text);\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n}\n\nfooter {\n\t// Usually the same size as the login box, but allow longer texts\n\tmin-width: 320px;\n\tbox-sizing: border-box;\n\t// align with login box\n\tbox-shadow: 0 0 10px var(--color-box-shadow);\n\t// set border to pill style and adjust padding for it\n\tborder-radius: var(--border-radius-pill);\n\tpadding: 6px 24px;\n\t// always show above bottom\n\tmargin-bottom: 1rem;\n\tmin-height: unset;\n\n\t// reset margin to reduce height of pill\n\tp.info {\n\t\tmargin: auto 0px;\n\t}\n}\n\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\n\t}\n}\n"],sourceRoot:""}]);const s=r},74778:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var o=n(87537),i=n.n(o),a=n(23645),r=n.n(a)()(i());r.push([t.id,"\nfieldset[data-v-4dc21d74] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-4dc21d74] {\n\tmargin-top: 20px;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/UpdatePassword.vue"],names:[],mappings:";AA4IA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl \n -\n - @author Julius Härtl \n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see .\n -\n --\x3e\n\n\n\t\n\n\n