settings-vue-settings-personal-webauthn.js 40 KB

123
  1. /*! For license information please see settings-vue-settings-personal-webauthn.js.LICENSE.txt */
  2. (()=>{var e,n={83441:(e,n,r)=>{"use strict";var i=r(85471),a=r(32981),o=r(56760),s=r(80910),l=(r(51257),r(10854)),c=r.n(l),u=r(54332);const d=(0,r(53529).YK)().setApp("settings").detectUser().build();var p=r(65043),h=r(63814),f=r(96763);const g=t=>e=>(d.debug(t),e),v=Object.freeze({READY:1,REGISTRATION:2,NAMING:3,PERSIST:4}),y={name:"AddDevice",components:{NcButton:u.A},props:{httpWarning:Boolean,isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1}},data:()=>({name:"",credential:{},RegistrationSteps:v,step:v.READY}),methods:{arrayToBase64String:t=>btoa(String.fromCharCode(...t)),start(){return this.step=v.REGISTRATION,f.debug("Starting WebAuthn registration"),(0,o.C)().then(this.getRegistrationData).then(this.register.bind(this)).then((()=>{this.step=v.NAMING})).catch((t=>{f.error(t.name,t.message),this.step=v.READY}))},getRegistrationData:()=>(f.debug("Fetching webauthn registration data"),async function(){const t=(0,h.Jv)("/settings/api/personal/webauthn/registration");return(await p.Ay.get(t)).data}().then((t=>(f.debug(t),t.challenge=Uint8Array.from(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)}(t.challenge),(t=>t.charCodeAt(0))),t.user.id=Uint8Array.from(t.user.id,(t=>t.charCodeAt(0))),t))).catch((e=>{throw f.error("Error getting webauthn registration data from server",e),new Error(t("settings","Server error while trying to add WebAuthn device"))}))),register(t){return f.debug("starting webauthn registration"),navigator.credentials.create({publicKey:t}).then((t=>{this.credential={id:t.id,type:t.type,rawId:this.arrayToBase64String(new Uint8Array(t.rawId)),response:{clientDataJSON:this.arrayToBase64String(new Uint8Array(t.response.clientDataJSON)),attestationObject:this.arrayToBase64String(new Uint8Array(t.response.attestationObject))}}}))},submit(){return this.step=v.PERSIST,(0,o.C)().then(g("confirmed password")).then(this.saveRegistrationData).then(g("registration data saved")).then((()=>this.reset())).then(g("app reset")).catch(f.error.bind(this))},async saveRegistrationData(){try{const t=await async function(t,e){const n=(0,h.Jv)("/settings/api/personal/webauthn/registration");return(await p.Ay.post(n,{name:t,data:e})).data}(this.name,JSON.stringify(this.credential));d.info("new device added",{device:t}),this.$emit("added",t)}catch(e){throw d.error("Error persisting webauthn registration",{error:e}),new Error(t("settings","Server error while trying to complete WebAuthn device registration"))}},reset(){this.name="",this.registrationData={},this.step=v.READY}}};var m=r(85072),A=r.n(m),b=r(97825),w=r.n(b),x=r(77659),_=r.n(x),R=r(55056),I=r.n(R),W=r(10540),S=r.n(W),C=r(41113),O=r.n(C),E=r(81575),B={};B.styleTagTransform=O(),B.setAttributes=I(),B.insert=_().bind(null,"head"),B.domAPI=w(),B.insertStyleElement=S(),A()(E.A,B),E.A&&E.A.locals&&E.A.locals;var N=r(14486);const k=(0,N.A)(y,(function(){var t=this,e=t._self._c;return t.isHttps||t.isLocalhost?e("div",[t.step===t.RegistrationSteps.READY?e("div",[e("NcButton",{attrs:{type:"primary"},on:{click:t.start}},[t._v("\n\t\t\t"+t._s(t.t("settings","Add WebAuthn device"))+"\n\t\t")])],1):t.step===t.RegistrationSteps.REGISTRATION?e("div",{staticClass:"new-webauthn-device"},[e("span",{staticClass:"icon-loading-small webauthn-loading"}),t._v("\n\t\t"+t._s(t.t("settings","Please authorize your WebAuthn device."))+"\n\t")]):t.step===t.RegistrationSteps.NAMING?e("div",{staticClass:"new-webauthn-device"},[e("span",{staticClass:"icon-loading-small webauthn-loading"}),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.name,expression:"name"}],attrs:{type:"text",placeholder:t.t("settings","Name your device")},domProps:{value:t.name},on:{":keyup":function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.submit.apply(null,arguments)},input:function(e){e.target.composing||(t.name=e.target.value)}}}),t._v(" "),e("NcButton",{attrs:{type:"primary"},on:{click:t.submit}},[t._v("\n\t\t\t"+t._s(t.t("settings","Add"))+"\n\t\t")])],1):t.step===t.RegistrationSteps.PERSIST?e("div",{staticClass:"new-webauthn-device"},[e("span",{staticClass:"icon-loading-small webauthn-loading"}),t._v("\n\t\t"+t._s(t.t("settings","Adding your device …"))+"\n\t")]):e("div",[t._v("\n\t\tInvalid registration step. This should not have happened.\n\t")])]):e("div",[t._v("\n\t"+t._s(t.t("settings","Passwordless authentication requires a secure connection."))+"\n")])}),[],!1,null,"14a3490a",null).exports;var T=r(24764);const D={name:"Device",components:{NcActionButton:r(89257).A,NcActions:T.A},props:{name:{type:String,required:!0}}};var P=r(77086),j={};j.styleTagTransform=O(),j.setAttributes=I(),j.insert=_().bind(null,"head"),j.domAPI=w(),j.insertStyleElement=S(),A()(P.A,j),P.A&&P.A.locals&&P.A.locals;const L=(0,N.A)(D,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"webauthn-device"},[e("span",{staticClass:"icon-webauthn-device"}),t._v("\n\t"+t._s(t.name||t.t("settings","Unnamed device"))+"\n\t"),e("NcActions",{attrs:{"force-menu":!0}},[e("NcActionButton",{attrs:{icon:"icon-delete"},on:{click:function(e){return t.$emit("delete")}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Delete"))+"\n\t\t")])],1)],1)}),[],!1,null,"46d7f170",null).exports,F=c()("name"),M={components:{AddDevice:k,Device:L,NcNoteCard:s.A},props:{initialDevices:{type:Array,required:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1},hasPublicKeyCredential:{type:Boolean,default:!1}},data(){return{devices:this.initialDevices}},computed:{sortedDevices(){return F(this.devices)}},methods:{deviceAdded(t){d.debug("adding new device to the list ".concat(t.id)),this.devices.push(t)},async deleteDevice(t){d.info("deleting webauthn device ".concat(t)),await(0,o.C)(),await async function(t){const e=(0,h.Jv)("/settings/api/personal/webauthn/registration/".concat(t));await p.Ay.delete(e)}(t),this.devices=this.devices.filter((e=>e.id!==t)),d.info("webauthn device ".concat(t," removed successfully"))}}},U=(0,N.A)(M,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"section",attrs:{id:"security-webauthn"}},[e("h2",[t._v(t._s(t.t("settings","Passwordless Authentication")))]),t._v(" "),e("p",{staticClass:"settings-hint hidden-when-empty"},[t._v("\n\t\t"+t._s(t.t("settings","Set up your account for passwordless authentication following the FIDO2 standard."))+"\n\t")]),t._v(" "),0===t.devices.length?e("NcNoteCard",{attrs:{type:"info"}},[t._v("\n\t\t"+t._s(t.t("settings","No devices configured."))+"\n\t")]):e("h3",[t._v("\n\t\t"+t._s(t.t("settings","The following devices are configured for your account:"))+"\n\t")]),t._v(" "),t._l(t.sortedDevices,(function(n){return e("Device",{key:n.id,attrs:{name:n.name},on:{delete:function(e){return t.deleteDevice(n.id)}}})})),t._v(" "),t.hasPublicKeyCredential?t._e():e("NcNoteCard",{attrs:{type:"warning"}},[t._v("\n\t\t"+t._s(t.t("settings","Your browser does not support WebAuthn."))+"\n\t")]),t._v(" "),t.hasPublicKeyCredential?e("AddDevice",{attrs:{"is-https":t.isHttps,"is-localhost":t.isLocalhost},on:{added:t.deviceAdded}}):t._e()],2)}),[],!1,null,"71aa9ded",null).exports;r.nc=btoa(OC.requestToken),i.Ay.prototype.t=t,new(i.Ay.extend(U))({propsData:{initialDevices:(0,a.C)("settings","webauthn-devices"),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hasPublicKeyCredential:void 0!==window.PublicKeyCredential}}).$mount("#security-webauthn")},81575:(t,e,n)=>{"use strict";n.d(e,{A:()=>s});var r=n(71354),i=n.n(r),a=n(76314),o=n.n(a)()(i());o.push([t.id,"\n.webauthn-loading[data-v-14a3490a] {\n\tdisplay: inline-block;\n\tvertical-align: sub;\n\tmargin-left: 2px;\n\tmargin-right: 2px;\n}\n.new-webauthn-device[data-v-14a3490a] {\n\tline-height: 300%;\n}\n","",{version:3,sources:["webpack://./apps/settings/src/components/WebAuthn/AddDevice.vue"],names:[],mappings:";AAmOA;CACA,qBAAA;CACA,mBAAA;CACA,gBAAA;CACA,iBAAA;AACA;AAEA;CACA,iBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @author Roeland Jago Douma <roeland@famdouma.nl>\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 <http://www.gnu.org/licenses/>.\n --\x3e\n\n<template>\n\t<div v-if=\"!isHttps && !isLocalhost\">\n\t\t{{ t('settings', 'Passwordless authentication requires a secure connection.') }}\n\t</div>\n\t<div v-else>\n\t\t<div v-if=\"step === RegistrationSteps.READY\">\n\t\t\t<NcButton @click=\"start\" type=\"primary\">\n\t\t\t\t{{ t('settings', 'Add WebAuthn device') }}\n\t\t\t</NcButton>\n\t\t</div>\n\n\t\t<div v-else-if=\"step === RegistrationSteps.REGISTRATION\"\n\t\t\tclass=\"new-webauthn-device\">\n\t\t\t<span class=\"icon-loading-small webauthn-loading\" />\n\t\t\t{{ t('settings', 'Please authorize your WebAuthn device.') }}\n\t\t</div>\n\n\t\t<div v-else-if=\"step === RegistrationSteps.NAMING\"\n\t\t\tclass=\"new-webauthn-device\">\n\t\t\t<span class=\"icon-loading-small webauthn-loading\" />\n\t\t\t<input v-model=\"name\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t:placeholder=\"t('settings', 'Name your device')\"\n\t\t\t\t@:keyup.enter=\"submit\">\n\t\t\t<NcButton @click=\"submit\" type=\"primary\">\n\t\t\t\t{{ t('settings', 'Add') }}\n\t\t\t</NcButton>\n\t\t</div>\n\n\t\t<div v-else-if=\"step === RegistrationSteps.PERSIST\"\n\t\t\tclass=\"new-webauthn-device\">\n\t\t\t<span class=\"icon-loading-small webauthn-loading\" />\n\t\t\t{{ t('settings', 'Adding your device …') }}\n\t\t</div>\n\n\t\t<div v-else>\n\t\t\tInvalid registration step. This should not have happened.\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nimport logger from '../../logger.js'\nimport {\n\tstartRegistration,\n\tfinishRegistration,\n} from '../../service/WebAuthnRegistrationSerice.js'\n\nconst logAndPass = (text) => (data) => {\n\tlogger.debug(text)\n\treturn data\n}\n\nconst RegistrationSteps = Object.freeze({\n\tREADY: 1,\n\tREGISTRATION: 2,\n\tNAMING: 3,\n\tPERSIST: 4,\n})\n\nexport default {\n\tname: 'AddDevice',\n\n\tcomponents: {\n\t\tNcButton,\n\t},\n\n\tprops: {\n\t\thttpWarning: Boolean,\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tname: '',\n\t\t\tcredential: {},\n\t\t\tRegistrationSteps,\n\t\t\tstep: RegistrationSteps.READY,\n\t\t}\n\t},\n\tmethods: {\n\t\tarrayToBase64String(a) {\n\t\t\treturn btoa(String.fromCharCode(...a))\n\t\t},\n\t\tstart() {\n\t\t\tthis.step = RegistrationSteps.REGISTRATION\n\t\t\tconsole.debug('Starting WebAuthn registration')\n\n\t\t\treturn confirmPassword()\n\t\t\t\t.then(this.getRegistrationData)\n\t\t\t\t.then(this.register.bind(this))\n\t\t\t\t.then(() => { this.step = RegistrationSteps.NAMING })\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error(err.name, err.message)\n\t\t\t\t\tthis.step = RegistrationSteps.READY\n\t\t\t\t})\n\t\t},\n\n\t\tgetRegistrationData() {\n\t\t\tconsole.debug('Fetching webauthn registration data')\n\n\t\t\tconst base64urlDecode = function(input) {\n\t\t\t\t// Replace non-url compatible chars with base64 standard chars\n\t\t\t\tinput = input\n\t\t\t\t\t.replace(/-/g, '+')\n\t\t\t\t\t.replace(/_/g, '/')\n\n\t\t\t\t// Pad out with standard base64 required padding characters\n\t\t\t\tconst pad = input.length % 4\n\t\t\t\tif (pad) {\n\t\t\t\t\tif (pad === 1) {\n\t\t\t\t\t\tthrow new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding')\n\t\t\t\t\t}\n\t\t\t\t\tinput += new Array(5 - pad).join('=')\n\t\t\t\t}\n\n\t\t\t\treturn window.atob(input)\n\t\t\t}\n\n\t\t\treturn startRegistration()\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\tpublicKey.challenge = Uint8Array.from(base64urlDecode(publicKey.challenge), c => c.charCodeAt(0))\n\t\t\t\t\tpublicKey.user.id = Uint8Array.from(publicKey.user.id, c => c.charCodeAt(0))\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error('Error getting webauthn registration data from server', err)\n\t\t\t\t\tthrow new Error(t('settings', 'Server error while trying to add WebAuthn device'))\n\t\t\t\t})\n\t\t},\n\n\t\tregister(publicKey) {\n\t\t\tconsole.debug('starting webauthn registration')\n\n\t\t\treturn navigator.credentials.create({ publicKey })\n\t\t\t\t.then(data => {\n\t\t\t\t\tthis.credential = {\n\t\t\t\t\t\tid: data.id,\n\t\t\t\t\t\ttype: data.type,\n\t\t\t\t\t\trawId: this.arrayToBase64String(new Uint8Array(data.rawId)),\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tclientDataJSON: this.arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),\n\t\t\t\t\t\t\tattestationObject: this.arrayToBase64String(new Uint8Array(data.response.attestationObject)),\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t},\n\n\t\tsubmit() {\n\t\t\tthis.step = RegistrationSteps.PERSIST\n\n\t\t\treturn confirmPassword()\n\t\t\t\t.then(logAndPass('confirmed password'))\n\t\t\t\t.then(this.saveRegistrationData)\n\t\t\t\t.then(logAndPass('registration data saved'))\n\t\t\t\t.then(() => this.reset())\n\t\t\t\t.then(logAndPass('app reset'))\n\t\t\t\t.catch(console.error.bind(this))\n\t\t},\n\n\t\tasync saveRegistrationData() {\n\t\t\ttry {\n\t\t\t\tconst device = await finishRegistration(this.name, JSON.stringify(this.credential))\n\n\t\t\t\tlogger.info('new device added', { device })\n\n\t\t\t\tthis.$emit('added', device)\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error('Error persisting webauthn registration', { error: err })\n\t\t\t\tthrow new Error(t('settings', 'Server error while trying to complete WebAuthn device registration'))\n\t\t\t}\n\t\t},\n\n\t\treset() {\n\t\t\tthis.name = ''\n\t\t\tthis.registrationData = {}\n\t\t\tthis.step = RegistrationSteps.READY\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.webauthn-loading {\n\t\tdisplay: inline-block;\n\t\tvertical-align: sub;\n\t\tmargin-left: 2px;\n\t\tmargin-right: 2px;\n\t}\n\n\t.new-webauthn-device {\n\t\tline-height: 300%;\n\t}\n</style>\n"],sourceRoot:""}]);const s=o},77086:(t,e,n)=>{"use strict";n.d(e,{A:()=>s});var r=n(71354),i=n.n(r),a=n(76314),o=n.n(a)()(i());o.push([t.id,"\n.webauthn-device[data-v-46d7f170] {\n\tline-height: 300%;\n\tdisplay: flex;\n}\n.icon-webauthn-device[data-v-46d7f170] {\n\tdisplay: inline-block;\n\tbackground-size: 100%;\n\tpadding: 3px;\n\tmargin: 3px;\n}\n","",{version:3,sources:["webpack://./apps/settings/src/components/WebAuthn/Device.vue"],names:[],mappings:";AAkEA;CACA,iBAAA;CACA,aAAA;AACA;AAEA;CACA,qBAAA;CACA,qBAAA;CACA,YAAA;CACA,WAAA;AACA",sourcesContent:["\x3c!--\n - @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\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 <http://www.gnu.org/licenses/>.\n --\x3e\n\n<template>\n\t<div class=\"webauthn-device\">\n\t\t<span class=\"icon-webauthn-device\" />\n\t\t{{ name || t('settings', 'Unnamed device') }}\n\t\t<NcActions :force-menu=\"true\">\n\t\t\t<NcActionButton icon=\"icon-delete\" @click=\"$emit('delete')\">\n\t\t\t\t{{ t('settings', 'Delete') }}\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\t</div>\n</template>\n\n<script>\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\n\nexport default {\n\tname: 'Device',\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActions,\n\t},\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.webauthn-device {\n\t\tline-height: 300%;\n\t\tdisplay: flex;\n\t}\n\n\t.icon-webauthn-device {\n\t\tdisplay: inline-block;\n\t\tbackground-size: 100%;\n\t\tpadding: 3px;\n\t\tmargin: 3px;\n\t}\n</style>\n"],sourceRoot:""}]);const s=o},30980:(t,e,n)=>{var r=n(39344),i=n(94033);function a(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}a.prototype=r(i.prototype),a.prototype.constructor=a,t.exports=a},56017:(t,e,n)=>{var r=n(39344),i=n(94033);function a(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=void 0}a.prototype=r(i.prototype),a.prototype.constructor=a,t.exports=a},80909:(t,e,n)=>{var r=n(30641),i=n(38329)(r);t.exports=i},83120:(t,e,n)=>{var r=n(14528),i=n(45891);t.exports=function t(e,n,a,o,s){var l=-1,c=e.length;for(a||(a=i),s||(s=[]);++l<c;){var u=e[l];n>0&&a(u)?n>1?t(u,n-1,a,o,s):r(s,u):o||(s[s.length]=u)}return s}},30641:(t,e,n)=>{var r=n(86649),i=n(95950);t.exports=function(t,e){return t&&r(t,e,i)}},94033:t=>{t.exports=function(){}},5128:(t,e,n)=>{var r=n(80909),i=n(64894);t.exports=function(t,e){var n=-1,a=i(t)?Array(t.length):[];return r(t,(function(t,r,i){a[++n]=e(t,r,i)})),a}},46155:(t,e,n)=>{var r=n(34932),i=n(47422),a=n(15389),o=n(5128),s=n(73937),l=n(27301),c=n(43714),u=n(83488),d=n(56449);t.exports=function(t,e,n){e=e.length?r(e,(function(t){return d(t)?function(e){return i(e,1===t.length?t[0]:t)}:t})):[u];var p=-1;e=r(e,l(a));var h=o(t,(function(t,n,i){return{criteria:r(e,(function(e){return e(t)})),index:++p,value:t}}));return s(h,(function(t,e){return c(t,e,n)}))}},68882:(t,e,n)=>{var r=n(83488),i=n(48152),a=i?function(t,e){return i.set(t,e),t}:r;t.exports=a},73937:t=>{t.exports=function(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}},53730:(t,e,n)=>{var r=n(44394);t.exports=function(t,e){if(t!==e){var n=void 0!==t,i=null===t,a=t==t,o=r(t),s=void 0!==e,l=null===e,c=e==e,u=r(e);if(!l&&!u&&!o&&t>e||o&&s&&c&&!l&&!u||i&&s&&c||!n&&c||!a)return 1;if(!i&&!o&&!u&&t<e||u&&n&&a&&!i&&!o||l&&n&&a||!s&&a||!c)return-1}return 0}},43714:(t,e,n)=>{var r=n(53730);t.exports=function(t,e,n){for(var i=-1,a=t.criteria,o=e.criteria,s=a.length,l=n.length;++i<s;){var c=r(a[i],o[i]);if(c)return i>=l?c:c*("desc"==n[i]?-1:1)}return t.index-e.index}},91596:t=>{var e=Math.max;t.exports=function(t,n,r,i){for(var a=-1,o=t.length,s=r.length,l=-1,c=n.length,u=e(o-s,0),d=Array(c+u),p=!i;++l<c;)d[l]=n[l];for(;++a<s;)(p||a<o)&&(d[r[a]]=t[a]);for(;u--;)d[l++]=t[a++];return d}},53320:t=>{var e=Math.max;t.exports=function(t,n,r,i){for(var a=-1,o=t.length,s=-1,l=r.length,c=-1,u=n.length,d=e(o-l,0),p=Array(d+u),h=!i;++a<d;)p[a]=t[a];for(var f=a;++c<u;)p[f+c]=n[c];for(;++s<l;)(h||a<o)&&(p[f+r[s]]=t[a++]);return p}},58523:t=>{t.exports=function(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}},38329:(t,e,n)=>{var r=n(64894);t.exports=function(t,e){return function(n,i){if(null==n)return n;if(!r(n))return t(n,i);for(var a=n.length,o=e?a:-1,s=Object(n);(e?o--:++o<a)&&!1!==i(s[o],o,s););return n}}},11842:(t,e,n)=>{var r=n(82819),i=n(9325);t.exports=function(t,e,n){var a=1&e,o=r(t);return function e(){return(this&&this!==i&&this instanceof e?o:t).apply(a?n:this,arguments)}}},82819:(t,e,n)=>{var r=n(39344),i=n(23805);t.exports=function(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=r(t.prototype),a=t.apply(n,e);return i(a)?a:n}}},77078:(t,e,n)=>{var r=n(91033),i=n(82819),a=n(37471),o=n(18073),s=n(11287),l=n(36306),c=n(9325);t.exports=function(t,e,n){var u=i(t);return function i(){for(var d=arguments.length,p=Array(d),h=d,f=s(i);h--;)p[h]=arguments[h];var g=d<3&&p[0]!==f&&p[d-1]!==f?[]:l(p,f);return(d-=g.length)<n?o(t,e,a,i.placeholder,void 0,p,g,void 0,void 0,n-d):r(this&&this!==c&&this instanceof i?u:t,this,p)}}},37471:(t,e,n)=>{var r=n(91596),i=n(53320),a=n(58523),o=n(82819),s=n(18073),l=n(11287),c=n(68294),u=n(36306),d=n(9325);t.exports=function t(e,n,p,h,f,g,v,y,m,A){var b=128&n,w=1&n,x=2&n,_=24&n,R=512&n,I=x?void 0:o(e);return function W(){for(var S=arguments.length,C=Array(S),O=S;O--;)C[O]=arguments[O];if(_)var E=l(W),B=a(C,E);if(h&&(C=r(C,h,f,_)),g&&(C=i(C,g,v,_)),S-=B,_&&S<A){var N=u(C,E);return s(e,n,t,W.placeholder,p,C,N,y,m,A-S)}var k=w?p:this,T=x?k[e]:e;return S=C.length,y?C=c(C,y):R&&S>1&&C.reverse(),b&&m<S&&(C.length=m),this&&this!==d&&this instanceof W&&(T=I||o(T)),T.apply(k,C)}}},24168:(t,e,n)=>{var r=n(91033),i=n(82819),a=n(9325);t.exports=function(t,e,n,o){var s=1&e,l=i(t);return function e(){for(var i=-1,c=arguments.length,u=-1,d=o.length,p=Array(d+c),h=this&&this!==a&&this instanceof e?l:t;++u<d;)p[u]=o[u];for(;c--;)p[u++]=arguments[++i];return r(h,s?n:this,p)}}},18073:(t,e,n)=>{var r=n(85087),i=n(54641),a=n(70981);t.exports=function(t,e,n,o,s,l,c,u,d,p){var h=8&e;e|=h?32:64,4&(e&=~(h?64:32))||(e&=-4);var f=[t,e,s,h?l:void 0,h?c:void 0,h?void 0:l,h?void 0:c,u,d,p],g=n.apply(void 0,f);return r(t)&&i(g,f),g.placeholder=o,a(g,t,e)}},66977:(t,e,n)=>{var r=n(68882),i=n(11842),a=n(77078),o=n(37471),s=n(24168),l=n(37381),c=n(3209),u=n(54641),d=n(70981),p=n(61489),h=Math.max;t.exports=function(t,e,n,f,g,v,y,m){var A=2&e;if(!A&&"function"!=typeof t)throw new TypeError("Expected a function");var b=f?f.length:0;if(b||(e&=-97,f=g=void 0),y=void 0===y?y:h(p(y),0),m=void 0===m?m:p(m),b-=g?g.length:0,64&e){var w=f,x=g;f=g=void 0}var _=A?void 0:l(t),R=[t,e,n,f,g,w,x,v,y,m];if(_&&c(R,_),t=R[0],e=R[1],n=R[2],f=R[3],g=R[4],!(m=R[9]=void 0===R[9]?A?0:t.length:h(R[9]-b,0))&&24&e&&(e&=-25),e&&1!=e)I=8==e||16==e?a(t,e,m):32!=e&&33!=e||g.length?o.apply(void 0,R):s(t,e,n,f);else var I=i(t,e,n);return d((_?r:u)(I,R),t,e)}},38816:(t,e,n)=>{var r=n(35970),i=n(56757),a=n(32865);t.exports=function(t){return a(i(t,void 0,r),t+"")}},37381:(t,e,n)=>{var r=n(48152),i=n(63950),a=r?function(t){return r.get(t)}:i;t.exports=a},62284:(t,e,n)=>{var r=n(84629),i=Object.prototype.hasOwnProperty;t.exports=function(t){for(var e=t.name+"",n=r[e],a=i.call(r,e)?n.length:0;a--;){var o=n[a],s=o.func;if(null==s||s==t)return o.name}return e}},11287:t=>{t.exports=function(t){return t.placeholder}},75251:t=>{var e=/\{\n\/\* \[wrapped with (.+)\] \*/,n=/,? & /;t.exports=function(t){var r=t.match(e);return r?r[1].split(n):[]}},62060:t=>{var e=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;t.exports=function(t,n){var r=n.length;if(!r)return t;var i=r-1;return n[i]=(r>1?"& ":"")+n[i],n=n.join(r>2?", ":" "),t.replace(e,"{\n/* [wrapped with "+n+"] */\n")}},45891:(t,e,n)=>{var r=n(51873),i=n(72428),a=n(56449),o=r?r.isConcatSpreadable:void 0;t.exports=function(t){return a(t)||i(t)||!!(o&&t&&t[o])}},85087:(t,e,n)=>{var r=n(30980),i=n(37381),a=n(62284),o=n(53758);t.exports=function(t){var e=a(t),n=o[e];if("function"!=typeof n||!(e in r.prototype))return!1;if(t===n)return!0;var s=i(n);return!!s&&t===s[0]}},3209:(t,e,n)=>{var r=n(91596),i=n(53320),a=n(36306),o="__lodash_placeholder__",s=Math.min;t.exports=function(t,e){var n=t[1],l=e[1],c=n|l,u=c<131,d=128==l&&8==n||128==l&&256==n&&t[7].length<=e[8]||384==l&&e[7].length<=e[8]&&8==n;if(!u&&!d)return t;1&l&&(t[2]=e[2],c|=1&n?0:4);var p=e[3];if(p){var h=t[3];t[3]=h?r(h,p,e[4]):p,t[4]=h?a(t[3],o):e[4]}return(p=e[5])&&(h=t[5],t[5]=h?i(h,p,e[6]):p,t[6]=h?a(t[5],o):e[6]),(p=e[7])&&(t[7]=p),128&l&&(t[8]=null==t[8]?e[8]:s(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=c,t}},48152:(t,e,n)=>{var r=n(28303),i=r&&new r;t.exports=i},84629:t=>{t.exports={}},68294:(t,e,n)=>{var r=n(23007),i=n(30361),a=Math.min;t.exports=function(t,e){for(var n=t.length,o=a(e.length,n),s=r(t);o--;){var l=e[o];t[o]=i(l,n)?s[l]:void 0}return t}},36306:t=>{var e="__lodash_placeholder__";t.exports=function(t,n){for(var r=-1,i=t.length,a=0,o=[];++r<i;){var s=t[r];s!==n&&s!==e||(t[r]=e,o[a++]=r)}return o}},54641:(t,e,n)=>{var r=n(68882),i=n(51811)(r);t.exports=i},70981:(t,e,n)=>{var r=n(75251),i=n(62060),a=n(32865),o=n(75948);t.exports=function(t,e,n){var s=e+"";return a(t,i(s,o(r(s),n)))}},75948:(t,e,n)=>{var r=n(83729),i=n(15325),a=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]];t.exports=function(t,e){return r(a,(function(n){var r="_."+n[0];e&n[1]&&!i(t,r)&&t.push(r)})),t.sort()}},80257:(t,e,n)=>{var r=n(30980),i=n(56017),a=n(23007);t.exports=function(t){if(t instanceof r)return t.clone();var e=new i(t.__wrapped__,t.__chain__);return e.__actions__=a(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}},64626:(t,e,n)=>{var r=n(66977);t.exports=function(t,e,n){return e=n?void 0:e,e=t&&null==e?t.length:e,r(t,128,void 0,void 0,void 0,void 0,e)}},49747:(t,e,n)=>{var r=n(66977);function i(t,e,n){var a=r(t,8,void 0,void 0,void 0,void 0,void 0,e=n?void 0:e);return a.placeholder=i.placeholder,a}i.placeholder={},t.exports=i},35970:(t,e,n)=>{var r=n(83120);t.exports=function(t){return null!=t&&t.length?r(t,1):[]}},73424:(t,e,n)=>{var r=n(16962),i=n(2874),a=Array.prototype.push;function o(t,e){return 2==e?function(e,n){return t(e,n)}:function(e){return t(e)}}function s(t){for(var e=t?t.length:0,n=Array(e);e--;)n[e]=t[e];return n}function l(t,e){return function(){var n=arguments.length;if(n){for(var r=Array(n);n--;)r[n]=arguments[n];var i=r[0]=e.apply(void 0,r);return t.apply(void 0,r),i}}}t.exports=function t(e,n,c,u){var d="function"==typeof n,p=n===Object(n);if(p&&(u=c,c=n,n=void 0),null==c)throw new TypeError;u||(u={});var h={cap:!("cap"in u)||u.cap,curry:!("curry"in u)||u.curry,fixed:!("fixed"in u)||u.fixed,immutable:!("immutable"in u)||u.immutable,rearg:!("rearg"in u)||u.rearg},f=d?c:i,g="curry"in u&&u.curry,v="fixed"in u&&u.fixed,y="rearg"in u&&u.rearg,m=d?c.runInContext():void 0,A=d?c:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},b=A.ary,w=A.assign,x=A.clone,_=A.curry,R=A.forEach,I=A.isArray,W=A.isError,S=A.isFunction,C=A.isWeakMap,O=A.keys,E=A.rearg,B=A.toInteger,N=A.toPath,k=O(r.aryMethod),T={castArray:function(t){return function(){var e=arguments[0];return I(e)?t(s(e)):t.apply(void 0,arguments)}},iteratee:function(t){return function(){var e=arguments[1],n=t(arguments[0],e),r=n.length;return h.cap&&"number"==typeof e?(e=e>2?e-2:1,r&&r<=e?n:o(n,e)):n}},mixin:function(t){return function(e){var n=this;if(!S(n))return t(n,Object(e));var r=[];return R(O(e),(function(t){S(e[t])&&r.push([t,n.prototype[t]])})),t(n,Object(e)),R(r,(function(t){var e=t[1];S(e)?n.prototype[t[0]]=e:delete n.prototype[t[0]]})),n}},nthArg:function(t){return function(e){var n=e<0?1:B(e)+1;return _(t(e),n)}},rearg:function(t){return function(e,n){var r=n?n.length:0;return _(t(e,n),r)}},runInContext:function(n){return function(r){return t(e,n(r),u)}}};function D(t,e,n){if(h.fixed&&(v||!r.skipFixed[t])){var i=r.methodSpread[t],o=i&&i.start;return void 0===o?b(e,n):function(t,e){return function(){for(var n=arguments.length,r=n-1,i=Array(n);n--;)i[n]=arguments[n];var o=i[e],s=i.slice(0,e);return o&&a.apply(s,o),e!=r&&a.apply(s,i.slice(e+1)),t.apply(this,s)}}(e,o)}return e}function P(t,e,n){return h.rearg&&n>1&&(y||!r.skipRearg[t])?E(e,r.methodRearg[t]||r.aryRearg[n]):e}function j(t,e){for(var n=-1,r=(e=N(e)).length,i=r-1,a=x(Object(t)),o=a;null!=o&&++n<r;){var s=e[n],l=o[s];null==l||S(l)||W(l)||C(l)||(o[s]=x(n==i?l:Object(l))),o=o[s]}return a}function L(e,n){var i=r.aliasToReal[e]||e,a=r.remap[i]||i,o=u;return function(e){var r=d?m:A,s=d?m[a]:n,l=w(w({},o),e);return t(r,i,s,l)}}function F(t,e){return function(){var n=arguments.length;if(!n)return t();for(var r=Array(n);n--;)r[n]=arguments[n];var i=h.rearg?0:n-1;return r[i]=e(r[i]),t.apply(void 0,r)}}function M(t,e,n){var i,a=r.aliasToReal[t]||t,c=e,u=T[a];return u?c=u(e):h.immutable&&(r.mutate.array[a]?c=l(e,s):r.mutate.object[a]?c=l(e,function(t){return function(e){return t({},e)}}(e)):r.mutate.set[a]&&(c=l(e,j))),R(k,(function(t){return R(r.aryMethod[t],(function(e){if(a==e){var n=r.methodSpread[a],s=n&&n.afterRearg;return i=s?D(a,P(a,c,t),t):P(a,D(a,c,t),t),i=function(t,e,n){return g||h.curry&&n>1?_(e,n):e}(0,i=function(t,e){if(h.cap){var n=r.iterateeRearg[t];if(n)return function(t,e){return F(t,(function(t){var n=e.length;return function(t,e){return 2==e?function(e,n){return t.apply(void 0,arguments)}:function(e){return t.apply(void 0,arguments)}}(E(o(t,n),e),n)}))}(e,n);var i=!d&&r.iterateeAry[t];if(i)return function(t,e){return F(t,(function(t){return"function"==typeof t?o(t,e):t}))}(e,i)}return e}(a,i),t),!1}})),!i})),i||(i=c),i==e&&(i=g?_(i,1):function(){return e.apply(this,arguments)}),i.convert=L(a,e),i.placeholder=e.placeholder=n,i}if(!p)return M(n,c,f);var U=c,G=[];return R(k,(function(t){R(r.aryMethod[t],(function(t){var e=U[r.remap[t]||t];e&&G.push([t,M(t,e,U)])}))})),R(O(U),(function(t){var e=U[t];if("function"==typeof e){for(var n=G.length;n--;)if(G[n][0]==t)return;e.convert=L(t,e),G.push([t,e])}})),R(G,(function(t){U[t[0]]=t[1]})),U.convert=function(t){return U.runInContext.convert(t)(void 0)},U.placeholder=U,R(O(U),(function(t){R(r.realToAlias[t]||[],(function(e){U[e]=U[t]}))})),U}},16962:(t,e)=>{e.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},e.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]},e.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},e.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},e.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},e.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},e.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},e.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},e.realToAlias=function(){var t=Object.prototype.hasOwnProperty,n=e.aliasToReal,r={};for(var i in n){var a=n[i];t.call(r,a)?r[a].push(i):r[a]=[i]}return r}(),e.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"},e.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},e.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},47934:(t,e,n)=>{t.exports={ary:n(64626),assign:n(74733),clone:n(32629),curry:n(49747),forEach:n(83729),isArray:n(56449),isError:n(23546),isFunction:n(1882),isWeakMap:n(47886),iteratee:n(33855),keys:n(88984),rearg:n(84195),toInteger:n(61489),toPath:n(42072)}},79920:(t,e,n)=>{var r=n(73424),i=n(47934);t.exports=function(t,e,n){return r(i,t,e,n)}},2874:t=>{t.exports={}},10854:(t,e,n)=>{var r=n(79920)("sortBy",n(33031));r.placeholder=n(2874),t.exports=r},23546:(t,e,n)=>{var r=n(72552),i=n(40346),a=n(11331);t.exports=function(t){if(!i(t))return!1;var e=r(t);return"[object Error]"==e||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!a(t)}},47886:(t,e,n)=>{var r=n(5861),i=n(40346);t.exports=function(t){return i(t)&&"[object WeakMap]"==r(t)}},33855:(t,e,n)=>{var r=n(9999),i=n(15389);t.exports=function(t){return i("function"==typeof t?t:r(t,1))}},84195:(t,e,n)=>{var r=n(66977),i=n(38816)((function(t,e){return r(t,256,void 0,void 0,void 0,e)}));t.exports=i},33031:(t,e,n)=>{var r=n(83120),i=n(46155),a=n(69302),o=n(36800),s=a((function(t,e){if(null==t)return[];var n=e.length;return n>1&&o(t,e[0],e[1])?e=[]:n>2&&o(e[0],e[1],e[2])&&(e=[e[0]]),i(t,r(e,1),[])}));t.exports=s},17400:(t,e,n)=>{var r=n(99374),i=1/0;t.exports=function(t){return t?(t=r(t))===i||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}},61489:(t,e,n)=>{var r=n(17400);t.exports=function(t){var e=r(t),n=e%1;return e==e?n?e-n:e:0}},42072:(t,e,n)=>{var r=n(34932),i=n(23007),a=n(56449),o=n(44394),s=n(61802),l=n(77797),c=n(13222);t.exports=function(t){return a(t)?r(t,l):o(t)?[t]:i(s(c(t)))}},53758:(t,e,n)=>{var r=n(30980),i=n(56017),a=n(94033),o=n(56449),s=n(40346),l=n(80257),c=Object.prototype.hasOwnProperty;function u(t){if(s(t)&&!o(t)&&!(t instanceof r)){if(t instanceof i)return t;if(c.call(t,"__wrapped__"))return l(t)}return new i(t)}u.prototype=a.prototype,u.prototype.constructor=u,t.exports=u}},r={};function i(t){var e=r[t];if(void 0!==e)return e.exports;var a=r[t]={id:t,loaded:!1,exports:{}};return n[t].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=n,e=[],i.O=(t,n,r,a)=>{if(!n){var o=1/0;for(u=0;u<e.length;u++){n=e[u][0],r=e[u][1],a=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&a||o>=a)&&Object.keys(i.O).every((t=>i.O[t](n[l])))?n.splice(l--,1):(s=!1,a<o&&(o=a));if(s){e.splice(u--,1);var c=r();void 0!==c&&(t=c)}}return t}a=a||0;for(var u=e.length;u>0&&e[u-1][2]>a;u--)e[u]=e[u-1];e[u]=[n,r,a]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.e=()=>Promise.resolve(),i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=9255,(()=>{i.b=document.baseURI||self.location.href;var t={9255:0};i.O.j=e=>0===t[e];var e=(e,n)=>{var r,a,o=n[0],s=n[1],l=n[2],c=0;if(o.some((e=>0!==t[e]))){for(r in s)i.o(s,r)&&(i.m[r]=s[r]);if(l)var u=l(i)}for(e&&e(n);c<o.length;c++)a=o[c],i.o(t,a)&&t[a]&&t[a][0](),t[a]=0;return i.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),i.nc=void 0;var a=i.O(void 0,[4208],(()=>i(83441)));a=i.O(a)})();
  3. //# sourceMappingURL=settings-vue-settings-personal-webauthn.js.map?v=80303d58f491235b471e