diff --git a/build/frontend-legacy/package-lock.json b/build/frontend-legacy/package-lock.json index 7eecfc55f740b..7e6be94a3af52 100644 --- a/build/frontend-legacy/package-lock.json +++ b/build/frontend-legacy/package-lock.json @@ -59,7 +59,7 @@ "marked": "^16.3.0", "moment": "^2.30.1", "moment-timezone": "^0.6.0", - "p-limit": "^7.1.1", + "p-limit": "^7.2.0", "p-queue": "^9.0.0", "path": "^0.12.7", "pinia": "^2.3.1", @@ -13869,10 +13869,9 @@ } }, "node_modules/p-limit": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-7.1.1.tgz", - "integrity": "sha512-i8PyM2JnsNChVSYWLr2BAjNoLi0BAYC+wecOnZnVV+YSNJkzP7cWmvI34dk0WArWfH9KwBHNoZI3P3MppImlIA==", - "license": "MIT", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-7.2.0.tgz", + "integrity": "sha512-ATHLtwoTNDloHRFFxFJdHnG6n2WUeFjaR8XQMFdKIv0xkXjrER8/iG9iu265jOM95zXHAfv9oTkqhrfbIzosrQ==", "dependencies": { "yocto-queue": "^1.2.1" }, diff --git a/build/frontend-legacy/package.json b/build/frontend-legacy/package.json index 77918cdd146d0..1f418c6573a98 100644 --- a/build/frontend-legacy/package.json +++ b/build/frontend-legacy/package.json @@ -75,7 +75,7 @@ "marked": "^16.3.0", "moment": "^2.30.1", "moment-timezone": "^0.6.0", - "p-limit": "^7.1.1", + "p-limit": "^7.2.0", "p-queue": "^9.0.0", "path": "^0.12.7", "pinia": "^2.3.1", diff --git a/dist/core-recommendedapps.js b/dist/core-recommendedapps.js index 2531c74053f00..55aba6520d8ea 100644 --- a/dist/core-recommendedapps.js +++ b/dist/core-recommendedapps.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e,t={45919:(e,t,n)=>{var i=n(21777),o=n(53334),a=n(85471),r=n(19051),s=n(81222),c=n(63814);function d(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}function p(e,t,n){return e.set(u(e,t),n),n}function l(e,t){return e.get(u(e,t))}function u(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function h(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class m{constructor(e){h(this,"value",void 0),h(this,"next",void 0),this.value=e}}var A=new WeakMap,g=new WeakMap,v=new WeakMap;class f{constructor(){d(this,A,void 0),d(this,g,void 0),d(this,v,void 0),this.clear()}enqueue(e){var t;const n=new m(e);l(A,this)?(l(g,this).next=n,p(g,this,n)):(p(A,this,n),p(g,this,n)),p(v,this,(t=l(v,this),++t))}dequeue(){var e;const t=l(A,this);if(t)return p(A,this,l(A,this).next),p(v,this,(e=l(v,this),--e)),t.value}peek(){if(l(A,this))return l(A,this).value}clear(){p(A,this,void 0),p(g,this,void 0),p(v,this,0)}get size(){return l(v,this)}*[Symbol.iterator](){let e=l(A,this);for(;e;)yield e.value,e=e.next}*drain(){for(;l(A,this);)yield this.dequeue()}}function C(e){b(e);const t=new f;let n=0;const i=()=>{n0&&(n++,t.dequeue()())},o=async(e,t,o)=>{const a=(async()=>e(...o))();t(a);try{await a}catch{}n--,i()},a=(a,...r)=>new Promise(s=>{((a,r,s)=>{new Promise(e=>{t.enqueue(e)}).then(o.bind(void 0,a,r,s)),nn},pendingCount:{get:()=>t.size},clearQueue:{value(){t.clear()}},concurrency:{get:()=>e,set(o){b(o),e=o,queueMicrotask(()=>{for(;n0;)i()})}},map:{async value(e,t){const n=e.map((e,n)=>this(t,e,n));return Promise.all(n)}}}),a}function b(e){if(!Number.isInteger(e)&&e!==Number.POSITIVE_INFINITY||!(e>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up")}var y=n(74095),w=n(32073),x=n(35947);const _=null===(k=(0,i.HW)())?(0,x.YK)().setApp("core").build():(0,x.YK)().setApp("core").setUid(k.uid).build();var k;(0,x.YK)().setApp("unified-search").detectUser().build();const S={calendar:{description:(0,o.t)("core","Schedule work & meetings, synced with all your devices."),icon:(0,c.d0)("core","places/calendar.svg")},contacts:{description:(0,o.t)("core","Keep your colleagues and friends in one place without leaking their private info."),icon:(0,c.d0)("core","places/contacts.svg")},mail:{description:(0,o.t)("core","Simple email app nicely integrated with Files, Contacts and Calendar."),icon:(0,c.d0)("core","actions/mail.svg")},spreed:{description:(0,o.t)("core","Chatting, video calls, screen sharing, online meetings and web conferencing – in your browser and with mobile apps."),icon:(0,c.d0)("core","apps/spreed.svg")},richdocuments:{name:"Nextcloud Office",description:(0,o.t)("core","Collaborative documents, spreadsheets and presentations, built on Collabora Online."),icon:(0,c.d0)("core","apps/richdocuments.svg")},notes:{description:(0,o.t)("core","Distraction free note taking app."),icon:(0,c.d0)("core","apps/notes.svg")},richdocumentscode:{hidden:!0}},I=Object.keys(S),P={name:"RecommendedApps",components:{NcCheckboxRadioSwitch:w.A,NcButton:y.A},data:()=>({showInstallButton:!1,installingApps:!1,loadingApps:!0,loadingAppsError:!1,apps:[],defaultPageUrl:(0,s.C)("core","defaultPageUrl")}),computed:{recommendedApps(){return this.apps.filter(e=>I.includes(e.id))},isAnyAppSelected(){return this.recommendedApps.some(e=>e.isSelected)}},async mounted(){try{const{data:e}=await r.Ay.get((0,c.Jv)("settings/apps/list"));_.info(`${e.apps.length} apps fetched`),this.apps=e.apps.map(e=>Object.assign(e,{loading:!1,installationError:!1,isSelected:e.isCompatible})),_.debug(`${this.recommendedApps.length} recommended apps found`,{apps:this.recommendedApps}),this.showInstallButton=!0}catch(e){_.error("could not fetch app list",{error:e}),this.loadingAppsError=!0}finally{this.loadingApps=!1}},methods:{installApps(){this.installingApps=!0;const e=C(1),t=this.recommendedApps.filter(e=>!e.active&&e.isCompatible&&e.canInstall&&e.isSelected).map(t=>e(async()=>(_.info(`installing ${t.id}`),t.loading=!0,r.Ay.post((0,c.Jv)("settings/apps/enable"),{appIds:[t.id],groups:[]}).catch(e=>{_.error(`could not install ${t.id}`,{error:e}),t.isSelected=!1,t.installationError=!0}).then(()=>{_.info(`installed ${t.id}`),t.loading=!1,t.active=!0}))));_.debug(`installing ${t.length} recommended apps`),Promise.all(t).then(()=>{_.info("all recommended apps installed, redirecting …"),window.location=this.defaultPageUrl}).catch(e=>_.error("could not install recommended apps",{error:e}))},customIcon:e=>e in S&&S[e].icon?S[e].icon:(_.warn(`no app icon for recommended app ${e}`),(0,c.d0)("core","places/default-app-icon.svg")),customName:e=>e.id in S&&S[e.id].name||e.name,customDescription:e=>e in S?S[e].description:(_.warn(`no app description for recommended app ${e}`),""),isHidden:e=>e in S&&!!S[e].hidden,toggleSelect(e){if(!(e in S)||!this.showInstallButton)return;const t=this.apps.findIndex(t=>t.id===e);this.$set(this.apps[t],"isSelected",!this.apps[t].isSelected)}}};var O=n(85072),j=n.n(O),B=n(97825),E=n.n(B),T=n(77659),N=n.n(T),D=n(55056),$=n.n(D),Y=n(10540),U=n.n(Y),M=n(41113),R=n.n(M),q=n(87116),z={};z.styleTagTransform=R(),z.setAttributes=$(),z.insert=N().bind(null,"head"),z.domAPI=E(),z.insertStyleElement=U(),j()(q.A,z),q.A&&q.A.locals&&q.A.locals;const F=(0,n(14486).A)(P,function(){var e=this,t=e._self._c;return t("div",{staticClass:"guest-box",attrs:{"data-cy-setup-recommended-apps":""}},[t("h2",[e._v(e._s(e.t("core","Recommended apps")))]),e._v(" "),e.loadingApps?t("p",{staticClass:"loading text-center"},[e._v("\n\t\t"+e._s(e.t("core","Loading apps …"))+"\n\t")]):e.loadingAppsError?t("p",{staticClass:"loading-error text-center"},[e._v("\n\t\t"+e._s(e.t("core","Could not fetch list of apps from the App Store."))+"\n\t")]):e._e(),e._v(" "),e._l(e.recommendedApps,function(n){return t("div",{key:n.id,staticClass:"app"},[e.isHidden(n.id)?e._e():[t("img",{attrs:{src:e.customIcon(n.id),alt:""}}),e._v(" "),t("div",{staticClass:"info"},[t("h3",[e._v(e._s(e.customName(n)))]),e._v(" "),t("p",{domProps:{textContent:e._s(e.customDescription(n.id))}}),e._v(" "),n.installationError?t("p",[t("strong",[e._v(e._s(e.t("core","App download or installation failed")))])]):n.isCompatible?n.canInstall?e._e():t("p",[t("strong",[e._v(e._s(e.t("core","Cannot install this app")))])]):t("p",[t("strong",[e._v(e._s(e.t("core","Cannot install this app because it is not compatible")))])])]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{checked:n.isSelected||n.active,disabled:!n.isCompatible||n.active,loading:n.loading},on:{"update:checked":function(t){return e.toggleSelect(n.id)}}})]],2)}),e._v(" "),t("div",{staticClass:"dialog-row"},[e.showInstallButton&&!e.installingApps?t("NcButton",{attrs:{"data-cy-setup-recommended-apps-skip":"",href:e.defaultPageUrl,variant:"tertiary"}},[e._v("\n\t\t\t"+e._s(e.t("core","Skip"))+"\n\t\t")]):e._e(),e._v(" "),e.showInstallButton?t("NcButton",{attrs:{"data-cy-setup-recommended-apps-install":"",disabled:e.installingApps||!e.isAnyAppSelected,variant:"primary"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),e.installApps.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.installingApps?e.t("core","Installing apps …"):e.t("core","Install recommended apps"))+"\n\t\t")]):e._e()],1)],2)},[],!1,null,"e825cd68",null).exports;n.nc=(0,i.aV)(),a.Ay.mixin({methods:{t:o.Tl}}),(new(a.Ay.extend(F))).$mount("#recommended-apps"),_.debug("recommended apps view rendered")},87116:(e,t,n)=>{n.d(t,{A:()=>s});var i=n(71354),o=n.n(i),a=n(76314),r=n.n(a)()(o());r.push([e.id,".dialog-row[data-v-e825cd68]{display:flex;justify-content:end;margin-top:8px}p.loading[data-v-e825cd68],p.loading-error[data-v-e825cd68]{height:100px}p[data-v-e825cd68]:last-child{margin-top:10px}.text-center[data-v-e825cd68]{text-align:center}.app[data-v-e825cd68]{display:flex;flex-direction:row}.app img[data-v-e825cd68]{height:50px;width:50px;filter:var(--background-invert-if-dark)}.app img[data-v-e825cd68],.app .info[data-v-e825cd68]{padding:12px}.app .info h3[data-v-e825cd68],.app .info p[data-v-e825cd68]{text-align:start}.app .info h3[data-v-e825cd68]{margin-top:0}.app .checkbox-radio-switch[data-v-e825cd68]{margin-inline-start:auto;padding:0 2px}","",{version:3,sources:["webpack://./core/src/components/setup/RecommendedApps.vue"],names:[],mappings:"AACA,6BACC,YAAA,CACA,mBAAA,CACA,cAAA,CAIA,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,uCAAA,CAGD,sDACC,YAAA,CAIA,6DACC,gBAAA,CAGD,+BACC,YAAA,CAIF,6CACC,wBAAA,CACA,aAAA",sourcesContent:["\n.dialog-row {\n\tdisplay: flex;\n\tjustify-content: end;\n\tmargin-top: 8px;\n}\n\np {\n\t&.loading,\n\t&.loading-error {\n\t\theight: 100px;\n\t}\n\n\t&:last-child {\n\t\tmargin-top: 10px;\n\t}\n}\n\n.text-center {\n\ttext-align: center;\n}\n\n.app {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\timg {\n\t\theight: 50px;\n\t\twidth: 50px;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\timg, .info {\n\t\tpadding: 12px;\n\t}\n\n\t.info {\n\t\th3, p {\n\t\t\ttext-align: start;\n\t\t}\n\n\t\th3 {\n\t\t\tmargin-top: 0;\n\t\t}\n\t}\n\n\t.checkbox-radio-switch {\n\t\tmargin-inline-start: auto;\n\t\tpadding: 0 2px;\n\t}\n}\n"],sourceRoot:""}]);const s=r}},n={};function i(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=t,e=[],i.O=(t,n,o,a)=>{if(!n){var r=1/0;for(p=0;p=a)&&Object.keys(i.O).every(e=>i.O[e](n[c]))?n.splice(c--,1):(s=!1,a0&&e[p-1][2]>a;p--)e[p]=e[p-1];e[p]=[n,o,a]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.e=()=>Promise.resolve(),i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),i.j=2696,(()=>{i.b="undefined"!=typeof document&&document.baseURI||self.location.href;var e={2696:0};i.O.j=t=>0===e[t];var t=(t,n)=>{var o,a,[r,s,c]=n,d=0;if(r.some(t=>0!==e[t])){for(o in s)i.o(s,o)&&(i.m[o]=s[o]);if(c)var p=c(i)}for(t&&t(n);di(45919));o=i.O(o)})(); -//# sourceMappingURL=core-recommendedapps.js.map?v=bac413b2dacfa52a48f0 \ No newline at end of file +(()=>{"use strict";var e,t={45919:(e,t,n)=>{var i=n(21777),o=n(53334),a=n(85471),r=n(19051),s=n(81222),c=n(63814);function d(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}function p(e,t,n){return e.set(u(e,t),n),n}function l(e,t){return e.get(u(e,t))}function u(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function h(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class m{constructor(e){h(this,"value",void 0),h(this,"next",void 0),this.value=e}}var A=new WeakMap,g=new WeakMap,v=new WeakMap;class f{constructor(){d(this,A,void 0),d(this,g,void 0),d(this,v,void 0),this.clear()}enqueue(e){var t;const n=new m(e);l(A,this)?(l(g,this).next=n,p(g,this,n)):(p(A,this,n),p(g,this,n)),p(v,this,(t=l(v,this),++t))}dequeue(){var e;const t=l(A,this);if(t)return p(A,this,l(A,this).next),p(v,this,(e=l(v,this),--e)),t.value}peek(){if(l(A,this))return l(A,this).value}clear(){p(A,this,void 0),p(g,this,void 0),p(v,this,0)}get size(){return l(v,this)}*[Symbol.iterator](){let e=l(A,this);for(;e;)yield e.value,e=e.next}*drain(){for(;l(A,this);)yield this.dequeue()}}function C(e){b(e);const t=new f;let n=0;const i=()=>{n0&&(n++,t.dequeue()())},o=async(e,t,o)=>{const a=(async()=>e(...o))();t(a);try{await a}catch{}n--,i()},a=(a,...r)=>new Promise(s=>{((a,r,s)=>{new Promise(e=>{t.enqueue(e)}).then(o.bind(void 0,a,r,s)),nn},pendingCount:{get:()=>t.size},clearQueue:{value(){t.clear()}},concurrency:{get:()=>e,set(o){b(o),e=o,queueMicrotask(()=>{for(;n0;)i()})}},map:{async value(e,t){const n=Array.from(e,(e,n)=>this(t,e,n));return Promise.all(n)}}}),a}function b(e){if(!Number.isInteger(e)&&e!==Number.POSITIVE_INFINITY||!(e>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up")}var y=n(74095),w=n(32073),x=n(35947);const _=null===(k=(0,i.HW)())?(0,x.YK)().setApp("core").build():(0,x.YK)().setApp("core").setUid(k.uid).build();var k;(0,x.YK)().setApp("unified-search").detectUser().build();const S={calendar:{description:(0,o.t)("core","Schedule work & meetings, synced with all your devices."),icon:(0,c.d0)("core","places/calendar.svg")},contacts:{description:(0,o.t)("core","Keep your colleagues and friends in one place without leaking their private info."),icon:(0,c.d0)("core","places/contacts.svg")},mail:{description:(0,o.t)("core","Simple email app nicely integrated with Files, Contacts and Calendar."),icon:(0,c.d0)("core","actions/mail.svg")},spreed:{description:(0,o.t)("core","Chatting, video calls, screen sharing, online meetings and web conferencing – in your browser and with mobile apps."),icon:(0,c.d0)("core","apps/spreed.svg")},richdocuments:{name:"Nextcloud Office",description:(0,o.t)("core","Collaborative documents, spreadsheets and presentations, built on Collabora Online."),icon:(0,c.d0)("core","apps/richdocuments.svg")},notes:{description:(0,o.t)("core","Distraction free note taking app."),icon:(0,c.d0)("core","apps/notes.svg")},richdocumentscode:{hidden:!0}},I=Object.keys(S),P={name:"RecommendedApps",components:{NcCheckboxRadioSwitch:w.A,NcButton:y.A},data:()=>({showInstallButton:!1,installingApps:!1,loadingApps:!0,loadingAppsError:!1,apps:[],defaultPageUrl:(0,s.C)("core","defaultPageUrl")}),computed:{recommendedApps(){return this.apps.filter(e=>I.includes(e.id))},isAnyAppSelected(){return this.recommendedApps.some(e=>e.isSelected)}},async mounted(){try{const{data:e}=await r.Ay.get((0,c.Jv)("settings/apps/list"));_.info(`${e.apps.length} apps fetched`),this.apps=e.apps.map(e=>Object.assign(e,{loading:!1,installationError:!1,isSelected:e.isCompatible})),_.debug(`${this.recommendedApps.length} recommended apps found`,{apps:this.recommendedApps}),this.showInstallButton=!0}catch(e){_.error("could not fetch app list",{error:e}),this.loadingAppsError=!0}finally{this.loadingApps=!1}},methods:{installApps(){this.installingApps=!0;const e=C(1),t=this.recommendedApps.filter(e=>!e.active&&e.isCompatible&&e.canInstall&&e.isSelected).map(t=>e(async()=>(_.info(`installing ${t.id}`),t.loading=!0,r.Ay.post((0,c.Jv)("settings/apps/enable"),{appIds:[t.id],groups:[]}).catch(e=>{_.error(`could not install ${t.id}`,{error:e}),t.isSelected=!1,t.installationError=!0}).then(()=>{_.info(`installed ${t.id}`),t.loading=!1,t.active=!0}))));_.debug(`installing ${t.length} recommended apps`),Promise.all(t).then(()=>{_.info("all recommended apps installed, redirecting …"),window.location=this.defaultPageUrl}).catch(e=>_.error("could not install recommended apps",{error:e}))},customIcon:e=>e in S&&S[e].icon?S[e].icon:(_.warn(`no app icon for recommended app ${e}`),(0,c.d0)("core","places/default-app-icon.svg")),customName:e=>e.id in S&&S[e.id].name||e.name,customDescription:e=>e in S?S[e].description:(_.warn(`no app description for recommended app ${e}`),""),isHidden:e=>e in S&&!!S[e].hidden,toggleSelect(e){if(!(e in S)||!this.showInstallButton)return;const t=this.apps.findIndex(t=>t.id===e);this.$set(this.apps[t],"isSelected",!this.apps[t].isSelected)}}};var O=n(85072),j=n.n(O),B=n(97825),E=n.n(B),T=n(77659),N=n.n(T),D=n(55056),$=n.n(D),Y=n(10540),U=n.n(Y),M=n(41113),R=n.n(M),q=n(87116),z={};z.styleTagTransform=R(),z.setAttributes=$(),z.insert=N().bind(null,"head"),z.domAPI=E(),z.insertStyleElement=U(),j()(q.A,z),q.A&&q.A.locals&&q.A.locals;const F=(0,n(14486).A)(P,function(){var e=this,t=e._self._c;return t("div",{staticClass:"guest-box",attrs:{"data-cy-setup-recommended-apps":""}},[t("h2",[e._v(e._s(e.t("core","Recommended apps")))]),e._v(" "),e.loadingApps?t("p",{staticClass:"loading text-center"},[e._v("\n\t\t"+e._s(e.t("core","Loading apps …"))+"\n\t")]):e.loadingAppsError?t("p",{staticClass:"loading-error text-center"},[e._v("\n\t\t"+e._s(e.t("core","Could not fetch list of apps from the App Store."))+"\n\t")]):e._e(),e._v(" "),e._l(e.recommendedApps,function(n){return t("div",{key:n.id,staticClass:"app"},[e.isHidden(n.id)?e._e():[t("img",{attrs:{src:e.customIcon(n.id),alt:""}}),e._v(" "),t("div",{staticClass:"info"},[t("h3",[e._v(e._s(e.customName(n)))]),e._v(" "),t("p",{domProps:{textContent:e._s(e.customDescription(n.id))}}),e._v(" "),n.installationError?t("p",[t("strong",[e._v(e._s(e.t("core","App download or installation failed")))])]):n.isCompatible?n.canInstall?e._e():t("p",[t("strong",[e._v(e._s(e.t("core","Cannot install this app")))])]):t("p",[t("strong",[e._v(e._s(e.t("core","Cannot install this app because it is not compatible")))])])]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{checked:n.isSelected||n.active,disabled:!n.isCompatible||n.active,loading:n.loading},on:{"update:checked":function(t){return e.toggleSelect(n.id)}}})]],2)}),e._v(" "),t("div",{staticClass:"dialog-row"},[e.showInstallButton&&!e.installingApps?t("NcButton",{attrs:{"data-cy-setup-recommended-apps-skip":"",href:e.defaultPageUrl,variant:"tertiary"}},[e._v("\n\t\t\t"+e._s(e.t("core","Skip"))+"\n\t\t")]):e._e(),e._v(" "),e.showInstallButton?t("NcButton",{attrs:{"data-cy-setup-recommended-apps-install":"",disabled:e.installingApps||!e.isAnyAppSelected,variant:"primary"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),e.installApps.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.installingApps?e.t("core","Installing apps …"):e.t("core","Install recommended apps"))+"\n\t\t")]):e._e()],1)],2)},[],!1,null,"e825cd68",null).exports;n.nc=(0,i.aV)(),a.Ay.mixin({methods:{t:o.Tl}}),(new(a.Ay.extend(F))).$mount("#recommended-apps"),_.debug("recommended apps view rendered")},87116:(e,t,n)=>{n.d(t,{A:()=>s});var i=n(71354),o=n.n(i),a=n(76314),r=n.n(a)()(o());r.push([e.id,".dialog-row[data-v-e825cd68]{display:flex;justify-content:end;margin-top:8px}p.loading[data-v-e825cd68],p.loading-error[data-v-e825cd68]{height:100px}p[data-v-e825cd68]:last-child{margin-top:10px}.text-center[data-v-e825cd68]{text-align:center}.app[data-v-e825cd68]{display:flex;flex-direction:row}.app img[data-v-e825cd68]{height:50px;width:50px;filter:var(--background-invert-if-dark)}.app img[data-v-e825cd68],.app .info[data-v-e825cd68]{padding:12px}.app .info h3[data-v-e825cd68],.app .info p[data-v-e825cd68]{text-align:start}.app .info h3[data-v-e825cd68]{margin-top:0}.app .checkbox-radio-switch[data-v-e825cd68]{margin-inline-start:auto;padding:0 2px}","",{version:3,sources:["webpack://./core/src/components/setup/RecommendedApps.vue"],names:[],mappings:"AACA,6BACC,YAAA,CACA,mBAAA,CACA,cAAA,CAIA,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,uCAAA,CAGD,sDACC,YAAA,CAIA,6DACC,gBAAA,CAGD,+BACC,YAAA,CAIF,6CACC,wBAAA,CACA,aAAA",sourcesContent:["\n.dialog-row {\n\tdisplay: flex;\n\tjustify-content: end;\n\tmargin-top: 8px;\n}\n\np {\n\t&.loading,\n\t&.loading-error {\n\t\theight: 100px;\n\t}\n\n\t&:last-child {\n\t\tmargin-top: 10px;\n\t}\n}\n\n.text-center {\n\ttext-align: center;\n}\n\n.app {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\timg {\n\t\theight: 50px;\n\t\twidth: 50px;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\timg, .info {\n\t\tpadding: 12px;\n\t}\n\n\t.info {\n\t\th3, p {\n\t\t\ttext-align: start;\n\t\t}\n\n\t\th3 {\n\t\t\tmargin-top: 0;\n\t\t}\n\t}\n\n\t.checkbox-radio-switch {\n\t\tmargin-inline-start: auto;\n\t\tpadding: 0 2px;\n\t}\n}\n"],sourceRoot:""}]);const s=r}},n={};function i(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=t,e=[],i.O=(t,n,o,a)=>{if(!n){var r=1/0;for(p=0;p=a)&&Object.keys(i.O).every(e=>i.O[e](n[c]))?n.splice(c--,1):(s=!1,a0&&e[p-1][2]>a;p--)e[p]=e[p-1];e[p]=[n,o,a]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.e=()=>Promise.resolve(),i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),i.j=2696,(()=>{i.b="undefined"!=typeof document&&document.baseURI||self.location.href;var e={2696:0};i.O.j=t=>0===e[t];var t=(t,n)=>{var o,a,[r,s,c]=n,d=0;if(r.some(t=>0!==e[t])){for(o in s)i.o(s,o)&&(i.m[o]=s[o]);if(c)var p=c(i)}for(t&&t(n);di(45919));o=i.O(o)})(); +//# sourceMappingURL=core-recommendedapps.js.map?v=af809cbf29640a8ca0b8 \ No newline at end of file diff --git a/dist/core-recommendedapps.js.map b/dist/core-recommendedapps.js.map index 76cc5b7200879..35507cb9dc2d3 100644 --- a/dist/core-recommendedapps.js.map +++ b/dist/core-recommendedapps.js.map @@ -1 +1 @@ -{"version":3,"file":"core-recommendedapps.js?v=bac413b2dacfa52a48f0","mappings":"uBAAIA,E,m3BCKJ,MAAMC,EAILC,WAAAA,CAAYC,GAAOC,EAAA,qBAAAA,EAAA,oBAClBC,KAAKF,MAAQA,CACd,EACA,IAAAG,EAAA,IAAAC,QAAAC,EAAA,IAAAD,QAAAE,EAAA,IAAAF,QAEc,MAAMG,EAKpBR,WAAAA,GAJAS,EAAA,KAAAL,OAAK,GACLK,EAAA,KAAAH,OAAK,GACLG,EAAA,KAAAF,OAAK,GAGJJ,KAAKO,OACN,CAEAC,OAAAA,CAAQV,GAAO,IAAAW,EACd,MAAMC,EAAO,IAAId,EAAKE,GAElBa,EAAKV,EAALD,OACHW,EAAKR,EAALH,MAAWY,KAAOF,EAClBG,EAAKV,EAALH,KAAaU,KAEbG,EAAKZ,EAALD,KAAaU,GACbG,EAAKV,EAALH,KAAaU,IAGdG,EAAKT,EAALJ,MAAIS,EAAJE,EAAKP,EAALJ,QAAUS,GACX,CAEAK,OAAAA,GAAU,IAAAC,EACT,MAAMC,EAAUL,EAAKV,EAALD,MAChB,GAAKgB,EAML,OAFAH,EAAKZ,EAALD,KAAaW,EAAKV,EAALD,MAAWY,MACxBC,EAAKT,EAALJ,MAAIe,EAAJJ,EAAKP,EAALJ,QAAUe,IACHC,EAAQlB,KAChB,CAEAmB,IAAAA,GACC,GAAKN,EAAKV,EAALD,MAIL,OAAOW,EAAKV,EAALD,MAAWF,KAInB,CAEAS,KAAAA,GACCM,EAAKZ,EAALD,UAAakB,GACbL,EAAKV,EAALH,UAAakB,GACbL,EAAKT,EAALJ,KAAa,EACd,CAEA,QAAImB,GACH,OAAOR,EAAKP,EAALJ,KACR,CAEA,EAAGoB,OAAOC,YACT,IAAIL,EAAUL,EAAKV,EAALD,MAEd,KAAOgB,SACAA,EAAQlB,MACdkB,EAAUA,EAAQJ,IAEpB,CAEA,MAAEU,GACD,KAAOX,EAAKV,EAALD,aACAA,KAAKc,SAEb,EChFc,SAASS,EAAOC,GAC9BC,EAAoBD,GAEpB,MAAME,EAAQ,IAAIrB,EAClB,IAAIsB,EAAc,EAElB,MAAMC,EAAaA,KAEdD,EAAcH,GAAeE,EAAMP,KAAO,IAC7CQ,IACAD,EAAMZ,SAANY,KASIG,EAAMC,MAAOC,EAAWC,EAASC,KAEtC,MAAMC,EAAS,UAAaH,KAAaE,GAA1B,GAGfD,EAAQE,GAKR,UACOA,CACP,CAAE,MAAO,CAhBTP,IACAC,KAkCKO,EAAYA,CAACJ,KAAcE,IAAe,IAAIG,QAAQJ,IAb5CxB,EAACuB,EAAWC,EAASC,KAGpC,IAAIG,QAAQC,IACXX,EAAMlB,QAAQ6B,KACZC,KAAKT,EAAIU,UAAKrB,EAAWa,EAAWC,EAASC,IAG5CN,EAAcH,GACjBI,KAKDpB,CAAQuB,EAAWC,EAASC,KAsC7B,OAnCAO,OAAOC,iBAAiBN,EAAW,CAClCR,YAAa,CACZe,IAAKA,IAAMf,GAEZgB,aAAc,CACbD,IAAKA,IAAMhB,EAAMP,MAElByB,WAAY,CACX9C,KAAAA,GACC4B,EAAMnB,OACP,GAEDiB,YAAa,CACZkB,IAAKA,IAAMlB,EAEXqB,GAAAA,CAAIC,GACHrB,EAAoBqB,GACpBtB,EAAcsB,EAEdC,eAAe,KAEd,KAAOpB,EAAcH,GAAeE,EAAMP,KAAO,GAChDS,KAGH,GAEDoB,IAAK,CACJ,WAAMlD,CAAMmD,EAAOlB,GAClB,MAAMmB,EAAWD,EAAMD,IAAI,CAAClD,EAAOqD,IAAUnD,KAAK+B,EAAWjC,EAAOqD,IACpE,OAAOf,QAAQgB,IAAIF,EACpB,KAIKf,CACR,CASA,SAASV,EAAoBD,GAC5B,IAAO6B,OAAOC,UAAU9B,IAAgBA,IAAgB6B,OAAOE,qBAAsB/B,EAAc,GAClG,MAAM,IAAIgC,UAAU,sDAEtB,C,qCCjFA,QAXc,QADKC,GAYMC,EAAAA,EAAAA,QAVhBC,EAAAA,EAAAA,MACLC,OAAO,QACPC,SAEIF,EAAAA,EAAAA,MACLC,OAAO,QACPE,OAAOL,EAAKM,KACZF,QATH,IAAmBJ,GAcgBE,EAAAA,EAAAA,MACjCC,OAAO,kBACPI,aACAH,QAHK,MC4CPI,EAAA,CACAC,SAAA,CACAC,aAAAC,EAAAA,EAAAA,GAAA,kEACAC,MAAAC,EAAAA,EAAAA,IAAA,+BAEAC,SAAA,CACAJ,aAAAC,EAAAA,EAAAA,GAAA,4FACAC,MAAAC,EAAAA,EAAAA,IAAA,+BAEAE,KAAA,CACAL,aAAAC,EAAAA,EAAAA,GAAA,gFACAC,MAAAC,EAAAA,EAAAA,IAAA,4BAEAG,OAAA,CACAN,aAAAC,EAAAA,EAAAA,GAAA,8HACAC,MAAAC,EAAAA,EAAAA,IAAA,2BAEAI,cAAA,CACAC,KAAA,mBACAR,aAAAC,EAAAA,EAAAA,GAAA,8FACAC,MAAAC,EAAAA,EAAAA,IAAA,kCAEAM,MAAA,CACAT,aAAAC,EAAAA,EAAAA,GAAA,4CACAC,MAAAC,EAAAA,EAAAA,IAAA,0BAEAO,kBAAA,CACAC,QAAA,IAGAC,EAAAvC,OAAAwC,KAAAf,GCpG2L,EDsG3L,CACAU,KAAA,kBACAM,WAAA,CACAC,sBAAA,IACAC,SAAAA,EAAAA,GAGAC,KAAAA,KACA,CACAC,mBAAA,EACAC,gBAAA,EACAC,aAAA,EACAC,kBAAA,EACAC,KAAA,GACAC,gBAAAC,EAAAA,EAAAA,GAAA,2BAIAC,SAAA,CACAC,eAAAA,GACA,YAAAJ,KAAAK,OAAAC,GAAAhB,EAAAiB,SAAAD,EAAAE,IACA,EAEAC,gBAAAA,GACA,YAAAL,gBAAAM,KAAAJ,GAAAA,EAAAK,WACA,GAGA,aAAAC,GACA,IACA,WAAAjB,SAAAkB,EAAAA,GAAA5D,KAAA6D,EAAAA,EAAAA,IAAA,uBACAC,EAAAC,KAAA,GAAArB,EAAAK,KAAAiB,uBAEA,KAAAjB,KAAAL,EAAAK,KAAAzC,IAAA+C,GAAAvD,OAAAmE,OAAAZ,EAAA,CAAAa,SAAA,EAAAC,mBAAA,EAAAT,WAAAL,EAAAe,gBACAN,EAAAO,MAAA,QAAAlB,gBAAAa,gCAAA,CAAAjB,KAAA,KAAAI,kBAEA,KAAAR,mBAAA,CACA,OAAA2B,GACAR,EAAAQ,MAAA,4BAAAA,UAEA,KAAAxB,kBAAA,CACA,SACA,KAAAD,aAAA,CACA,CACA,EAEA0B,QAAA,CACAC,WAAAA,GACA,KAAA5B,gBAAA,EAEA,MAAA6B,EAAA5F,EAAA,GACA6F,EAAA,KAAAvB,gBACAC,OAAAC,IAAAA,EAAAsB,QAAAtB,EAAAe,cAAAf,EAAAuB,YAAAvB,EAAAK,YACApD,IAAA+C,GAAAoB,EAAA,UACAX,EAAAC,KAAA,cAAAV,EAAAE,MACAF,EAAAa,SAAA,EACAN,EAAAA,GAAAiB,MAAAhB,EAAAA,EAAAA,IAAA,yBAAAiB,OAAA,CAAAzB,EAAAE,IAAAwB,OAAA,KACAC,MAAAV,IACAR,EAAAQ,MAAA,qBAAAjB,EAAAE,KAAA,CAAAe,UACAjB,EAAAK,YAAA,EACAL,EAAAc,mBAAA,IAEAvE,KAAA,KACAkE,EAAAC,KAAA,aAAAV,EAAAE,MACAF,EAAAa,SAAA,EACAb,EAAAsB,QAAA,OAGAb,EAAAO,MAAA,cAAAK,EAAAV,2BACAtE,QAAAgB,IAAAgE,GACA9E,KAAA,KACAkE,EAAAC,KAAA,iDAEAkB,OAAAC,SAAA,KAAAlC,iBAEAgC,MAAAV,GAAAR,EAAAQ,MAAA,sCAAAA,UACA,EAEAa,WAAAC,GACAA,KAAA7D,GAAAA,EAAA6D,GAAAzD,KAIAJ,EAAA6D,GAAAzD,MAHAmC,EAAAuB,KAAA,mCAAAD,MACAxD,EAAAA,EAAAA,IAAA,uCAKA0D,WAAAjC,GACAA,EAAAE,MAAAhC,GAGAA,EAAA8B,EAAAE,IAAAtB,MAFAoB,EAAApB,KAKAsD,kBAAAH,GACAA,KAAA7D,EAIAA,EAAA6D,GAAA3D,aAHAqC,EAAAuB,KAAA,0CAAAD,KACA,IAKAI,SAAAJ,GACAA,KAAA7D,KAGAA,EAAA6D,GAAAhD,OAGAqD,YAAAA,CAAAL,GAEA,KAAAA,KAAA7D,KAAA,KAAAoB,kBACA,OAEA,MAAAlC,EAAA,KAAAsC,KAAA2C,UAAArC,GAAAA,EAAAE,KAAA6B,GACA,KAAAO,KAAA,KAAA5C,KAAAtC,GAAA,mBAAAsC,KAAAtC,GAAAiD,WACA,I,uIE9MIkC,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IACxBF,EAAQG,OAAS,SAAc,KAAM,QACrCH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,IAAQM,QAAS,IAAQA,OCL1D,SAXgB,E,SAAA,GACd,ECTW,WAAkB,IAAIC,EAAI7I,KAAK8I,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,YAAYC,MAAM,CAAC,iCAAiC,KAAK,CAACH,EAAG,KAAK,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAIzE,EAAE,OAAQ,wBAAwByE,EAAIK,GAAG,KAAML,EAAItD,YAAauD,EAAG,IAAI,CAACE,YAAY,uBAAuB,CAACH,EAAIK,GAAG,SAASL,EAAIM,GAAGN,EAAIzE,EAAE,OAAQ,mBAAmB,UAAWyE,EAAIrD,iBAAkBsD,EAAG,IAAI,CAACE,YAAY,6BAA6B,CAACH,EAAIK,GAAG,SAASL,EAAIM,GAAGN,EAAIzE,EAAE,OAAQ,qDAAqD,UAAUyE,EAAIO,KAAKP,EAAIK,GAAG,KAAKL,EAAIQ,GAAIR,EAAIhD,gBAAiB,SAASE,GAAK,OAAO+C,EAAG,MAAM,CAACQ,IAAIvD,EAAIE,GAAG+C,YAAY,OAAO,CAAGH,EAAIX,SAASnC,EAAIE,IAAs0B4C,EAAIO,KAAr0B,CAACN,EAAG,MAAM,CAACG,MAAM,CAAC,IAAMJ,EAAIhB,WAAW9B,EAAIE,IAAI,IAAM,MAAM4C,EAAIK,GAAG,KAAKJ,EAAG,MAAM,CAACE,YAAY,QAAQ,CAACF,EAAG,KAAK,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAIb,WAAWjC,OAAS8C,EAAIK,GAAG,KAAKJ,EAAG,IAAI,CAACS,SAAS,CAAC,YAAcV,EAAIM,GAAGN,EAAIZ,kBAAkBlC,EAAIE,QAAQ4C,EAAIK,GAAG,KAAMnD,EAAIc,kBAAmBiC,EAAG,IAAI,CAACA,EAAG,SAAS,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAIzE,EAAE,OAAQ,6CAA+C2B,EAAIe,aAA+Hf,EAAIuB,WAA8FuB,EAAIO,KAAtFN,EAAG,IAAI,CAACA,EAAG,SAAS,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAIzE,EAAE,OAAQ,iCAAlL0E,EAAG,IAAI,CAACA,EAAG,SAAS,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAIzE,EAAE,OAAQ,gEAA6KyE,EAAIK,GAAG,KAAKJ,EAAG,wBAAwB,CAACG,MAAM,CAAC,QAAUlD,EAAIK,YAAcL,EAAIsB,OAAO,UAAYtB,EAAIe,cAAgBf,EAAIsB,OAAO,QAAUtB,EAAIa,SAAS4C,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOZ,EAAIV,aAAapC,EAAIE,GAAG,OAAgB,EAAE,GAAG4C,EAAIK,GAAG,KAAKJ,EAAG,MAAM,CAACE,YAAY,cAAc,CAAEH,EAAIxD,oBAAsBwD,EAAIvD,eAAgBwD,EAAG,WAAW,CAACG,MAAM,CAAC,sCAAsC,GAAG,KAAOJ,EAAInD,eAAe,QAAU,aAAa,CAACmD,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIzE,EAAE,OAAQ,SAAS,YAAYyE,EAAIO,KAAKP,EAAIK,GAAG,KAAML,EAAIxD,kBAAmByD,EAAG,WAAW,CAACG,MAAM,CAAC,yCAAyC,GAAG,SAAWJ,EAAIvD,iBAAmBuD,EAAI3C,iBAAiB,QAAU,WAAWsD,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOC,kBAAkBD,EAAOE,iBAAwBd,EAAI3B,YAAY0C,MAAM,KAAMC,UAAU,IAAI,CAAChB,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIvD,eAAiBuD,EAAIzE,EAAE,OAAQ,qBAAuByE,EAAIzE,EAAE,OAAQ,6BAA6B,YAAYyE,EAAIO,MAAM,IAAI,EACjsE,EACsB,IDUpB,EACA,KACA,WACA,M,QEJFU,EAAAA,IAAoBC,EAAAA,EAAAA,MAEpBC,EAAAA,GAAIC,MAAM,CACThD,QAAS,CACR7C,EAACA,EAAAA,OAKH,IADa4F,EAAAA,GAAIE,OAAOC,KACbC,OAAO,qBAElB5D,EAAOO,MAAM,iC,sECnBTsD,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOtE,GAAI,upBAAwpB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6DAA6D,MAAQ,GAAG,SAAW,oOAAoO,eAAiB,CAAC,goBAAgoB,WAAa,MAElrD,S,GCNIuE,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBxJ,IAAjByJ,EACH,OAAOA,EAAaC,QAGrB,IAAIL,EAASC,EAAyBE,GAAY,CACjDzE,GAAIyE,EACJG,QAAQ,EACRD,QAAS,CAAC,GAUX,OANAE,EAAoBJ,GAAUK,KAAKR,EAAOK,QAASL,EAAQA,EAAOK,QAASH,GAG3EF,EAAOM,QAAS,EAGTN,EAAOK,OACf,CAGAH,EAAoBO,EAAIF,EX5BpBnL,EAAW,GACf8K,EAAoBQ,EAAI,CAAC/I,EAAQgJ,EAAUC,EAAIC,KAC9C,IAAGF,EAAH,CAMA,IAAIG,EAAeC,IACnB,IAASC,EAAI,EAAGA,EAAI5L,EAAS+G,OAAQ6E,IAAK,CAGzC,IAFA,IAAKL,EAAUC,EAAIC,GAAYzL,EAAS4L,GACpCC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAASxE,OAAQ+E,MACpB,EAAXL,GAAsBC,GAAgBD,IAAa5I,OAAOwC,KAAKyF,EAAoBQ,GAAGS,MAAOpC,GAASmB,EAAoBQ,EAAE3B,GAAK4B,EAASO,KAC9IP,EAASS,OAAOF,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACb7L,EAASgM,OAAOJ,IAAK,GACrB,IAAIK,EAAIT,SACEjK,IAAN0K,IAAiB1J,EAAS0J,EAC/B,CACD,CACA,OAAO1J,CAnBP,CAJCkJ,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAI5L,EAAS+G,OAAQ6E,EAAI,GAAK5L,EAAS4L,EAAI,GAAG,GAAKH,EAAUG,IAAK5L,EAAS4L,GAAK5L,EAAS4L,EAAI,GACrG5L,EAAS4L,GAAK,CAACL,EAAUC,EAAIC,IYJ/BX,EAAoBoB,EAAKtB,IACxB,IAAIuB,EAASvB,GAAUA,EAAOwB,WAC7B,IAAOxB,EAAiB,QACxB,IAAM,EAEP,OADAE,EAAoBuB,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLRrB,EAAoBuB,EAAI,CAACpB,EAASsB,KACjC,IAAI,IAAI5C,KAAO4C,EACXzB,EAAoB0B,EAAED,EAAY5C,KAASmB,EAAoB0B,EAAEvB,EAAStB,IAC5E9G,OAAO4J,eAAexB,EAAStB,EAAK,CAAE+C,YAAY,EAAM3J,IAAKwJ,EAAW5C,MCD3EmB,EAAoB6B,EAAI,IAAOlK,QAAQJ,UCHvCyI,EAAoB8B,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOxM,MAAQ,IAAIyM,SAAS,cAAb,EAChB,CAAE,MAAOH,GACR,GAAsB,iBAAX3E,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxB8C,EAAoB0B,EAAI,CAACO,EAAKC,IAAUnK,OAAOoK,UAAUC,eAAe9B,KAAK2B,EAAKC,GCClFlC,EAAoBmB,EAAKhB,IACH,oBAAXxJ,QAA0BA,OAAO0L,aAC1CtK,OAAO4J,eAAexB,EAASxJ,OAAO0L,YAAa,CAAEhN,MAAO,WAE7D0C,OAAO4J,eAAexB,EAAS,aAAc,CAAE9K,OAAO,KCLvD2K,EAAoBsC,IAAOxC,IAC1BA,EAAOyC,MAAQ,GACVzC,EAAO0C,WAAU1C,EAAO0C,SAAW,IACjC1C,GCHRE,EAAoBgB,EAAI,K,MCAxBhB,EAAoByC,EAAyB,oBAAbC,UAA4BA,SAASC,SAAYC,KAAKzF,SAAS0F,KAK/F,IAAIC,EAAkB,CACrB,KAAM,GAaP9C,EAAoBQ,EAAEQ,EAAK+B,GAA0C,IAA7BD,EAAgBC,GAGxD,IAAIC,EAAuB,CAACC,EAA4BtI,KACvD,IAGIsF,EAAU8C,GAHTtC,EAAUyC,EAAaC,GAAWxI,EAGhBmG,EAAI,EAC3B,GAAGL,EAAS/E,KAAMF,GAAgC,IAAxBsH,EAAgBtH,IAAa,CACtD,IAAIyE,KAAYiD,EACZlD,EAAoB0B,EAAEwB,EAAajD,KACrCD,EAAoBO,EAAEN,GAAYiD,EAAYjD,IAGhD,GAAGkD,EAAS,IAAI1L,EAAS0L,EAAQnD,EAClC,CAEA,IADGiD,GAA4BA,EAA2BtI,GACrDmG,EAAIL,EAASxE,OAAQ6E,IACzBiC,EAAUtC,EAASK,GAChBd,EAAoB0B,EAAEoB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAO/C,EAAoBQ,EAAE/I,IAG1B2L,EAAqBR,KAAsC,gCAAIA,KAAsC,iCAAK,GAC9GQ,EAAmBC,QAAQL,EAAqBlL,KAAK,KAAM,IAC3DsL,EAAmBvD,KAAOmD,EAAqBlL,KAAK,KAAMsL,EAAmBvD,KAAK/H,KAAKsL,G,KChDvFpD,EAAoBsD,QAAK7M,ECGzB,IAAI8M,EAAsBvD,EAAoBQ,OAAE/J,EAAW,CAAC,MAAO,IAAOuJ,EAAoB,QAC9FuD,EAAsBvD,EAAoBQ,EAAE+C,E","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/yocto-queue/index.js","webpack:///nextcloud/node_modules/p-limit/index.js","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?5d38","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?84e8","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?5f06","webpack:///nextcloud/core/src/recommendedapps.js","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=style&index=0&id=e825cd68&prod&lang=scss&scoped=true","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n\tvalue;\n\tnext;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\t}\n}\n\nexport default class Queue {\n\t#head;\n\t#tail;\n\t#size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this.#head) {\n\t\t\tthis.#tail.next = node;\n\t\t\tthis.#tail = node;\n\t\t} else {\n\t\t\tthis.#head = node;\n\t\t\tthis.#tail = node;\n\t\t}\n\n\t\tthis.#size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this.#head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#head = this.#head.next;\n\t\tthis.#size--;\n\t\treturn current.value;\n\t}\n\n\tpeek() {\n\t\tif (!this.#head) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.#head.value;\n\n\t\t// TODO: Node.js 18.\n\t\t// return this.#head?.value;\n\t}\n\n\tclear() {\n\t\tthis.#head = undefined;\n\t\tthis.#tail = undefined;\n\t\tthis.#size = 0;\n\t}\n\n\tget size() {\n\t\treturn this.#size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this.#head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n\n\t* drain() {\n\t\twhile (this.#head) {\n\t\t\tyield this.dequeue();\n\t\t}\n\t}\n}\n","import Queue from 'yocto-queue';\n\nexport default function pLimit(concurrency) {\n\tvalidateConcurrency(concurrency);\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst resumeNext = () => {\n\t\t// Process the next queued function if we're under the concurrency limit\n\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\tactiveCount++;\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst next = () => {\n\t\tactiveCount--;\n\t\tresumeNext();\n\t};\n\n\tconst run = async (function_, resolve, arguments_) => {\n\t\t// Execute the function and capture the result promise\n\t\tconst result = (async () => function_(...arguments_))();\n\n\t\t// Resolve immediately with the promise (don't wait for completion)\n\t\tresolve(result);\n\n\t\t// Wait for the function to complete (success or failure)\n\t\t// We catch errors here to prevent unhandled rejections,\n\t\t// but the original promise rejection is preserved for the caller\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\t// Decrement active count and process next queued function\n\t\tnext();\n\t};\n\n\tconst enqueue = (function_, resolve, arguments_) => {\n\t\t// Queue the internal resolve function instead of the run function\n\t\t// to preserve the asynchronous execution context.\n\t\tnew Promise(internalResolve => { // eslint-disable-line promise/param-names\n\t\t\tqueue.enqueue(internalResolve);\n\t\t}).then(run.bind(undefined, function_, resolve, arguments_)); // eslint-disable-line promise/prefer-await-to-then\n\n\t\t// Start processing immediately if we haven't reached the concurrency limit\n\t\tif (activeCount < concurrency) {\n\t\t\tresumeNext();\n\t\t}\n\t};\n\n\tconst generator = (function_, ...arguments_) => new Promise(resolve => {\n\t\tenqueue(function_, resolve, arguments_);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount,\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size,\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue() {\n\t\t\t\tqueue.clear();\n\t\t\t},\n\t\t},\n\t\tconcurrency: {\n\t\t\tget: () => concurrency,\n\n\t\t\tset(newConcurrency) {\n\t\t\t\tvalidateConcurrency(newConcurrency);\n\t\t\t\tconcurrency = newConcurrency;\n\n\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\t// eslint-disable-next-line no-unmodified-loop-condition\n\t\t\t\t\twhile (activeCount < concurrency && queue.size > 0) {\n\t\t\t\t\t\tresumeNext();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\tmap: {\n\t\t\tasync value(array, function_) {\n\t\t\t\tconst promises = array.map((value, index) => this(function_, value, index));\n\t\t\t\treturn Promise.all(promises);\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n\nexport function limitFunction(function_, options) {\n\tconst {concurrency} = options;\n\tconst limit = pLimit(concurrency);\n\n\treturn (...arguments_) => limit(() => function_(...arguments_));\n}\n\nfunction validateConcurrency(concurrency) {\n\tif (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\n/**\n *\n * @param user\n */\nfunction getLogger(user) {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n\nexport const unifiedSearchLogger = getLoggerBuilder()\n\t.setApp('unified-search')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.vue?vue&type=style&index=0&id=e825cd68&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.vue?vue&type=style&index=0&id=e825cd68&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RecommendedApps.vue?vue&type=template&id=e825cd68&scoped=true\"\nimport script from \"./RecommendedApps.vue?vue&type=script&lang=js\"\nexport * from \"./RecommendedApps.vue?vue&type=script&lang=js\"\nimport style0 from \"./RecommendedApps.vue?vue&type=style&index=0&id=e825cd68&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e825cd68\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"guest-box\",attrs:{\"data-cy-setup-recommended-apps\":\"\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Recommended apps')))]),_vm._v(\" \"),(_vm.loadingApps)?_c('p',{staticClass:\"loading text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Loading apps …'))+\"\\n\\t\")]):(_vm.loadingAppsError)?_c('p',{staticClass:\"loading-error text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Could not fetch list of apps from the App Store.'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.recommendedApps),function(app){return _c('div',{key:app.id,staticClass:\"app\"},[(!_vm.isHidden(app.id))?[_c('img',{attrs:{\"src\":_vm.customIcon(app.id),\"alt\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"info\"},[_c('h3',[_vm._v(_vm._s(_vm.customName(app)))]),_vm._v(\" \"),_c('p',{domProps:{\"textContent\":_vm._s(_vm.customDescription(app.id))}}),_vm._v(\" \"),(app.installationError)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'App download or installation failed')))])]):(!app.isCompatible)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app because it is not compatible')))])]):(!app.canInstall)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app')))])]):_vm._e()]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":app.isSelected || app.active,\"disabled\":!app.isCompatible || app.active,\"loading\":app.loading},on:{\"update:checked\":function($event){return _vm.toggleSelect(app.id)}}})]:_vm._e()],2)}),_vm._v(\" \"),_c('div',{staticClass:\"dialog-row\"},[(_vm.showInstallButton && !_vm.installingApps)?_c('NcButton',{attrs:{\"data-cy-setup-recommended-apps-skip\":\"\",\"href\":_vm.defaultPageUrl,\"variant\":\"tertiary\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Skip'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showInstallButton)?_c('NcButton',{attrs:{\"data-cy-setup-recommended-apps-install\":\"\",\"disabled\":_vm.installingApps || !_vm.isAnyAppSelected,\"variant\":\"primary\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.installApps.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.installingApps ? _vm.t('core', 'Installing apps …') : _vm.t('core', 'Install recommended apps'))+\"\\n\\t\\t\")]):_vm._e()],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCSPNonce } from '@nextcloud/auth'\nimport { translate as t } from '@nextcloud/l10n'\nimport Vue from 'vue'\nimport RecommendedApps from './components/setup/RecommendedApps.vue'\nimport logger from './logger.js'\n\n__webpack_nonce__ = getCSPNonce()\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst View = Vue.extend(RecommendedApps)\nnew View().$mount('#recommended-apps')\n\nlogger.debug('recommended apps view rendered')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.dialog-row[data-v-e825cd68]{display:flex;justify-content:end;margin-top:8px}p.loading[data-v-e825cd68],p.loading-error[data-v-e825cd68]{height:100px}p[data-v-e825cd68]:last-child{margin-top:10px}.text-center[data-v-e825cd68]{text-align:center}.app[data-v-e825cd68]{display:flex;flex-direction:row}.app img[data-v-e825cd68]{height:50px;width:50px;filter:var(--background-invert-if-dark)}.app img[data-v-e825cd68],.app .info[data-v-e825cd68]{padding:12px}.app .info h3[data-v-e825cd68],.app .info p[data-v-e825cd68]{text-align:start}.app .info h3[data-v-e825cd68]{margin-top:0}.app .checkbox-radio-switch[data-v-e825cd68]{margin-inline-start:auto;padding:0 2px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/setup/RecommendedApps.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,YAAA,CACA,mBAAA,CACA,cAAA,CAIA,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,uCAAA,CAGD,sDACC,YAAA,CAIA,6DACC,gBAAA,CAGD,+BACC,YAAA,CAIF,6CACC,wBAAA,CACA,aAAA\",\"sourcesContent\":[\"\\n.dialog-row {\\n\\tdisplay: flex;\\n\\tjustify-content: end;\\n\\tmargin-top: 8px;\\n}\\n\\np {\\n\\t&.loading,\\n\\t&.loading-error {\\n\\t\\theight: 100px;\\n\\t}\\n\\n\\t&:last-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n}\\n\\n.text-center {\\n\\ttext-align: center;\\n}\\n\\n.app {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\n\\timg {\\n\\t\\theight: 50px;\\n\\t\\twidth: 50px;\\n\\t\\tfilter: var(--background-invert-if-dark);\\n\\t}\\n\\n\\timg, .info {\\n\\t\\tpadding: 12px;\\n\\t}\\n\\n\\t.info {\\n\\t\\th3, p {\\n\\t\\t\\ttext-align: start;\\n\\t\\t}\\n\\n\\t\\th3 {\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t.checkbox-radio-switch {\\n\\t\\tmargin-inline-start: auto;\\n\\t\\tpadding: 0 2px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2696;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2696: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud_ui_legacy\"] = self[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(45919)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Node","constructor","value","_defineProperty","this","_head","WeakMap","_tail","_size","Queue","_classPrivateFieldInitSpec","clear","enqueue","_this$size","node","_classPrivateFieldGet","next","_classPrivateFieldSet","dequeue","_this$size3","current","peek","undefined","size","Symbol","iterator","drain","pLimit","concurrency","validateConcurrency","queue","activeCount","resumeNext","run","async","function_","resolve","arguments_","result","generator","Promise","internalResolve","then","bind","Object","defineProperties","get","pendingCount","clearQueue","set","newConcurrency","queueMicrotask","map","array","promises","index","all","Number","isInteger","POSITIVE_INFINITY","TypeError","user","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","detectUser","recommended","calendar","description","t","icon","imagePath","contacts","mail","spreed","richdocuments","name","notes","richdocumentscode","hidden","recommendedIds","keys","components","NcCheckboxRadioSwitch","NcButton","data","showInstallButton","installingApps","loadingApps","loadingAppsError","apps","defaultPageUrl","loadState","computed","recommendedApps","filter","app","includes","id","isAnyAppSelected","some","isSelected","mounted","axios","generateUrl","logger","info","length","assign","loading","installationError","isCompatible","debug","error","methods","installApps","limit","installing","active","canInstall","post","appIds","groups","catch","window","location","customIcon","appId","warn","customName","customDescription","isHidden","toggleSelect","findIndex","$set","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","staticClass","attrs","_v","_s","_e","_l","key","domProps","on","$event","stopPropagation","preventDefault","apply","arguments","__webpack_nonce__","getCSPNonce","Vue","mixin","extend","RecommendedApps","$mount","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","e","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","toStringTag","nmd","paths","children","b","document","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","forEach","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"core-recommendedapps.js?v=af809cbf29640a8ca0b8","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/yocto-queue/index.js","webpack:///nextcloud/node_modules/p-limit/index.js","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?5d38","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?84e8","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?5f06","webpack:///nextcloud/core/src/recommendedapps.js","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=style&index=0&id=e825cd68&prod&lang=scss&scoped=true","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n\tvalue;\n\tnext;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\t}\n}\n\nexport default class Queue {\n\t#head;\n\t#tail;\n\t#size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this.#head) {\n\t\t\tthis.#tail.next = node;\n\t\t\tthis.#tail = node;\n\t\t} else {\n\t\t\tthis.#head = node;\n\t\t\tthis.#tail = node;\n\t\t}\n\n\t\tthis.#size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this.#head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#head = this.#head.next;\n\t\tthis.#size--;\n\t\treturn current.value;\n\t}\n\n\tpeek() {\n\t\tif (!this.#head) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.#head.value;\n\n\t\t// TODO: Node.js 18.\n\t\t// return this.#head?.value;\n\t}\n\n\tclear() {\n\t\tthis.#head = undefined;\n\t\tthis.#tail = undefined;\n\t\tthis.#size = 0;\n\t}\n\n\tget size() {\n\t\treturn this.#size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this.#head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n\n\t* drain() {\n\t\twhile (this.#head) {\n\t\t\tyield this.dequeue();\n\t\t}\n\t}\n}\n","import Queue from 'yocto-queue';\n\nexport default function pLimit(concurrency) {\n\tvalidateConcurrency(concurrency);\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst resumeNext = () => {\n\t\t// Process the next queued function if we're under the concurrency limit\n\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\tactiveCount++;\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst next = () => {\n\t\tactiveCount--;\n\t\tresumeNext();\n\t};\n\n\tconst run = async (function_, resolve, arguments_) => {\n\t\t// Execute the function and capture the result promise\n\t\tconst result = (async () => function_(...arguments_))();\n\n\t\t// Resolve immediately with the promise (don't wait for completion)\n\t\tresolve(result);\n\n\t\t// Wait for the function to complete (success or failure)\n\t\t// We catch errors here to prevent unhandled rejections,\n\t\t// but the original promise rejection is preserved for the caller\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\t// Decrement active count and process next queued function\n\t\tnext();\n\t};\n\n\tconst enqueue = (function_, resolve, arguments_) => {\n\t\t// Queue the internal resolve function instead of the run function\n\t\t// to preserve the asynchronous execution context.\n\t\tnew Promise(internalResolve => { // eslint-disable-line promise/param-names\n\t\t\tqueue.enqueue(internalResolve);\n\t\t}).then(run.bind(undefined, function_, resolve, arguments_)); // eslint-disable-line promise/prefer-await-to-then\n\n\t\t// Start processing immediately if we haven't reached the concurrency limit\n\t\tif (activeCount < concurrency) {\n\t\t\tresumeNext();\n\t\t}\n\t};\n\n\tconst generator = (function_, ...arguments_) => new Promise(resolve => {\n\t\tenqueue(function_, resolve, arguments_);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount,\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size,\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue() {\n\t\t\t\tqueue.clear();\n\t\t\t},\n\t\t},\n\t\tconcurrency: {\n\t\t\tget: () => concurrency,\n\n\t\t\tset(newConcurrency) {\n\t\t\t\tvalidateConcurrency(newConcurrency);\n\t\t\t\tconcurrency = newConcurrency;\n\n\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\t// eslint-disable-next-line no-unmodified-loop-condition\n\t\t\t\t\twhile (activeCount < concurrency && queue.size > 0) {\n\t\t\t\t\t\tresumeNext();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\tmap: {\n\t\t\tasync value(iterable, function_) {\n\t\t\t\tconst promises = Array.from(iterable, (value, index) => this(function_, value, index));\n\t\t\t\treturn Promise.all(promises);\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n\nexport function limitFunction(function_, options) {\n\tconst {concurrency} = options;\n\tconst limit = pLimit(concurrency);\n\n\treturn (...arguments_) => limit(() => function_(...arguments_));\n}\n\nfunction validateConcurrency(concurrency) {\n\tif (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\n/**\n *\n * @param user\n */\nfunction getLogger(user) {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n\nexport const unifiedSearchLogger = getLoggerBuilder()\n\t.setApp('unified-search')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.vue?vue&type=style&index=0&id=e825cd68&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.vue?vue&type=style&index=0&id=e825cd68&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RecommendedApps.vue?vue&type=template&id=e825cd68&scoped=true\"\nimport script from \"./RecommendedApps.vue?vue&type=script&lang=js\"\nexport * from \"./RecommendedApps.vue?vue&type=script&lang=js\"\nimport style0 from \"./RecommendedApps.vue?vue&type=style&index=0&id=e825cd68&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e825cd68\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"guest-box\",attrs:{\"data-cy-setup-recommended-apps\":\"\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Recommended apps')))]),_vm._v(\" \"),(_vm.loadingApps)?_c('p',{staticClass:\"loading text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Loading apps …'))+\"\\n\\t\")]):(_vm.loadingAppsError)?_c('p',{staticClass:\"loading-error text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Could not fetch list of apps from the App Store.'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.recommendedApps),function(app){return _c('div',{key:app.id,staticClass:\"app\"},[(!_vm.isHidden(app.id))?[_c('img',{attrs:{\"src\":_vm.customIcon(app.id),\"alt\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"info\"},[_c('h3',[_vm._v(_vm._s(_vm.customName(app)))]),_vm._v(\" \"),_c('p',{domProps:{\"textContent\":_vm._s(_vm.customDescription(app.id))}}),_vm._v(\" \"),(app.installationError)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'App download or installation failed')))])]):(!app.isCompatible)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app because it is not compatible')))])]):(!app.canInstall)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app')))])]):_vm._e()]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":app.isSelected || app.active,\"disabled\":!app.isCompatible || app.active,\"loading\":app.loading},on:{\"update:checked\":function($event){return _vm.toggleSelect(app.id)}}})]:_vm._e()],2)}),_vm._v(\" \"),_c('div',{staticClass:\"dialog-row\"},[(_vm.showInstallButton && !_vm.installingApps)?_c('NcButton',{attrs:{\"data-cy-setup-recommended-apps-skip\":\"\",\"href\":_vm.defaultPageUrl,\"variant\":\"tertiary\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Skip'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showInstallButton)?_c('NcButton',{attrs:{\"data-cy-setup-recommended-apps-install\":\"\",\"disabled\":_vm.installingApps || !_vm.isAnyAppSelected,\"variant\":\"primary\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.installApps.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.installingApps ? _vm.t('core', 'Installing apps …') : _vm.t('core', 'Install recommended apps'))+\"\\n\\t\\t\")]):_vm._e()],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCSPNonce } from '@nextcloud/auth'\nimport { translate as t } from '@nextcloud/l10n'\nimport Vue from 'vue'\nimport RecommendedApps from './components/setup/RecommendedApps.vue'\nimport logger from './logger.js'\n\n__webpack_nonce__ = getCSPNonce()\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst View = Vue.extend(RecommendedApps)\nnew View().$mount('#recommended-apps')\n\nlogger.debug('recommended apps view rendered')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.dialog-row[data-v-e825cd68]{display:flex;justify-content:end;margin-top:8px}p.loading[data-v-e825cd68],p.loading-error[data-v-e825cd68]{height:100px}p[data-v-e825cd68]:last-child{margin-top:10px}.text-center[data-v-e825cd68]{text-align:center}.app[data-v-e825cd68]{display:flex;flex-direction:row}.app img[data-v-e825cd68]{height:50px;width:50px;filter:var(--background-invert-if-dark)}.app img[data-v-e825cd68],.app .info[data-v-e825cd68]{padding:12px}.app .info h3[data-v-e825cd68],.app .info p[data-v-e825cd68]{text-align:start}.app .info h3[data-v-e825cd68]{margin-top:0}.app .checkbox-radio-switch[data-v-e825cd68]{margin-inline-start:auto;padding:0 2px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/setup/RecommendedApps.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,YAAA,CACA,mBAAA,CACA,cAAA,CAIA,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,uCAAA,CAGD,sDACC,YAAA,CAIA,6DACC,gBAAA,CAGD,+BACC,YAAA,CAIF,6CACC,wBAAA,CACA,aAAA\",\"sourcesContent\":[\"\\n.dialog-row {\\n\\tdisplay: flex;\\n\\tjustify-content: end;\\n\\tmargin-top: 8px;\\n}\\n\\np {\\n\\t&.loading,\\n\\t&.loading-error {\\n\\t\\theight: 100px;\\n\\t}\\n\\n\\t&:last-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n}\\n\\n.text-center {\\n\\ttext-align: center;\\n}\\n\\n.app {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\n\\timg {\\n\\t\\theight: 50px;\\n\\t\\twidth: 50px;\\n\\t\\tfilter: var(--background-invert-if-dark);\\n\\t}\\n\\n\\timg, .info {\\n\\t\\tpadding: 12px;\\n\\t}\\n\\n\\t.info {\\n\\t\\th3, p {\\n\\t\\t\\ttext-align: start;\\n\\t\\t}\\n\\n\\t\\th3 {\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t.checkbox-radio-switch {\\n\\t\\tmargin-inline-start: auto;\\n\\t\\tpadding: 0 2px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2696;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2696: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud_ui_legacy\"] = self[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(45919)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Node","constructor","value","_defineProperty","this","_head","WeakMap","_tail","_size","Queue","_classPrivateFieldInitSpec","clear","enqueue","_this$size","node","_classPrivateFieldGet","next","_classPrivateFieldSet","dequeue","_this$size3","current","peek","undefined","size","Symbol","iterator","drain","pLimit","concurrency","validateConcurrency","queue","activeCount","resumeNext","run","async","function_","resolve","arguments_","result","generator","Promise","internalResolve","then","bind","Object","defineProperties","get","pendingCount","clearQueue","set","newConcurrency","queueMicrotask","map","iterable","promises","Array","from","index","all","Number","isInteger","POSITIVE_INFINITY","TypeError","user","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","detectUser","recommended","calendar","description","t","icon","imagePath","contacts","mail","spreed","richdocuments","name","notes","richdocumentscode","hidden","recommendedIds","keys","components","NcCheckboxRadioSwitch","NcButton","data","showInstallButton","installingApps","loadingApps","loadingAppsError","apps","defaultPageUrl","loadState","computed","recommendedApps","filter","app","includes","id","isAnyAppSelected","some","isSelected","mounted","axios","generateUrl","logger","info","length","assign","loading","installationError","isCompatible","debug","error","methods","installApps","limit","installing","active","canInstall","post","appIds","groups","catch","window","location","customIcon","appId","warn","customName","customDescription","isHidden","toggleSelect","findIndex","$set","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","staticClass","attrs","_v","_s","_e","_l","key","domProps","on","$event","stopPropagation","preventDefault","apply","arguments","__webpack_nonce__","getCSPNonce","Vue","mixin","extend","RecommendedApps","$mount","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","e","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","toStringTag","nmd","paths","children","b","document","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","forEach","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/settings-apps-view-4529.js b/dist/settings-apps-view-4529.js index 9fbf26451cc05..cd8a037a46cbd 100644 --- a/dist/settings-apps-view-4529.js +++ b/dist/settings-apps-view-4529.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunknextcloud_ui_legacy=self.webpackChunknextcloud_ui_legacy||[]).push([[4529],{846:(t,e,n)=>{n.d(e,{T:()=>u});var a=n(19051),i=n(85168),s=n(81222),o=n(53334),p=n(63814),r=n(10810),l=n(86438),c=n(36620);const d=()=>(0,i.Qg)((0,o.Tl)("settings","An error occurred during the request. Unable to proceed.")),u=(0,r.nY)("settings-apps",{state:()=>({apps:[],categories:[],updateCount:(0,s.C)("settings","appstoreUpdateCount",0),loading:{apps:!1,categories:!1},loadingList:!1,gettingCategoriesPromise:null}),actions:{async loadCategories(t=!1){if(!(this.categories.length>0)||t)try{this.loading.categories=!0;const{data:t}=await a.Ay.get((0,p.Jv)("settings/apps/categories"));for(const e of t)e.icon=l.A[e.id]??"";this.$patch({categories:t})}catch(t){c.A.error(t),d()}finally{this.loading.categories=!1}},async loadApps(t=!1){if(!(this.apps.length>0)||t)try{this.loading.apps=!0;const{data:t}=await a.Ay.get((0,p.Jv)("settings/apps/list"));this.$patch({apps:t.apps})}catch(t){c.A.error(t),d()}finally{this.loading.apps=!1}},getCategoryById(t){return this.categories.find(({id:e})=>e===t)??null},getAppById(t){return this.apps.find(({id:e})=>e===t)??null}}})},2602:(t,e,n)=>{n.d(e,{A:()=>p});var a=n(71354),i=n.n(a),s=n(76314),o=n.n(s)()(i());o.push([t.id,".daemon-selection-list[data-v-a31da1f4]{max-height:350px;overflow-y:scroll;padding:2rem}.daemon-selection-list__empty-content[data-v-a31da1f4]{margin-top:0;text-align:center}","",{version:3,sources:["webpack://./apps/settings/src/components/AppAPI/DaemonSelectionList.vue"],names:[],mappings:"AACA,wCACC,gBAAA,CACA,iBAAA,CACA,YAAA,CAEA,uDACC,YAAA,CACA,iBAAA",sourcesContent:["\n.daemon-selection-list {\n\tmax-height: 350px;\n\toverflow-y: scroll;\n\tpadding: 2rem;\n\n\t&__empty-content {\n\t\tmargin-top: 0;\n\t\ttext-align: center;\n\t}\n}\n"],sourceRoot:""}]);const p=o},6325:(t,e,n)=>{n.d(e,{A:()=>p});var a=n(71354),i=n.n(a),s=n(76314),o=n.n(s)()(i());o.push([t.id,".app-sidebar--with-screenshot[data-v-156b7c7b] .app-sidebar-header__figure{background-size:cover}.app-sidebar__fallback-icon[data-v-156b7c7b]{width:100%;height:100%}.app-sidebar__badges[data-v-156b7c7b]{display:flex;flex-direction:row;gap:12px}.app-sidebar__version[data-v-156b7c7b]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/settings/src/views/AppStoreSidebar.vue"],names:[],mappings:"AAIE,2EACC,qBAAA,CAIF,6CAEC,UAAA,CACA,WAAA,CAGD,sCACC,YAAA,CACA,kBAAA,CACA,QAAA,CAGD,uCACC,mCAAA",sourcesContent:["\n.app-sidebar {\n\t// If a screenshot is available it should cover the whole figure\n\t&--with-screenshot {\n\t\t:deep(.app-sidebar-header__figure) {\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__fallback-icon {\n\t\t// both 100% to center the icon\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\n\t&__badges {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tgap: 12px;\n\t}\n\n\t&__version {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const p=o},7717:(t,e,n)=>{n.d(e,{A:()=>p});var a=n(71354),i=n.n(a),s=n(76314),o=n.n(s)()(i());o.push([t.id,"\n/* The categories-loading indicator */\n.categories--loading[data-v-6d2cb244] {\n\tflex: 1;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n","",{version:3,sources:["webpack://./apps/settings/src/views/AppStoreNavigation.vue"],names:[],mappings:";AAkJA,qCAAA;AACA;CACA,OAAA;CACA,aAAA;CACA,mBAAA;CACA,uBAAA;AACA",sourcesContent:['\x3c!--\n - SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n--\x3e\n\n\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.showSidebar)?_c(_setup.NcAppSidebar,{staticClass:\"app-sidebar\",class:{ 'app-sidebar--with-screenshot': _setup.hasScreenshot },attrs:{\"active\":_setup.activeTab,\"background\":_setup.hasScreenshot ? _setup.app.screenshot : undefined,\"compact\":!_setup.hasScreenshot,\"name\":_setup.app.name,\"title\":_setup.app.name,\"subname\":_setup.licenseText,\"subtitle\":_setup.licenseText},on:{\"update:active\":function($event){_setup.activeTab=$event},\"close\":_setup.hideAppDetails},scopedSlots:_vm._u([(!_setup.hasScreenshot)?{key:\"header\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{staticClass:\"app-sidebar__fallback-icon\",attrs:{\"svg\":_setup.appIcon ?? '',\"size\":64}})]},proxy:true}:null,{key:\"description\",fn:function(){return [_c('div',{staticClass:\"app-sidebar__badges\"},[_c(_setup.AppLevelBadge,{attrs:{\"level\":_setup.app.level}}),_vm._v(\" \"),(_setup.app.app_api && _setup.app.daemon)?_c(_setup.AppDaemonBadge,{attrs:{\"daemon\":_setup.app.daemon}}):_vm._e(),_vm._v(\" \"),(_setup.hasRating)?_c(_setup.AppScore,{attrs:{\"score\":_setup.rating}}):_vm._e()],1)]},proxy:true}],null,true)},[_vm._v(\" \"),_vm._v(\" \"),_c(_setup.AppDescriptionTab,{attrs:{\"app\":_setup.app}}),_vm._v(\" \"),_c(_setup.AppDetailsTab,{attrs:{\"app\":_setup.app}}),_vm._v(\" \"),_c(_setup.AppReleasesTab,{attrs:{\"app\":_setup.app}}),_vm._v(\" \"),_c(_setup.AppDeployDaemonTab,{attrs:{\"app\":_setup.app}})],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.daemon)?_c('span',{staticClass:\"app-daemon-badge\",attrs:{\"title\":_vm.daemon.name}},[_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiFileChart,\"size\":20,\"inline\":\"\"}}),_vm._v(\"\\n\\t\"+_vm._s(_vm.daemon.display_name)+\"\\n\")],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDaemonBadge.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDaemonBadge.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDaemonBadge.vue?vue&type=style&index=0&id=d2263fb4&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDaemonBadge.vue?vue&type=style&index=0&id=d2263fb4&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDaemonBadge.vue?vue&type=template&id=d2263fb4&scoped=true\"\nimport script from \"./AppDaemonBadge.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppDaemonBadge.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppDaemonBadge.vue?vue&type=style&index=0&id=d2263fb4&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d2263fb4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.app?.daemon)?_c(_setup.NcAppSidebarTab,{attrs:{\"id\":\"daemon\",\"name\":_vm.t('settings', 'Daemon'),\"order\":3},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiFileChart,\"size\":24}})]},proxy:true}],null,false,1746493066)},[_vm._v(\" \"),_c('div',{staticClass:\"daemon\"},[_c('h4',[_vm._v(_vm._s(_vm.t('settings', 'Deploy Daemon')))]),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(_vm._s(_vm.t('settings', 'Type')))]),_vm._v(\": \"+_vm._s(_vm.app?.daemon.accepts_deploy_id))]),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(_vm._s(_vm.t('settings', 'Name')))]),_vm._v(\": \"+_vm._s(_vm.app?.daemon.name))]),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(_vm._s(_vm.t('settings', 'Display Name')))]),_vm._v(\": \"+_vm._s(_vm.app?.daemon.display_name))]),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(_vm._s(_vm.t('settings', 'GPUs support')))]),_vm._v(\": \"+_vm._s(_setup.gpuSupport))]),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(_vm._s(_vm.t('settings', 'Compute device')))]),_vm._v(\": \"+_vm._s(_vm.app?.daemon?.deploy_config?.computeDevice?.label))])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDeployDaemonTab.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDeployDaemonTab.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDeployDaemonTab.vue?vue&type=style&index=0&id=28419269&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDeployDaemonTab.vue?vue&type=style&index=0&id=28419269&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDeployDaemonTab.vue?vue&type=template&id=28419269&scoped=true\"\nimport script from \"./AppDeployDaemonTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppDeployDaemonTab.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppDeployDaemonTab.vue?vue&type=style&index=0&id=28419269&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"28419269\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSidebarTab,{attrs:{\"id\":\"desc\",\"name\":_setup.t('settings', 'Description'),\"order\":0},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiTextShort}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{staticClass:\"app-description\"},[_c(_setup.Markdown,{attrs:{\"text\":_vm.app.description,\"min-heading\":4}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=style&index=0&id=62ec0d6b&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=style&index=0&id=62ec0d6b&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Markdown.vue?vue&type=template&id=62ec0d6b&scoped=true\"\nimport script from \"./Markdown.vue?vue&type=script&lang=js\"\nexport * from \"./Markdown.vue?vue&type=script&lang=js\"\nimport style0 from \"./Markdown.vue?vue&type=style&index=0&id=62ec0d6b&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"62ec0d6b\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"settings-markdown\",domProps:{\"innerHTML\":_vm._s(_vm.renderMarkdown)}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDescriptionTab.vue?vue&type=style&index=0&id=1d5b4408&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDescriptionTab.vue?vue&type=style&index=0&id=1d5b4408&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDescriptionTab.vue?vue&type=template&id=1d5b4408&scoped=true\"\nimport script from \"./AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppDescriptionTab.vue?vue&type=style&index=0&id=1d5b4408&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d5b4408\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSidebarTab',{attrs:{\"id\":\"details\",\"name\":_vm.t('settings', 'Details'),\"order\":1},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiTextBoxOutline}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{staticClass:\"app-details\"},[_c('div',{staticClass:\"app-details__actions\"},[(_vm.app.active && _vm.canLimitToGroups(_vm.app))?_c('div',{staticClass:\"app-details__actions-groups\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.groupCheckedAppsData),expression:\"groupCheckedAppsData\"}],staticClass:\"groups-enable__checkbox checkbox\",attrs:{\"id\":`groups_enable_${_vm.app.id}`,\"type\":\"checkbox\"},domProps:{\"value\":_vm.app.id,\"checked\":Array.isArray(_vm.groupCheckedAppsData)?_vm._i(_vm.groupCheckedAppsData,_vm.app.id)>-1:(_vm.groupCheckedAppsData)},on:{\"change\":[function($event){var $$a=_vm.groupCheckedAppsData,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=_vm.app.id,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.groupCheckedAppsData=$$a.concat([$$v]))}else{$$i>-1&&(_vm.groupCheckedAppsData=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.groupCheckedAppsData=$$c}},_vm.setGroupLimit]}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":`groups_enable_${_vm.app.id}`}},[_vm._v(_vm._s(_vm.t('settings', 'Limit to groups')))]),_vm._v(\" \"),_c('input',{staticClass:\"group_select\",attrs:{\"type\":\"hidden\",\"title\":_vm.t('settings', 'All'),\"value\":\"\"}}),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"limitToGroups\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Limit app usage to groups')))])]),_vm._v(\" \"),(_vm.isLimitedToGroups(_vm.app))?_c('NcSelect',{attrs:{\"input-id\":\"limitToGroups\",\"options\":_vm.groups,\"value\":_vm.appGroups,\"limit\":5,\"label\":\"name\",\"multiple\":true,\"keep-open\":\"\"},on:{\"option:selected\":_vm.addGroupLimitation,\"option:deselected\":_vm.removeGroupLimitation,\"search\":_vm.asyncFindGroup}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])]):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-details__actions-manage\"},[(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {version}', { version: _vm.app.update }),\"disabled\":_vm.installing || _vm.isLoading || _vm.isManualInstall},on:{\"click\":function($event){return _vm.update(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('input',{staticClass:\"uninstall\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Remove'),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.remove(_vm.app.id, _vm.removeData)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.disableButtonText,\"disabled\":_vm.installing || _vm.isLoading || _vm.isInitializing || _vm.isDeploying},on:{\"click\":function($event){return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{staticClass:\"enable primary\",attrs:{\"title\":_vm.enableButtonTooltip,\"aria-label\":_vm.enableButtonTooltip,\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.isLoading || !_vm.defaultDeployDaemonAccessible || _vm.isInitializing || _vm.isDeploying},on:{\"click\":_vm.enableButtonAction}}):(!_vm.app.active && !_vm.app.canInstall)?_c('input',{staticClass:\"enable force\",attrs:{\"title\":_vm.forceEnableButtonTooltip,\"aria-label\":_vm.forceEnableButtonTooltip,\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.forceEnable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app?.app_api && (_vm.app.canInstall || _vm.app.isCompatible))?_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Advanced deploy options'),\"variant\":\"secondary\"},on:{\"click\":() => _vm.showDeployOptionsModal = true},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiToyBrickPlusOutline}})]},proxy:true}],null,false,973660380)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Deploy options'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),(!_vm.defaultDeployDaemonAccessible)?_c('p',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Default Deploy daemon is not accessible'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.removeData,\"disabled\":_vm.installing || _vm.isLoading || !_vm.defaultDeployDaemonAccessible},on:{\"update:checked\":_vm.toggleRemoveData}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Delete data on remove'))+\"\\n\\t\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),_c('ul',{staticClass:\"app-details__dependencies\"},[(_vm.app.missingMinOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app has no minimum {productName} version assigned. This will be an error in the future.', { productName: _vm.productName }))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.missingMaxOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app has no maximum {productName} version assigned. This will be an error in the future.', { productName: _vm.productName }))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.app.canInstall)?_c('li',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:'))+\"\\n\\t\\t\\t\\t\"),_c('ul',{staticClass:\"missing-dependencies\"},_vm._l((_vm.app.missingDependencies),function(dep,index){return _c('li',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(dep)+\"\\n\\t\\t\\t\\t\\t\")])}),0)]):_vm._e()]),_vm._v(\" \"),(_vm.lastModified && !_vm.app.shipped)?_c('div',{staticClass:\"app-details__section\"},[_c('h4',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Latest updated'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcDateTime',{attrs:{\"timestamp\":_vm.lastModified}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-details__section\"},[_c('h4',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Author'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('p',{staticClass:\"app-details__authors\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.appAuthors)+\"\\n\\t\\t\\t\")])]),_vm._v(\" \"),_c('div',{staticClass:\"app-details__section\"},[_c('h4',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Categories'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.appCategories)+\"\\n\\t\\t\\t\")])]),_vm._v(\" \"),(_vm.externalResources.length > 0)?_c('div',{staticClass:\"app-details__section\"},[_c('h4',[_vm._v(_vm._s(_vm.t('settings', 'Resources')))]),_vm._v(\" \"),_c('ul',{staticClass:\"app-details__documentation\",attrs:{\"aria-label\":_vm.t('settings', 'Documentation')}},_vm._l((_vm.externalResources),function(resource){return _c('li',{key:resource.id},[_c('a',{staticClass:\"appslink\",attrs:{\"href\":resource.href,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(resource.label)+\" ↗\\n\\t\\t\\t\\t\\t\")])])}),0)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-details__section\"},[_c('h4',[_vm._v(_vm._s(_vm.t('settings', 'Interact')))]),_vm._v(\" \"),_c('div',{staticClass:\"app-details__interact\"},[_c('NcButton',{attrs:{\"disabled\":!_vm.app.bugs,\"href\":_vm.app.bugs ?? '#',\"aria-label\":_vm.t('settings', 'Report a bug'),\"title\":_vm.t('settings', 'Report a bug')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiBugOutline}})]},proxy:true}])}),_vm._v(\" \"),_c('NcButton',{attrs:{\"disabled\":!_vm.app.bugs,\"href\":_vm.app.bugs ?? '#',\"aria-label\":_vm.t('settings', 'Request feature'),\"title\":_vm.t('settings', 'Request feature')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiFeatureSearchOutline}})]},proxy:true}])}),_vm._v(\" \"),(_vm.app.appstoreData?.discussion)?_c('NcButton',{attrs:{\"href\":_vm.app.appstoreData.discussion,\"aria-label\":_vm.t('settings', 'Ask questions or discuss'),\"title\":_vm.t('settings', 'Ask questions or discuss')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiTooltipQuestionOutline}})]},proxy:true}],null,false,88743630)}):_vm._e(),_vm._v(\" \"),(!_vm.app.internal)?_c('NcButton',{attrs:{\"href\":_vm.rateAppUrl,\"aria-label\":_vm.t('settings', 'Rate the app'),\"title\":_vm.t('settings', 'Rate')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiStar}})]},proxy:true}],null,false,422450625)}):_vm._e()],1)]),_vm._v(\" \"),(_vm.app?.app_api)?_c('AppDeployOptionsModal',{attrs:{\"show\":_vm.showDeployOptionsModal,\"app\":_vm.app},on:{\"update:show\":function($event){_vm.showDeployOptionsModal=$event}}}):_vm._e(),_vm._v(\" \"),(_vm.app?.app_api)?_c('DaemonSelectionDialog',{attrs:{\"show\":_vm.showSelectDaemonModal,\"app\":_vm.app,\"deploy-options\":_vm.deployOptions},on:{\"update:show\":function($event){_vm.showSelectDaemonModal=$event}}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDeployOptionsModal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDeployOptionsModal.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDeployOptionsModal.vue?vue&type=style&index=0&id=0ec0c17d&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDeployOptionsModal.vue?vue&type=style&index=0&id=0ec0c17d&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDeployOptionsModal.vue?vue&type=template&id=0ec0c17d&scoped=true\"\nimport script from \"./AppDeployOptionsModal.vue?vue&type=script&lang=js\"\nexport * from \"./AppDeployOptionsModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppDeployOptionsModal.vue?vue&type=style&index=0&id=0ec0c17d&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0ec0c17d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcDialog',{attrs:{\"open\":_vm.show,\"size\":\"normal\",\"name\":_vm.t('settings', 'Advanced deploy options')},on:{\"update:open\":function($event){return _vm.$emit('update:show', $event)}},scopedSlots:_vm._u([(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible) && _vm.configuredDeployOptions === null)?{key:\"actions\",fn:function(){return [_c('NcButton',{attrs:{\"title\":_vm.enableButtonTooltip,\"aria-label\":_vm.enableButtonTooltip,\"variant\":\"primary\",\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.isLoading || !_vm.defaultDeployDaemonAccessible || _vm.isInitializing || _vm.isDeploying},on:{\"click\":function($event){$event.stopPropagation();return _vm.submitDeployOptions.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.enableButtonText)+\"\\n\\t\\t\")])]},proxy:true}:null],null,true)},[_c('div',{staticClass:\"modal__content\"},[_c('p',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.configuredDeployOptions === null ? _vm.t('settings', 'Edit ExApp deploy options before installation') : _vm.t('settings', 'Configured ExApp deploy options. Can be set only during installation'))+\".\\n\\t\\t\\t\"),(_vm.deployOptionsDocsUrl)?_c('a',{attrs:{\"href\":_vm.deployOptionsDocsUrl}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Learn more'))+\"\\n\\t\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.environmentVariables.length > 0 || (_vm.configuredDeployOptions !== null && _vm.configuredDeployOptions.environment_variables.length > 0))?_c('h3',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Environment variables'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.configuredDeployOptions === null)?_vm._l((_vm.environmentVariables),function(envVar){return _c('div',{key:envVar.envName,staticClass:\"deploy-option\"},[_c('NcTextField',{attrs:{\"label\":envVar.displayName,\"value\":_vm.deployOptions.environment_variables[envVar.envName]},on:{\"update:value\":function($event){return _vm.$set(_vm.deployOptions.environment_variables, envVar.envName, $event)}}}),_vm._v(\" \"),_c('p',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(envVar.description)+\"\\n\\t\\t\\t\\t\")])],1)}):(Object.keys(_vm.configuredDeployOptions).length > 0)?_c('fieldset',{staticClass:\"envs\"},[_c('legend',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'ExApp container environment variables'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.configuredDeployOptions.environment_variables),function(value,key){return _c('NcTextField',{key:key,attrs:{\"label\":value.displayName ?? key,\"helper-text\":value.description,\"value\":value.value,\"readonly\":\"\"}})})],2):[_c('p',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'No environment variables defined'))+\"\\n\\t\\t\\t\")])],_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.t('settings', 'Mounts')))]),_vm._v(\" \"),(_vm.configuredDeployOptions === null)?[_c('p',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Define host folder mounts to bind to the ExApp container'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcNoteCard',{attrs:{\"type\":\"info\",\"text\":_vm.t('settings', 'Must exist on the Deploy daemon host prior to installing the ExApp')}}),_vm._v(\" \"),_vm._l((_vm.deployOptions.mounts),function(mount){return _c('div',{key:mount.hostPath,staticClass:\"deploy-option\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"flex-direction\":\"row\"}},[_c('NcTextField',{attrs:{\"label\":_vm.t('settings', 'Host path'),\"value\":mount.hostPath},on:{\"update:value\":function($event){return _vm.$set(mount, \"hostPath\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{attrs:{\"label\":_vm.t('settings', 'Container path'),\"value\":mount.containerPath},on:{\"update:value\":function($event){return _vm.$set(mount, \"containerPath\", $event)}}}),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":mount.readonly},on:{\"update:checked\":function($event){return _vm.$set(mount, \"readonly\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Read-only'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{staticStyle:{\"margin-top\":\"6px\"},attrs:{\"aria-label\":_vm.t('settings', 'Remove mount')},on:{\"click\":function($event){return _vm.removeMount(mount)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiDeleteOutline}})]},proxy:true}],null,true)})],1)}),_vm._v(\" \"),(_vm.addingMount)?_c('div',{staticClass:\"deploy-option\"},[_c('h4',[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'New mount'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"flex-direction\":\"row\"}},[_c('NcTextField',{ref:\"newMountHostPath\",attrs:{\"label\":_vm.t('settings', 'Host path'),\"aria-label\":_vm.t('settings', 'Enter path to host folder'),\"value\":_vm.newMountPoint.hostPath},on:{\"update:value\":function($event){return _vm.$set(_vm.newMountPoint, \"hostPath\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{attrs:{\"label\":_vm.t('settings', 'Container path'),\"aria-label\":_vm.t('settings', 'Enter path to container folder'),\"value\":_vm.newMountPoint.containerPath},on:{\"update:value\":function($event){return _vm.$set(_vm.newMountPoint, \"containerPath\", $event)}}}),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.newMountPoint.readonly,\"aria-label\":_vm.t('settings', 'Toggle read-only mode')},on:{\"update:checked\":function($event){return _vm.$set(_vm.newMountPoint, \"readonly\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Read-only'))+\"\\n\\t\\t\\t\\t\\t\")])],1),_vm._v(\" \"),_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"margin-top\":\"4px\"}},[_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Confirm adding new mount')},on:{\"click\":_vm.addMountPoint},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiCheck}})]},proxy:true}],null,false,1018299955)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Confirm'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{staticStyle:{\"margin-left\":\"4px\"},attrs:{\"aria-label\":_vm.t('settings', 'Cancel adding mount')},on:{\"click\":_vm.cancelAddMountPoint},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiClose}})]},proxy:true}],null,false,2764082467)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Cancel'))+\"\\n\\t\\t\\t\\t\\t\")])],1)]):_vm._e(),_vm._v(\" \"),(!_vm.addingMount)?_c('NcButton',{staticStyle:{\"margin-top\":\"5px\"},attrs:{\"aria-label\":_vm.t('settings', 'Add mount')},on:{\"click\":_vm.startAddingMount},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiPlus}})]},proxy:true}],null,false,103601839)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add mount'))+\"\\n\\t\\t\\t\")]):_vm._e()]:(_vm.configuredDeployOptions.mounts.length > 0)?[_c('p',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'ExApp container mounts'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.configuredDeployOptions.mounts),function(mount){return _c('div',{key:mount.hostPath,staticClass:\"deploy-option\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"flex-direction\":\"row\"}},[_c('NcTextField',{attrs:{\"label\":_vm.t('settings', 'Host path'),\"value\":mount.hostPath,\"readonly\":\"\"},on:{\"update:value\":function($event){return _vm.$set(mount, \"hostPath\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{attrs:{\"label\":_vm.t('settings', 'Container path'),\"value\":mount.containerPath,\"readonly\":\"\"},on:{\"update:value\":function($event){return _vm.$set(mount, \"containerPath\", $event)}}}),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":mount.readonly,\"disabled\":\"\"},on:{\"update:checked\":function($event){return _vm.$set(mount, \"readonly\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Read-only'))+\"\\n\\t\\t\\t\\t\")])],1)})]:_c('p',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'No mounts defined'))+\"\\n\\t\\t\")])],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.vue?vue&type=style&index=0&id=e83f267a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.vue?vue&type=style&index=0&id=e83f267a&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDetailsTab.vue?vue&type=template&id=e83f267a&scoped=true\"\nimport script from \"./AppDetailsTab.vue?vue&type=script&lang=js\"\nexport * from \"./AppDetailsTab.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppDetailsTab.vue?vue&type=style&index=0&id=e83f267a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e83f267a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppReleasesTab.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppReleasesTab.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.hasChangelog)?_c(_setup.NcAppSidebarTab,{attrs:{\"id\":\"changelog\",\"name\":_setup.t('settings', 'Changelog'),\"order\":2},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiClockFast,\"size\":24}})]},proxy:true}],null,false,1849836872)},[_vm._v(\" \"),_vm._l((_vm.app.releases),function(release){return _c('div',{key:release.version,staticClass:\"app-sidebar-tabs__release\"},[_c('h2',[_vm._v(_vm._s(release.version))]),_vm._v(\" \"),_c(_setup.Markdown,{staticClass:\"app-sidebar-tabs__release-text\",attrs:{\"text\":_setup.createChangelogFromRelease(release)}})],1)})],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppReleasesTab.vue?vue&type=style&index=0&id=69f0fc16&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppReleasesTab.vue?vue&type=style&index=0&id=69f0fc16&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppReleasesTab.vue?vue&type=template&id=69f0fc16&scoped=true\"\nimport script from \"./AppReleasesTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppReleasesTab.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppReleasesTab.vue?vue&type=style&index=0&id=69f0fc16&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"69f0fc16\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"","import { mdiCog, mdiCogOutline } from '@mdi/js';\nimport { computed, ref, watchEffect } from 'vue';\nimport AppstoreCategoryIcons from '../constants/AppstoreCategoryIcons.ts';\nimport logger from '../logger.ts';\n/**\n * Get the app icon raw SVG for use with `NcIconSvgWrapper` (do never use without sanitizing)\n * It has a fallback to the categroy icon.\n *\n * @param app The app to get the icon for\n */\nexport function useAppIcon(app) {\n const appIcon = ref(null);\n /**\n * Fallback value if no app icon available\n */\n const categoryIcon = computed(() => {\n let path;\n if (app.value?.app_api) {\n // Use different default icon for ExApps (AppAPI)\n path = mdiCogOutline;\n }\n else {\n path = [app.value?.category ?? []].flat()\n .map((name) => AppstoreCategoryIcons[name])\n .filter((icon) => !!icon)\n .at(0)\n ?? (!app.value?.app_api ? mdiCog : mdiCogOutline);\n }\n return path ? `` : null;\n });\n watchEffect(async () => {\n // Note: Only variables until the first `await` will be watched!\n if (!app.value?.preview) {\n appIcon.value = categoryIcon.value;\n }\n else {\n appIcon.value = null;\n // Now try to load the real app icon\n try {\n const response = await window.fetch(app.value.preview);\n const blob = await response.blob();\n const rawSvg = await blob.text();\n appIcon.value = rawSvg.replaceAll(/fill=\"#(fff|ffffff)([a-z0-9]{1,2})?\"/ig, 'fill=\"currentColor\"');\n }\n catch (error) {\n appIcon.value = categoryIcon.value;\n logger.error('Could not load app icon', { error });\n }\n }\n });\n return {\n appIcon,\n };\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=style&index=0&id=156b7c7b&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=style&index=0&id=156b7c7b&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppStoreSidebar.vue?vue&type=template&id=156b7c7b&scoped=true\"\nimport script from \"./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppStoreSidebar.vue?vue&type=style&index=0&id=156b7c7b&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"156b7c7b\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.daemon[data-v-28419269]{padding:20px}.daemon h4[data-v-28419269]{font-weight:bold;margin:10px auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue\"],\"names\":[],\"mappings\":\"AACA,yBACE,YAAA,CAEA,4BACE,gBAAA,CACA,gBAAA\",\"sourcesContent\":[\"\\n.daemon {\\n padding: 20px;\\n\\n h4 {\\n font-weight: bold;\\n margin: 10px auto;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-daemon-badge[data-v-d2263fb4]{color:var(--color-text-maxcontrast);background-color:rgba(0,0,0,0);border:1px solid var(--color-text-maxcontrast);border-radius:var(--border-radius);display:flex;flex-direction:row;gap:6px;padding:3px 6px;width:fit-content}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppDaemonBadge.vue\"],\"names\":[],\"mappings\":\"AACA,mCACC,mCAAA,CACA,8BAAA,CACA,8CAAA,CACA,kCAAA,CAEA,YAAA,CACA,kBAAA,CACA,OAAA,CACA,eAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.app-daemon-badge {\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tbackground-color: transparent;\\n\\tborder: 1px solid var(--color-text-maxcontrast);\\n\\tborder-radius: var(--border-radius);\\n\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tgap: 6px;\\n\\tpadding: 3px 6px;\\n\\twidth: fit-content;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.apps-list[data-v-707dd976]{display:flex;flex-wrap:wrap;align-content:flex-start}.apps-list--move[data-v-707dd976]{transition:transform 1s}.apps-list #app-list-update-all[data-v-707dd976]{margin-inline-start:10px}.apps-list__toolbar[data-v-707dd976]{height:60px;padding:8px;padding-inline-start:60px;width:100%;background-color:var(--color-main-background);position:sticky;top:0;z-index:1;display:flex;align-items:center}.apps-list--list-view[data-v-707dd976]{margin-bottom:100px;position:relative}.apps-list__list-container[data-v-707dd976]{width:100%}.apps-list__store-container[data-v-707dd976]{display:flex;flex-wrap:wrap}.apps-list__bundle-heading[data-v-707dd976]{display:flex;align-items:center;margin-block:20px;margin-inline:0 10px}.apps-list__bundle-header[data-v-707dd976]{color:var(--color-main-text);margin-block:0;margin-inline:50px 10px;font-weight:bold;font-size:20px;line-height:30px}#apps-list-search .app-item h2[data-v-707dd976]{margin-bottom:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList.vue\"],\"names\":[],\"mappings\":\"AAIA,4BACC,YAAA,CACA,cAAA,CACA,wBAAA,CAGA,kCACC,uBAAA,CAGD,iDACC,wBAAA,CAGD,qCACC,WAjBe,CAkBf,WAnBgB,CAqBhB,yBApBe,CAqBf,UAAA,CACA,6CAAA,CACA,eAAA,CACA,KAAA,CACA,SAAA,CACA,YAAA,CACA,kBAAA,CAGD,uCACC,mBAAA,CAEA,iBAAA,CAGD,4CACC,UAAA,CAGD,6CACC,YAAA,CACA,cAAA,CAGD,4CACC,YAAA,CACA,kBAAA,CACA,iBAAA,CACA,oBAAA,CAGD,2CACC,4BAAA,CACA,cAAA,CACA,uBAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CAMA,gDACC,eAAA\",\"sourcesContent\":[\"\\n$toolbar-padding: 8px;\\n$toolbar-height: 44px + $toolbar-padding * 2;\\n\\n.apps-list {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\talign-content: flex-start;\\n\\n\\t// For transition group\\n\\t&--move {\\n\\t\\ttransition: transform 1s;\\n\\t}\\n\\n\\t#app-list-update-all {\\n\\t\\tmargin-inline-start: 10px;\\n\\t}\\n\\n\\t&__toolbar {\\n\\t\\theight: $toolbar-height;\\n\\t\\tpadding: $toolbar-padding;\\n\\t\\t// Leave room for app-navigation-toggle\\n\\t\\tpadding-inline-start: $toolbar-height;\\n\\t\\twidth: 100%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tposition: sticky;\\n\\t\\ttop: 0;\\n\\t\\tz-index: 1;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t}\\n\\n\\t&--list-view {\\n\\t\\tmargin-bottom: 100px;\\n\\t\\t// For positioning link overlay on rows\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__list-container {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__store-container {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-wrap: wrap;\\n\\t}\\n\\n\\t&__bundle-heading {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tmargin-block: 20px;\\n\\t\\tmargin-inline: 0 10px;\\n\\t}\\n\\n\\t&__bundle-header {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tmargin-block: 0;\\n\\t\\tmargin-inline: 50px 10px;\\n\\t\\tfont-weight: bold;\\n\\t\\tfont-size: 20px;\\n\\t\\tline-height: 30px;\\n\\t}\\n}\\n\\n#apps-list-search {\\n\\t.app-item {\\n\\t\\th2 {\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios'\nimport { emit } from '@nextcloud/event-bus'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nexport default () => {\n\treturn axios.get(generateOcsUrl('core/navigation', 2) + '/apps?format=json')\n\t\t.then(({ data }) => {\n\t\t\tif (data.ocs.meta.statuscode !== 200) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\temit('nextcloud:app-menu.refresh', { apps: data.ocs.data })\n\t\t\twindow.dispatchEvent(new Event('resize'))\n\t\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport rebuildNavigation from '../service/rebuild-navigation.js'\n\nconst productName = window.OC.theme.productName\n\nexport default {\n\tcomputed: {\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map((group) => {\n\t\t\t\treturn { id: group, name: group }\n\t\t\t})\n\t\t},\n\t\tinstalling() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app && this?.appApiStore.getLoading('install') === true\n\t\t\t}\n\t\t\treturn this.$store.getters.loading('install')\n\t\t},\n\t\tisLoading() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app && this?.appApiStore.getLoading(this.app.id) === true\n\t\t\t}\n\t\t\treturn this.app && this.$store.getters.loading(this.app.id)\n\t\t},\n\t\tisInitializing() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app && (this.app?.status?.action === 'init' || this.app?.status?.action === 'healthcheck')\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tisDeploying() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app && this.app?.status?.action === 'deploy'\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tisManualInstall() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app?.daemon?.accepts_deploy_id === 'manual-install'\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tupdateButtonText() {\n\t\t\tif (this.app?.app_api && this.app?.daemon?.accepts_deploy_id === 'manual-install') {\n\t\t\t\treturn t('settings', 'Manually installed apps cannot be updated')\n\t\t\t}\n\t\t\treturn t('settings', 'Update to {version}', { version: this.app?.update })\n\t\t},\n\t\tenableButtonText() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'deploy') {\n\t\t\t\t\treturn t('settings', '{progress}% Deploying …', { progress: this.app?.status?.deploy ?? 0 })\n\t\t\t\t}\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'init') {\n\t\t\t\t\treturn t('settings', '{progress}% Initializing …', { progress: this.app?.status?.init ?? 0 })\n\t\t\t\t}\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'healthcheck') {\n\t\t\t\t\treturn t('settings', 'Health checking')\n\t\t\t\t}\n\t\t\t\tif (this.app.needsDownload) {\n\t\t\t\t\treturn t('settings', 'Deploy and Enable')\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable')\n\t\t\t} else {\n\t\t\t\tif (this.app.needsDownload) {\n\t\t\t\t\treturn t('settings', 'Download and enable')\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable')\n\t\t\t}\n\t\t},\n\t\tdisableButtonText() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'deploy') {\n\t\t\t\t\treturn t('settings', '{progress}% Deploying …', { progress: this.app?.status?.deploy })\n\t\t\t\t}\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'init') {\n\t\t\t\t\treturn t('settings', '{progress}% Initializing …', { progress: this.app?.status?.init })\n\t\t\t\t}\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'healthcheck') {\n\t\t\t\t\treturn t('settings', 'Health checking')\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn t('settings', 'Disable')\n\t\t},\n\t\tforceEnableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Allow untested app')\n\t\t\t}\n\t\t\treturn t('settings', 'Allow untested app')\n\t\t},\n\t\tenableButtonTooltip() {\n\t\t\tif (!this.app?.app_api && this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t\tforceEnableButtonTooltip() {\n\t\t\tconst base = t('settings', 'This app is not marked as compatible with your {productName} version.', { productName })\n\t\t\t\t+ ' '\n\t\t\t\t+ t('settings', 'If you continue you will still be able to install the app. Note that the app might not work as expected.')\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn base + ' ' + t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn base\n\t\t},\n\t\tdefaultDeployDaemonAccessible() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tif (this.app?.daemon && this.app?.daemon?.accepts_deploy_id === 'manual-install') {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tif (this.app?.daemon?.accepts_deploy_id === 'docker-install'\n\t\t\t\t\t&& this.appApiStore.getDefaultDaemon?.name === this.app?.daemon?.name) {\n\t\t\t\t\treturn this?.appApiStore.getDaemonAccessible === true\n\t\t\t\t}\n\t\t\t\treturn this?.appApiStore.getDaemonAccessible\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif (this.app && this.app.groups && this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasyncFindGroup(query) {\n\t\t\treturn this.$store.dispatch('getGroups', { search: query, limit: 5, offset: 0 })\n\t\t},\n\t\tisLimitedToGroups() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn this.app.groups.length || this.groupCheckedAppsData\n\t\t},\n\t\tsetGroupLimit() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn // not supported for app_api apps\n\t\t\t}\n\t\t\tif (!this.groupCheckedAppsData) {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: [] })\n\t\t\t}\n\t\t},\n\t\tcanLimitToGroups(app) {\n\t\t\tif ((app.types && app.types.includes('filesystem'))\n\t\t\t\t|| app.types.includes('prelogin')\n\t\t\t\t|| app.types.includes('authentication')\n\t\t\t\t|| app.types.includes('logging')\n\t\t\t\t|| app.types.includes('prevent_group_restriction')\n\t\t\t\t|| app?.app_api) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\taddGroupLimitation(groupArray) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn // not supported for app_api apps\n\t\t\t}\n\t\t\tconst group = groupArray.pop()\n\t\t\tconst groups = this.app.groups.concat([]).concat([group.id])\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups })\n\t\t},\n\t\tremoveGroupLimitation(group) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn // not supported for app_api apps\n\t\t\t}\n\t\t\tconst currentGroups = this.app.groups.concat([])\n\t\t\tconst index = currentGroups.indexOf(group.id)\n\t\t\tif (index > -1) {\n\t\t\t\tcurrentGroups.splice(index, 1)\n\t\t\t}\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: currentGroups })\n\t\t},\n\t\tforceEnable(appId) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.forceEnableApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('forceEnableApp', { appId, groups: [] })\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tenable(appId, daemon = null, deployOptions = {}) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.enableApp(appId, daemon, deployOptions)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId, groups: [] })\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tdisable(appId) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.disableApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('disableApp', { appId })\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tasync remove(appId, removeData = false) {\n\t\t\ttry {\n\t\t\t\tif (this.app?.app_api) {\n\t\t\t\t\tawait this.appApiStore.uninstallApp(appId, removeData)\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('uninstallApp', { appId, removeData })\n\t\t\t\t}\n\t\t\t\tawait rebuildNavigation()\n\t\t\t} catch (error) {\n\t\t\t\tshowError(error)\n\t\t\t}\n\t\t},\n\t\tinstall(appId) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.enableApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId })\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tupdate(appId) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.updateApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('updateApp', { appId })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\trebuildNavigation()\n\t\t\t\t\t\tthis.store.updateCount = Math.max(this.store.updateCount - 1, 0)\n\t\t\t\t\t})\n\t\t\t}\n\t\t},\n\t},\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigation,{attrs:{\"aria-label\":_setup.t('settings', 'Apps')},scopedSlots:_vm._u([{key:\"list\",fn:function(){return [(_setup.appstoreEnabled)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-discover\",\"to\":{ name: 'apps-category', params: { category: 'discover' } },\"name\":_setup.APPS_SECTION_ENUM.discover},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.discover}})]},proxy:true}],null,false,1397544286)}):_vm._e(),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-installed\",\"to\":{ name: 'apps-category', params: { category: 'installed' } },\"name\":_setup.APPS_SECTION_ENUM.installed},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.installed}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-enabled\",\"to\":{ name: 'apps-category', params: { category: 'enabled' } },\"name\":_setup.APPS_SECTION_ENUM.enabled},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.enabled}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-disabled\",\"to\":{ name: 'apps-category', params: { category: 'disabled' } },\"name\":_setup.APPS_SECTION_ENUM.disabled},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.disabled}})]},proxy:true}])}),_vm._v(\" \"),(_setup.store.updateCount > 0)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-updates\",\"to\":{ name: 'apps-category', params: { category: 'updates' } },\"name\":_setup.APPS_SECTION_ENUM.updates},scopedSlots:_vm._u([{key:\"counter\",fn:function(){return [_c(_setup.NcCounterBubble,[_vm._v(_vm._s(_setup.store.updateCount))])]},proxy:true},{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.updates}})]},proxy:true}],null,false,3001044337)}):_vm._e(),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-your-bundles\",\"to\":{ name: 'apps-category', params: { category: 'app-bundles' } },\"name\":_setup.APPS_SECTION_ENUM['app-bundles']},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.bundles}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationSpacer),_vm._v(\" \"),(_setup.appstoreEnabled && _setup.categoriesLoading)?_c('li',{staticClass:\"categories--loading\"},[_c(_setup.NcLoadingIcon,{attrs:{\"size\":20,\"aria-label\":_setup.t('settings', 'Loading categories')}})],1):(_setup.appstoreEnabled && !_setup.categoriesLoading)?[(_setup.isSubscribed)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-supported\",\"to\":{ name: 'apps-category', params: { category: 'supported' } },\"name\":_setup.APPS_SECTION_ENUM.supported},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.supported}})]},proxy:true}],null,false,613663011)}):_vm._e(),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-featured\",\"to\":{ name: 'apps-category', params: { category: 'featured' } },\"name\":_setup.APPS_SECTION_ENUM.featured},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.featured}})]},proxy:true}])}),_vm._v(\" \"),_vm._l((_setup.categories),function(category){return _c(_setup.NcAppNavigationItem,{key:category.id,attrs:{\"id\":`app-category-${category.id}`,\"name\":category.displayName,\"to\":{\n\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\tparams: { category: category.id },\n\t\t\t\t}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":category.icon}})]},proxy:true}],null,true)})})]:_vm._e(),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-developer-docs\",\"name\":_setup.t('settings', 'Developer documentation ↗'),\"href\":_setup.developerDocsUrl}})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreNavigation.vue?vue&type=style&index=0&id=6d2cb244&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreNavigation.vue?vue&type=style&index=0&id=6d2cb244&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppStoreNavigation.vue?vue&type=template&id=6d2cb244&scoped=true\"\nimport script from \"./AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppStoreNavigation.vue?vue&type=style&index=0&id=6d2cb244&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d2cb244\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-sidebar-tabs__release h2[data-v-69f0fc16]{border-bottom:1px solid var(--color-border);font-size:24px}.app-sidebar-tabs__release-text[data-v-69f0fc16] h3{font-size:20px}.app-sidebar-tabs__release-text[data-v-69f0fc16] h4{font-size:17px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue\"],\"names\":[],\"mappings\":\"AAEC,+CACC,2CAAA,CACA,cAAA,CAKA,oDACC,cAAA,CAED,oDACC,cAAA\",\"sourcesContent\":[\"\\n.app-sidebar-tabs__release {\\n\\th2 {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t\\tfont-size: 24px;\\n\\t}\\n\\n\\t&-text {\\n\\t\\t// Overwrite changelog heading styles\\n\\t\\t:deep(h3) {\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t}\\n\\t\\t:deep(h4) {\\n\\t\\t\\tfont-size: 17px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-level-badge[data-v-11da8cb3]{color:var(--color-text-maxcontrast);background-color:rgba(0,0,0,0);border:1px solid var(--color-text-maxcontrast);border-radius:var(--border-radius);display:flex;flex-direction:row;gap:6px;padding:3px 6px;width:fit-content}.app-level-badge--supported[data-v-11da8cb3]{background-color:var(--color-success);border-color:var(--color-border-success);color:var(--color-success-text)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppLevelBadge.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,mCAAA,CACA,8BAAA,CACA,8CAAA,CACA,kCAAA,CAEA,YAAA,CACA,kBAAA,CACA,OAAA,CACA,eAAA,CACA,iBAAA,CAEA,6CACC,qCAAA,CACA,wCAAA,CACA,+BAAA\",\"sourcesContent\":[\"\\n.app-level-badge {\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tbackground-color: transparent;\\n\\tborder: 1px solid var(--color-text-maxcontrast);\\n\\tborder-radius: var(--border-radius);\\n\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tgap: 6px;\\n\\tpadding: 3px 6px;\\n\\twidth: fit-content;\\n\\n\\t&--supported {\\n\\t\\tbackground-color: var(--color-success);\\n\\t\\tborder-color: var(--color-border-success);\\n\\t\\tcolor: var(--color-success-text);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-discover[data-v-32ad4b6a]{max-width:1008px;margin-inline:auto;padding-inline:54px;padding-block-end:var(--default-clickable-area, 44px);display:flex;flex-direction:column;gap:var(--default-clickable-area, 44px)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,gBAAA,CACA,kBAAA,CACA,mBAAA,CAEA,qDAAA,CAEA,YAAA,CACA,qBAAA,CACA,uCAAA\",\"sourcesContent\":[\"\\n.app-discover {\\n\\tmax-width: 1008px; /* 900px + 2x 54px padding for the carousel controls */\\n\\tmargin-inline: auto;\\n\\tpadding-inline: 54px;\\n\\t/* Padding required to make last element not bound to the bottom */\\n\\tpadding-block-end: var(--default-clickable-area, 44px);\\n\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: var(--default-clickable-area, 44px);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppContent,{staticClass:\"app-settings-content\",attrs:{\"page-heading\":_setup.pageHeading,\"page-title\":_setup.pageTitle}},[_c('h2',{staticClass:\"app-settings-content__label\",domProps:{\"textContent\":_vm._s(_setup.viewLabel)}}),_vm._v(\" \"),(_setup.currentCategory === 'discover')?_c(_setup.AppStoreDiscoverSection):(_setup.isLoading)?_c(_setup.NcEmptyContent,{staticClass:\"empty-content__loading\",attrs:{\"name\":_setup.t('settings', 'Loading app list')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcLoadingIcon,{attrs:{\"size\":64}})]},proxy:true}])}):_c(_setup.AppList,{attrs:{\"category\":_setup.currentCategory}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n\tvalue;\n\tnext;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\t}\n}\n\nexport default class Queue {\n\t#head;\n\t#tail;\n\t#size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this.#head) {\n\t\t\tthis.#tail.next = node;\n\t\t\tthis.#tail = node;\n\t\t} else {\n\t\t\tthis.#head = node;\n\t\t\tthis.#tail = node;\n\t\t}\n\n\t\tthis.#size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this.#head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#head = this.#head.next;\n\t\tthis.#size--;\n\t\treturn current.value;\n\t}\n\n\tpeek() {\n\t\tif (!this.#head) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.#head.value;\n\n\t\t// TODO: Node.js 18.\n\t\t// return this.#head?.value;\n\t}\n\n\tclear() {\n\t\tthis.#head = undefined;\n\t\tthis.#tail = undefined;\n\t\tthis.#size = 0;\n\t}\n\n\tget size() {\n\t\treturn this.#size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this.#head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n\n\t* drain() {\n\t\twhile (this.#head) {\n\t\t\tyield this.dequeue();\n\t\t}\n\t}\n}\n","import Queue from 'yocto-queue';\n\nexport default function pLimit(concurrency) {\n\tvalidateConcurrency(concurrency);\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst resumeNext = () => {\n\t\t// Process the next queued function if we're under the concurrency limit\n\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\tactiveCount++;\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst next = () => {\n\t\tactiveCount--;\n\t\tresumeNext();\n\t};\n\n\tconst run = async (function_, resolve, arguments_) => {\n\t\t// Execute the function and capture the result promise\n\t\tconst result = (async () => function_(...arguments_))();\n\n\t\t// Resolve immediately with the promise (don't wait for completion)\n\t\tresolve(result);\n\n\t\t// Wait for the function to complete (success or failure)\n\t\t// We catch errors here to prevent unhandled rejections,\n\t\t// but the original promise rejection is preserved for the caller\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\t// Decrement active count and process next queued function\n\t\tnext();\n\t};\n\n\tconst enqueue = (function_, resolve, arguments_) => {\n\t\t// Queue the internal resolve function instead of the run function\n\t\t// to preserve the asynchronous execution context.\n\t\tnew Promise(internalResolve => { // eslint-disable-line promise/param-names\n\t\t\tqueue.enqueue(internalResolve);\n\t\t}).then(run.bind(undefined, function_, resolve, arguments_)); // eslint-disable-line promise/prefer-await-to-then\n\n\t\t// Start processing immediately if we haven't reached the concurrency limit\n\t\tif (activeCount < concurrency) {\n\t\t\tresumeNext();\n\t\t}\n\t};\n\n\tconst generator = (function_, ...arguments_) => new Promise(resolve => {\n\t\tenqueue(function_, resolve, arguments_);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount,\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size,\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue() {\n\t\t\t\tqueue.clear();\n\t\t\t},\n\t\t},\n\t\tconcurrency: {\n\t\t\tget: () => concurrency,\n\n\t\t\tset(newConcurrency) {\n\t\t\t\tvalidateConcurrency(newConcurrency);\n\t\t\t\tconcurrency = newConcurrency;\n\n\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\t// eslint-disable-next-line no-unmodified-loop-condition\n\t\t\t\t\twhile (activeCount < concurrency && queue.size > 0) {\n\t\t\t\t\t\tresumeNext();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\tmap: {\n\t\t\tasync value(array, function_) {\n\t\t\t\tconst promises = array.map((value, index) => this(function_, value, index));\n\t\t\t\treturn Promise.all(promises);\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n\nexport function limitFunction(function_, options) {\n\tconst {concurrency} = options;\n\tconst limit = pLimit(concurrency);\n\n\treturn (...arguments_) => limit(() => function_(...arguments_));\n}\n\nfunction validateConcurrency(concurrency) {\n\tif (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n}\n","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=style&index=0&id=707dd976&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=style&index=0&id=707dd976&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppList.vue?vue&type=template&id=707dd976&scoped=true\"\nimport script from \"./AppList.vue?vue&type=script&lang=js\"\nexport * from \"./AppList.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppList.vue?vue&type=style&index=0&id=707dd976&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"707dd976\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"app-content-inner\"}},[_c('div',{staticClass:\"apps-list\",class:{\n\t\t\t'apps-list--list-view': (_vm.useBundleView || _vm.useListView),\n\t\t\t'apps-list--store-view': _vm.useAppStoreView,\n\t\t},attrs:{\"id\":\"apps-list\"}},[(_vm.useListView)?[(_vm.showUpdateAll)?_c('div',{staticClass:\"apps-list__toolbar\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.n('settings', '%n app has an update available', '%n apps have an update available', _vm.counter))+\"\\n\\t\\t\\t\\t\"),(_vm.showUpdateAll)?_c('NcButton',{attrs:{\"id\":\"app-list-update-all\",\"variant\":\"primary\"},on:{\"click\":_vm.updateAll}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.n('settings', 'Update', 'Update all', _vm.counter))+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.showUpdateAll)?_c('div',{staticClass:\"apps-list__toolbar\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'All apps are up-to-date.'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('TransitionGroup',{staticClass:\"apps-list__list-container\",attrs:{\"name\":\"apps-list\",\"tag\":\"table\"}},[_c('tr',{key:\"app-list-view-header\"},[_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Icon')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Name')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Version')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Level')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Actions')))])])]),_vm._v(\" \"),_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category}})})],2)]:_vm._e(),_vm._v(\" \"),(_vm.useBundleView)?_c('table',{staticClass:\"apps-list__list-container\"},[_c('tr',{key:\"app-list-view-header\"},[_c('th',{attrs:{\"id\":\"app-table-col-icon\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Icon')))])]),_vm._v(\" \"),_c('th',{attrs:{\"id\":\"app-table-col-name\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Name')))])]),_vm._v(\" \"),_c('th',{attrs:{\"id\":\"app-table-col-version\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Version')))])]),_vm._v(\" \"),_c('th',{attrs:{\"id\":\"app-table-col-level\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Level')))])]),_vm._v(\" \"),_c('th',{attrs:{\"id\":\"app-table-col-actions\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Actions')))])])]),_vm._v(\" \"),_vm._l((_vm.bundles),function(bundle){return [_c('tr',{key:bundle.id},[_c('th',{attrs:{\"id\":`app-table-rowgroup-${bundle.id}`,\"colspan\":\"5\",\"scope\":\"rowgroup\"}},[_c('div',{staticClass:\"apps-list__bundle-heading\"},[_c('span',{staticClass:\"apps-list__bundle-header\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(bundle.name)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"variant\":\"secondary\"},on:{\"click\":function($event){return _vm.toggleBundle(bundle.id)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', _vm.bundleToggleText(bundle.id)))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])],1)])]),_vm._v(\" \"),_vm._l((_vm.bundleApps(bundle.id)),function(app){return _c('AppItem',{key:bundle.id + app.id,attrs:{\"use-bundle-view\":true,\"headers\":`app-table-rowgroup-${bundle.id}`,\"app\":app,\"category\":_vm.category}})})]})],2):_vm._e(),_vm._v(\" \"),(_vm.useAppStoreView)?_c('ul',{staticClass:\"apps-list__store-container\"},_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":false}})}),1):_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"apps-list apps-list--list-view\",attrs:{\"id\":\"apps-list-search\"}},[_c('div',{staticClass:\"apps-list__list-container\"},[(_vm.search !== '' && _vm.searchApps.length > 0)?_c('table',{staticClass:\"apps-list__list-container\"},[_c('caption',{staticClass:\"apps-list__bundle-header\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Results from other categories'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('tr',{key:\"app-list-view-header\"},[_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Icon')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Name')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Version')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Level')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Actions')))])])]),_vm._v(\" \"),_vm._l((_vm.searchApps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category}})})],2):_vm._e()])]),_vm._v(\" \"),(_vm.search !== '' && !_vm.loading && _vm.searchApps.length === 0 && _vm.apps.length === 0)?_c('div',{staticClass:\"emptycontent emptycontent-search\",attrs:{\"id\":\"apps-list-empty\"}},[_c('div',{staticClass:\"icon-settings-dark\",attrs:{\"id\":\"app-list-empty-icon\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'No apps found for your version')))])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"app-discover\"},[(_setup.hasError)?_c(_setup.NcEmptyContent,{attrs:{\"name\":_setup.t('settings', 'Nothing to show'),\"description\":_setup.t('settings', 'Could not load section content from app store.')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiEyeOffOutline,\"size\":64}})]},proxy:true}],null,false,3626885458)}):(_setup.elements.length === 0)?_c(_setup.NcEmptyContent,{attrs:{\"name\":_setup.t('settings', 'Loading'),\"description\":_setup.t('settings', 'Fetching the latest news…')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcLoadingIcon,{attrs:{\"size\":64}})]},proxy:true}])}):_vm._l((_setup.elements),function(entry,index){return _c(_setup.getComponent(entry.type),_vm._b({key:entry.id ?? index,tag:\"component\"},'component',entry,false))})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * Helper to transform the JSON API results to proper frontend objects (app discover section elements)\n *\n * @param element The JSON API element to transform\n */\nexport function parseApiResponse(element) {\n const appElement = { ...element };\n if (appElement.date) {\n appElement.date = Date.parse(appElement.date);\n }\n if (appElement.expiryDate) {\n appElement.expiryDate = Date.parse(appElement.expiryDate);\n }\n if (appElement.type === 'post') {\n return appElement;\n }\n else if (appElement.type === 'showcase') {\n return appElement;\n }\n else if (appElement.type === 'carousel') {\n return appElement;\n }\n throw new Error(`Invalid argument, app discover element with type ${element.type ?? 'unknown'} is unknown`);\n}\n/**\n * Filter outdated or upcoming elements\n *\n * @param element Element to check\n */\nexport function filterElements(element) {\n const now = Date.now();\n // Element not yet published\n if (element.date && element.date > now) {\n return false;\n }\n // Element expired\n if (element.expiryDate && element.expiryDate < now) {\n return false;\n }\n return true;\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreDiscoverSection.vue?vue&type=style&index=0&id=32ad4b6a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreDiscoverSection.vue?vue&type=style&index=0&id=32ad4b6a&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppStoreDiscoverSection.vue?vue&type=template&id=32ad4b6a&scoped=true\"\nimport script from \"./AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppStoreDiscoverSection.vue?vue&type=style&index=0&id=32ad4b6a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"32ad4b6a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStore.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStore.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStore.vue?vue&type=style&index=0&id=0105bd03&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStore.vue?vue&type=style&index=0&id=0105bd03&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppStore.vue?vue&type=template&id=0105bd03&scoped=true\"\nimport script from \"./AppStore.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStore.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppStore.vue?vue&type=style&index=0&id=0105bd03&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0105bd03\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-details[data-v-e83f267a]{padding:20px}.app-details__actions-manage[data-v-e83f267a]{display:flex;align-items:center}.app-details__actions-manage input[data-v-e83f267a]{flex:0 1 auto;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-details__authors[data-v-e83f267a]{color:var(--color-text-maxcontrast)}.app-details__section[data-v-e83f267a]{margin-top:15px}.app-details__section h4[data-v-e83f267a]{font-size:16px;font-weight:bold;margin-block-end:5px}.app-details__interact[data-v-e83f267a]{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px}.app-details__documentation a[data-v-e83f267a]{text-decoration:underline}.app-details__documentation li[data-v-e83f267a]{padding-inline-start:20px}.app-details__documentation li[data-v-e83f267a]::before{width:5px;height:5px;border-radius:100%;background-color:var(--color-main-text);content:\"\";float:inline-start;margin-inline-start:-13px;position:relative;top:10px}.force[data-v-e83f267a]{color:var(--color-text-error);border-color:var(--color-border-error);background:var(--color-main-background)}.force[data-v-e83f267a]:hover,.force[data-v-e83f267a]:active{color:var(--color-main-background);border-color:var(--color-border-error) !important;background:var(--color-error)}.missing-dependencies[data-v-e83f267a]{list-style:initial;list-style-type:initial;list-style-position:inside}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue\"],\"names\":[],\"mappings\":\"AACA,8BACC,YAAA,CAIC,8CAEC,YAAA,CACA,kBAAA,CACA,oDACC,aAAA,CACA,WAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CAIH,uCACC,mCAAA,CAGD,uCACC,eAAA,CAEA,0CACC,cAAA,CACA,gBAAA,CACA,oBAAA,CAIF,wCACC,YAAA,CACA,kBAAA,CACA,cAAA,CACA,QAAA,CAIA,+CACC,yBAAA,CAED,gDACC,yBAAA,CAEA,wDACC,SAAA,CACA,UAAA,CACA,kBAAA,CACA,uCAAA,CACA,UAAA,CACA,kBAAA,CACA,yBAAA,CACA,iBAAA,CACA,QAAA,CAMJ,wBACC,6BAAA,CACA,sCAAA,CACA,uCAAA,CAGD,6DAEC,kCAAA,CACA,iDAAA,CACA,6BAAA,CAGD,uCACC,kBAAA,CACA,uBAAA,CACA,0BAAA\",\"sourcesContent\":[\"\\n.app-details {\\n\\tpadding: 20px;\\n\\n\\t&__actions {\\n\\t\\t// app management\\n\\t\\t&-manage {\\n\\t\\t\\t// if too many, shrink them and ellipsis\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tinput {\\n\\t\\t\\t\\tflex: 0 1 auto;\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t&__authors {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__section {\\n\\t\\tmargin-top: 15px;\\n\\n\\t\\th4 {\\n\\t\\t\\tfont-size: 16px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin-block-end: 5px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__interact {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tflex-wrap: wrap;\\n\\t\\tgap: 12px;\\n\\t}\\n\\n\\t&__documentation {\\n\\t\\ta {\\n\\t\\t\\ttext-decoration: underline;\\n\\t\\t}\\n\\t\\tli {\\n\\t\\t\\tpadding-inline-start: 20px;\\n\\n\\t\\t\\t&::before {\\n\\t\\t\\t\\twidth: 5px;\\n\\t\\t\\t\\theight: 5px;\\n\\t\\t\\t\\tborder-radius: 100%;\\n\\t\\t\\t\\tbackground-color: var(--color-main-text);\\n\\t\\t\\t\\tcontent: \\\"\\\";\\n\\t\\t\\t\\tfloat: inline-start;\\n\\t\\t\\t\\tmargin-inline-start: -13px;\\n\\t\\t\\t\\tposition: relative;\\n\\t\\t\\t\\ttop: 10px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.force {\\n\\tcolor: var(--color-text-error);\\n\\tborder-color: var(--color-border-error);\\n\\tbackground: var(--color-main-background);\\n}\\n\\n.force:hover,\\n.force:active {\\n\\tcolor: var(--color-main-background);\\n\\tborder-color: var(--color-border-error) !important;\\n\\tbackground: var(--color-error);\\n}\\n\\n.missing-dependencies {\\n\\tlist-style: initial;\\n\\tlist-style-type: initial;\\n\\tlist-style-position: inside;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n.app-score__wrapper[data-v-0774afca] {\n\tdisplay: inline-flex;\n\tcolor: var(--color-favorite, #a08b00);\n> *[data-v-0774afca] {\n\t\tvertical-align: text-bottom;\n}\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppScore.vue\"],\"names\":[],\"mappings\":\";AA0EA;CACA,oBAAA;CACA,qCAAA;AAEA;EACA,2BAAA;AACA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios';\nimport { showError, showInfo } from '@nextcloud/dialogs';\nimport { loadState } from '@nextcloud/initial-state';\nimport { translate as t } from '@nextcloud/l10n';\nimport { confirmPassword } from '@nextcloud/password-confirmation';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport api from './api.js';\nexport const useAppApiStore = defineStore('app-api-apps', {\n state: () => ({\n apps: [],\n updateCount: loadState('settings', 'appstoreExAppUpdateCount', 0),\n loading: {},\n loadingList: false,\n statusUpdater: null,\n daemonAccessible: loadState('settings', 'defaultDaemonConfigAccessible', false),\n defaultDaemon: loadState('settings', 'defaultDaemonConfig', null),\n dockerDaemons: [],\n }),\n getters: {\n getLoading: (state) => (id) => state.loading[id] ?? false,\n getAllApps: (state) => state.apps,\n getUpdateCount: (state) => state.updateCount,\n getDaemonAccessible: (state) => state.daemonAccessible,\n getDefaultDaemon: (state) => state.defaultDaemon,\n getAppStatus: (state) => (appId) => state.apps.find((app) => app.id === appId)?.status || null,\n getStatusUpdater: (state) => state.statusUpdater,\n getInitializingOrDeployingApps: (state) => state.apps.filter((app) => app?.status?.action\n && (app?.status?.action === 'deploy' || app.status.action === 'init' || app.status.action === 'healthcheck')\n && app.status.type !== ''),\n },\n actions: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n appsApiFailure(error) {\n showError(t('settings', 'An error occurred during the request. Unable to proceed.') + '
' + error.error.response.data.data.message, { isHTML: true });\n logger.error(error);\n },\n setLoading(id, value) {\n Vue.set(this.loading, id, value);\n },\n setError(appId, error) {\n const appIds = Array.isArray(appId) ? appId : [appId];\n appIds.forEach((_id) => {\n const app = this.apps.find((app) => app.id === _id);\n if (app) {\n app.error = error;\n }\n });\n },\n enableApp(appId, daemon, deployOptions) {\n this.setLoading(appId, true);\n this.setLoading('install', true);\n return confirmPassword().then(() => {\n return axios.post(generateUrl(`/apps/app_api/apps/enable/${appId}/${daemon.name}`), { deployOptions })\n .then((response) => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n if (!app.installed) {\n app.installed = true;\n app.needsDownload = false;\n app.daemon = daemon;\n app.status = {\n type: 'install',\n action: 'deploy',\n init: 0,\n deploy: 0,\n };\n }\n app.active = true;\n app.canUnInstall = false;\n app.removable = true;\n app.error = '';\n }\n this.updateAppsStatus();\n return axios.get(generateUrl('apps/files'))\n .then(() => {\n if (response.data.update_required) {\n showInfo(t('settings', 'The app has been enabled but needs to be updated.'), {\n onClick: () => window.location.reload(),\n close: false,\n });\n setTimeout(() => {\n location.reload();\n }, 5000);\n }\n })\n .catch(() => {\n this.setError(appId, t('settings', 'Error: This app cannot be enabled because it makes the server unstable'));\n });\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n this.setError(appId, error.response.data.data.message);\n this.appsApiFailure({ appId, error });\n });\n }).catch(() => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n });\n },\n forceEnableApp(appId) {\n this.setLoading(appId, true);\n this.setLoading('install', true);\n return confirmPassword().then(() => {\n return api.post(generateUrl('/apps/app_api/apps/force'), { appId })\n .then(() => {\n location.reload();\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n this.setError(appId, error.response.data.data.message);\n this.appsApiFailure({ appId, error });\n });\n }).catch(() => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n });\n },\n disableApp(appId) {\n this.setLoading(appId, true);\n return confirmPassword().then(() => {\n return api.get(generateUrl(`apps/app_api/apps/disable/${appId}`))\n .then(() => {\n this.setLoading(appId, false);\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n app.active = false;\n if (app.removable) {\n app.canUnInstall = true;\n }\n }\n return true;\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.appsApiFailure({ appId, error });\n });\n }).catch(() => {\n this.setLoading(appId, false);\n });\n },\n uninstallApp(appId, removeData) {\n this.setLoading(appId, true);\n return confirmPassword().then(() => {\n return api.get(generateUrl(`/apps/app_api/apps/uninstall/${appId}?removeData=${removeData}`))\n .then(() => {\n this.setLoading(appId, false);\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n app.active = false;\n app.needsDownload = true;\n app.installed = false;\n app.canUnInstall = false;\n app.canInstall = true;\n app.daemon = null;\n app.status = {};\n if (app.update !== null) {\n this.updateCount--;\n }\n app.update = undefined;\n }\n return true;\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.appsApiFailure({ appId, error });\n });\n });\n },\n updateApp(appId) {\n this.setLoading(appId, true);\n this.setLoading('install', true);\n return confirmPassword().then(() => {\n return api.get(generateUrl(`/apps/app_api/apps/update/${appId}`))\n .then(() => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n const version = app.update;\n app.update = undefined;\n app.version = version || app.version;\n app.status = {\n type: 'update',\n action: 'deploy',\n init: 0,\n deploy: 0,\n };\n app.error = '';\n }\n this.updateCount--;\n this.updateAppsStatus();\n return true;\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n this.appsApiFailure({ appId, error });\n });\n }).catch(() => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n });\n },\n async fetchAllApps() {\n this.loadingList = true;\n try {\n const response = await api.get(generateUrl('/apps/app_api/apps/list'));\n this.apps = response.data.apps;\n this.loadingList = false;\n return true;\n }\n catch (error) {\n logger.error(error);\n showError(t('settings', 'An error occurred during the request. Unable to proceed.'));\n this.loadingList = false;\n }\n },\n async fetchAppStatus(appId) {\n return api.get(generateUrl(`/apps/app_api/apps/status/${appId}`))\n .then((response) => {\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n app.status = response.data;\n }\n const initializingOrDeployingApps = this.getInitializingOrDeployingApps;\n logger.debug('initializingOrDeployingApps after setAppStatus', { initializingOrDeployingApps });\n if (initializingOrDeployingApps.length === 0) {\n logger.debug('clearing interval');\n clearInterval(this.statusUpdater);\n this.statusUpdater = null;\n }\n if (Object.hasOwn(response.data, 'error')\n && response.data.error !== ''\n && initializingOrDeployingApps.length === 1) {\n clearInterval(this.statusUpdater);\n this.statusUpdater = null;\n }\n })\n .catch((error) => {\n this.appsApiFailure({ appId, error });\n this.apps = this.apps.filter((app) => app.id !== appId);\n this.updateAppsStatus();\n });\n },\n async fetchDockerDaemons() {\n try {\n const { data } = await axios.get(generateUrl('/apps/app_api/daemons'));\n this.defaultDaemon = data.daemons.find((daemon) => daemon.name === data.default_daemon_config);\n this.dockerDaemons = data.daemons.filter((daemon) => daemon.accepts_deploy_id === 'docker-install');\n }\n catch (error) {\n logger.error('[app-api-store] Failed to fetch Docker daemons', { error });\n return false;\n }\n return true;\n },\n updateAppsStatus() {\n clearInterval(this.statusUpdater);\n const initializingOrDeployingApps = this.getInitializingOrDeployingApps;\n if (initializingOrDeployingApps.length === 0) {\n return;\n }\n this.statusUpdater = setInterval(() => {\n const initializingOrDeployingApps = this.getInitializingOrDeployingApps;\n logger.debug('initializingOrDeployingApps', { initializingOrDeployingApps });\n initializingOrDeployingApps.forEach((app) => {\n this.fetchAppStatus(app.id);\n });\n }, 2000);\n },\n },\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n.deploy-option[data-v-0ec0c17d] {\n\tmargin: calc(var(--default-grid-baseline) * 4) 0;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: flex-start;\n&__hint[data-v-0ec0c17d] {\n\t\tmargin-top: 4px;\n\t\tfont-size: 0.8em;\n\t\tcolor: var(--color-text-maxcontrast);\n}\n}\n.envs[data-v-0ec0c17d] {\n\twidth: 100%;\n\toverflow: auto;\n\theight: 100%;\n\tmax-height: 300px;\nli[data-v-0ec0c17d] {\n\t\tmargin: 10px 0;\n}\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue\"],\"names\":[],\"mappings\":\";AA6TA;CACA,gDAAA;CACA,aAAA;CACA,sBAAA;CACA,uBAAA;AAEA;EACA,eAAA;EACA,gBAAA;EACA,oCAAA;AACA;AACA;AAEA;CACA,WAAA;CACA,cAAA;CACA,YAAA;CACA,iBAAA;AAEA;EACA,cAAA;AACA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"app-score__wrapper\",attrs:{\"role\":\"img\",\"aria-label\":_vm.title,\"title\":_vm.title}},[_vm._l((_vm.fullStars),function(index){return _c('NcIconSvgWrapper',{key:`full-star-${index}`,attrs:{\"path\":_vm.mdiStar,\"inline\":\"\"}})}),_vm._v(\" \"),(_vm.hasHalfStar)?_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiStarHalfFull,\"inline\":\"\"}}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.emptyStars),function(index){return _c('NcIconSvgWrapper',{key:`empty-star-${index}`,attrs:{\"path\":_vm.mdiStarOutline,\"inline\":\"\"}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=style&index=0&id=0774afca&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=style&index=0&id=0774afca&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppScore.vue?vue&type=template&id=0774afca&scoped=true\"\nimport script from \"./AppScore.vue?vue&type=script&lang=ts\"\nexport * from \"./AppScore.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppScore.vue?vue&type=style&index=0&id=0774afca&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0774afca\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-description[data-v-1d5b4408]{padding:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,YAAA\",\"sourcesContent\":[\"\\n.app-description {\\n\\tpadding: 12px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcDialog,{attrs:{\"open\":_vm.show,\"name\":_vm.t('settings', 'Choose Deploy Daemon for {appName}', { appName: _vm.app.name }),\"size\":\"normal\"},on:{\"update:open\":_setup.closeModal}},[_c(_setup.DaemonSelectionList,{attrs:{\"app\":_vm.app,\"deploy-options\":_vm.deployOptions},on:{\"close\":_setup.closeModal}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulleted.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulleted.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FormatListBulleted.vue?vue&type=template&id=5c444520\"\nimport script from \"./FormatListBulleted.vue?vue&type=script&lang=js\"\nexport * from \"./FormatListBulleted.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon format-list-bulleted-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7,5H21V7H7V5M7,13V11H21V13H7M4,4.5A1.5,1.5 0 0,1 5.5,6A1.5,1.5 0 0,1 4,7.5A1.5,1.5 0 0,1 2.5,6A1.5,1.5 0 0,1 4,4.5M4,10.5A1.5,1.5 0 0,1 5.5,12A1.5,1.5 0 0,1 4,13.5A1.5,1.5 0 0,1 2.5,12A1.5,1.5 0 0,1 4,10.5M7,19V17H21V19H7M4,16.5A1.5,1.5 0 0,1 5.5,18A1.5,1.5 0 0,1 4,19.5A1.5,1.5 0 0,1 2.5,18A1.5,1.5 0 0,1 4,16.5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcListItem',{attrs:{\"name\":_vm.itemTitle,\"details\":_vm.isDefault ? _vm.t('settings', 'Default') : '',\"force-display-actions\":true,\"counter-number\":_vm.daemon.exAppsCount,\"active\":_vm.isDefault,\"counter-type\":\"highlighted\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.selectDaemonAndInstall.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"subname\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.daemon.accepts_deploy_id)+\"\\n\\t\")]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionEntry.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionEntry.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DaemonSelectionEntry.vue?vue&type=template&id=16f518b8\"\nimport script from \"./DaemonSelectionEntry.vue?vue&type=script&lang=js\"\nexport * from \"./DaemonSelectionEntry.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionList.vue?vue&type=script&setup=true&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionList.vue?vue&type=script&setup=true&lang=js\"","\n\n\n\n\n\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionList.vue?vue&type=style&index=0&id=a31da1f4&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionList.vue?vue&type=style&index=0&id=a31da1f4&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DaemonSelectionList.vue?vue&type=template&id=a31da1f4&scoped=true\"\nimport script from \"./DaemonSelectionList.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./DaemonSelectionList.vue?vue&type=script&setup=true&lang=js\"\nimport style0 from \"./DaemonSelectionList.vue?vue&type=style&index=0&id=a31da1f4&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a31da1f4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"daemon-selection-list\"},[(_setup.dockerDaemons.length > 0)?_c('ul',{attrs:{\"aria-label\":_vm.t('settings', 'Registered Deploy daemons list')}},_vm._l((_setup.dockerDaemons),function(daemon){return _c(_setup.DaemonSelectionEntry,{key:daemon.id,attrs:{\"daemon\":daemon,\"is-default\":_setup.defaultDaemon.name === daemon.name,\"app\":_vm.app,\"deploy-options\":_vm.deployOptions},on:{\"close\":_setup.closeModal}})}),1):_c(_setup.NcEmptyContent,{staticClass:\"daemon-selection-list__empty-content\",attrs:{\"name\":_vm.t('settings', 'No Deploy daemons configured'),\"description\":_vm.t('settings', 'Register a custom one or setup from available templates')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.FormatListBullet,{attrs:{\"size\":20}})]},proxy:true},{key:\"action\",fn:function(){return [_c(_setup.NcButton,{attrs:{\"href\":_setup.appApiAdminPage}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Manage Deploy daemons'))+\"\\n\\t\\t\\t\")])]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionDialog.vue?vue&type=script&setup=true&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionDialog.vue?vue&type=script&setup=true&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./DaemonSelectionDialog.vue?vue&type=template&id=02d5b285\"\nimport script from \"./DaemonSelectionDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./DaemonSelectionDialog.vue?vue&type=script&setup=true&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { mdiAccountMultipleOutline, mdiAccountOutline, mdiArchiveOutline, mdiCheck, mdiClipboardFlowOutline, mdiClose, mdiCogOutline, mdiControllerClassicOutline, mdiCreationOutline, mdiDownload, mdiFileDocumentEdit, mdiFolder, mdiKeyOutline, mdiMagnify, mdiMonitorEye, mdiMultimedia, mdiOfficeBuildingOutline, mdiOpenInApp, mdiSecurity, mdiStar, mdiStarCircleOutline, mdiStarShootingOutline, mdiTools, mdiViewColumnOutline, } from '@mdi/js';\n/**\n * SVG paths used for appstore category icons\n */\nexport default Object.freeze({\n // system special categories\n discover: mdiStarCircleOutline,\n installed: mdiAccountOutline,\n enabled: mdiCheck,\n disabled: mdiClose,\n bundles: mdiArchiveOutline,\n supported: mdiStarShootingOutline,\n featured: mdiStar,\n updates: mdiDownload,\n // generic category\n ai: mdiCreationOutline,\n auth: mdiKeyOutline,\n customization: mdiCogOutline,\n dashboard: mdiViewColumnOutline,\n files: mdiFolder,\n games: mdiControllerClassicOutline,\n integration: mdiOpenInApp,\n monitoring: mdiMonitorEye,\n multimedia: mdiMultimedia,\n office: mdiFileDocumentEdit,\n organization: mdiOfficeBuildingOutline,\n search: mdiMagnify,\n security: mdiSecurity,\n social: mdiAccountMultipleOutline,\n tools: mdiTools,\n workflow: mdiClipboardFlowOutline,\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*!\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */.app-item[data-v-50fa5285]{position:relative}.app-item[data-v-50fa5285]:hover{background-color:var(--color-background-dark)}.app-item--list-view[data-v-50fa5285]{--app-item-padding: calc(var(--default-grid-baseline) * 2);--app-item-height: calc(var(--default-clickable-area) + var(--app-item-padding) * 2)}.app-item--list-view.app-item--selected[data-v-50fa5285]{background-color:var(--color-background-dark)}.app-item--list-view>*[data-v-50fa5285]{vertical-align:middle;border-bottom:1px solid var(--color-border);padding:var(--app-item-padding);height:var(--app-item-height)}.app-item--list-view .app-image[data-v-50fa5285]{width:var(--default-clickable-area);height:auto;text-align:end}.app-item--list-view .app-image-icon svg[data-v-50fa5285],.app-item--list-view .app-image-icon .icon-settings-dark[data-v-50fa5285]{margin-top:5px;width:20px;height:20px;opacity:.5;background-size:cover;display:inline-block}.app-item--list-view .app-name[data-v-50fa5285]{padding:0 var(--app-item-padding)}.app-item--list-view .app-name--link[data-v-50fa5285]{height:var(--app-item-height);display:flex;align-items:center}.app-item--list-view .app-name--link[data-v-50fa5285]::after{content:\"\";position:absolute;inset-inline:0;height:var(--app-item-height)}.app-item--list-view .app-actions[data-v-50fa5285]{display:flex;gap:var(--app-item-padding);flex-wrap:wrap;justify-content:end}.app-item--list-view .app-actions .icon-loading-small[data-v-50fa5285]{display:inline-block;top:4px;margin-inline-end:10px}@media only screen and (max-width: 900px){.app-item--list-view .app-version[data-v-50fa5285],.app-item--list-view .app-level[data-v-50fa5285]{display:none}}@media only screen and (max-width: 512px){.app-item--list-view .app-actions[data-v-50fa5285]{display:none}}.app-item--store-view[data-v-50fa5285]{padding:30px}.app-item--store-view .app-image-icon .icon-settings-dark[data-v-50fa5285]{width:100%;height:150px;background-size:45px;opacity:.5}.app-item--store-view .app-image-icon svg[data-v-50fa5285]{position:absolute;bottom:43px;width:64px;height:64px;opacity:.1}.app-item--store-view .app-name[data-v-50fa5285]{margin:5px 0}.app-item--store-view .app-name--link[data-v-50fa5285]::after{content:\"\";position:absolute;inset-block:0;inset-inline:0}.app-item--store-view .app-actions[data-v-50fa5285]{margin:10px 0}@media only screen and (min-width: 1601px){.app-item--store-view[data-v-50fa5285]{width:25%}.app-item--store-view.app-item--with-sidebar[data-v-50fa5285]{width:33%}}@media only screen and (max-width: 1600px){.app-item--store-view[data-v-50fa5285]{width:25%}.app-item--store-view.app-item--with-sidebar[data-v-50fa5285]{width:33%}}@media only screen and (max-width: 1400px){.app-item--store-view[data-v-50fa5285]{width:33%}.app-item--store-view.app-item--with-sidebar[data-v-50fa5285]{width:50%}}@media only screen and (max-width: 900px){.app-item--store-view[data-v-50fa5285]{width:50%}.app-item--store-view.app-item--with-sidebar[data-v-50fa5285]{width:100%}}@media only screen and (max-width: 1024px){.app-item--store-view[data-v-50fa5285]{width:50%}}@media only screen and (max-width: 480px){.app-item--store-view[data-v-50fa5285]{width:100%}}.app-icon[data-v-50fa5285]{filter:var(--background-invert-if-bright)}.app-image[data-v-50fa5285]{position:relative;height:150px;opacity:1;overflow:hidden}.app-image img[data-v-50fa5285]{width:100%}.app-version[data-v-50fa5285]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/css/variables.scss\",\"webpack://./apps/settings/src/components/AppList/AppItem.vue\"],\"names\":[],\"mappings\":\"AAEA;;;EAAA,CCEA,2BACC,iBAAA,CAEA,iCACC,6CAAA,CAGD,sCACC,0DAAA,CACA,oFAAA,CAEA,yDACC,6CAAA,CAGD,wCACC,qBAAA,CACA,2CAAA,CACA,+BAAA,CACA,6BAAA,CAGD,iDACC,mCAAA,CACA,WAAA,CACA,cAAA,CAGD,oIAEC,cAAA,CACA,UAAA,CACA,WAAA,CACA,UAAA,CACA,qBAAA,CACA,oBAAA,CAGD,gDACC,iCAAA,CAGD,sDACC,6BAAA,CACA,YAAA,CACA,kBAAA,CAMD,6DACC,UAAA,CACA,iBAAA,CACA,cAAA,CACA,6BAAA,CAGD,mDACC,YAAA,CACA,2BAAA,CACA,cAAA,CACA,mBAAA,CAEA,uEACC,oBAAA,CACA,OAAA,CACA,sBAAA,CAKF,0CACC,oGAEC,YAAA,CAAA,CAKF,0CACC,mDACC,YAAA,CAAA,CAKH,uCACC,YAAA,CAEA,2EACC,UAAA,CACA,YAAA,CACA,oBAAA,CACA,UAAA,CAGD,2DACC,iBAAA,CACA,WAAA,CAEA,UAAA,CACA,WAAA,CACA,UAAA,CAGD,iDACC,YAAA,CAGD,8DACC,UAAA,CACA,iBAAA,CACA,aAAA,CACA,cAAA,CAGD,oDACC,aAAA,CAGD,2CAlCD,uCAmCE,SAAA,CAEA,8DACC,SAAA,CAAA,CAIF,2CA1CD,uCA2CE,SAAA,CAEA,8DACC,SAAA,CAAA,CAIF,2CAlDD,uCAmDE,SAAA,CAEA,8DACC,SAAA,CAAA,CAIF,0CA1DD,uCA2DE,SAAA,CAEA,8DACC,UAAA,CAAA,CAIF,2CAlED,uCAmEE,SAAA,CAAA,CAGD,0CAtED,uCAuEE,UAAA,CAAA,CAKH,2BACC,yCAAA,CAGD,4BACC,iBAAA,CACA,YAAA,CACA,SAAA,CACA,eAAA,CAEA,gCACC,UAAA,CAIF,8BACC,mCAAA\",\"sourcesContent\":[\"@use 'sass:color';\\n\\n/*!\\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n// SCSS darken/lighten function override\\n@function nc-darken($color, $value) {\\n\\t@return color.adjust($color, $lightness: - $value, $space: hsl);\\n}\\n\\n@function nc-lighten($color, $value) {\\n\\t@return color.adjust($color, $lightness: $value, $space: hsl);\\n}\\n\\n// SCSS variables\\n// DEPRECATED, please use CSS4 vars\\n$color-main-text: #222 !default; // Not #000 for better readability\\n$color-main-background: #fff !default;\\n$color-main-background-translucent: rgba($color-main-background, .97) !default;\\n\\n// used for different active/hover/focus/disabled states\\n$color-background-hover: nc-darken($color-main-background, 4%) !default;\\n$color-background-dark: nc-darken($color-main-background, 7%) !default;\\n$color-background-darker: nc-darken($color-main-background, 14%) !default;\\n\\n$color-placeholder-light: nc-darken($color-main-background, 10%) !default;\\n$color-placeholder-dark: nc-darken($color-main-background, 20%) !default;\\n\\n$color-primary: #0082c9 !default;\\n$color-primary-hover: color.mix($color-primary, $color-main-background, 80%) !default;\\n\\n$color-primary-light: color.mix($color-primary, $color-main-background, 10%) !default;\\n$color-primary-light-text: $color-primary !default;\\n$color-primary-light-hover: color.mix($color-primary-light, $color-main-text, 95%) !default;\\n\\n$color-primary-text: #ffffff !default;\\n// do not use nc-darken/lighten in case of overriding because\\n// primary-text is independent of color-main-text\\n$color-primary-element-text-dark: color.adjust($color-primary-text, $lightness: -7%, $space: hsl) !default;\\n$color-primary-element: $color-primary !default;\\n$color-primary-element-hover: color.mix($color-primary-element, $color-main-background, 80%) !default;\\n$color-primary-element-light: color.adjust($color-primary-element, $lightness: 15%, $space: hsl) !default;\\n\\n$color-error: #e9322d;\\n$color-error-hover: color.mix($color-error, $color-main-background, 80%) !default;\\n$color-warning: #eca700;\\n$color-warning-hover: color.mix($color-warning, $color-main-background, 80%) !default;\\n$color-success: #46ba61;\\n$color-success-hover: color.mix($color-success, $color-main-background, 80%) !default;\\n// used for svg\\n$color-white: #fff;\\n$color-black: #000;\\n$color-yellow: #FC0;\\n\\n// rgb(118, 118, 118) / #767676\\n// min. color contrast for normal text on white background according to WCAG AA\\n// (Works as well: color: #000; opacity: 0.57;)\\n$color-text-maxcontrast: nc-lighten($color-main-text, 33%) !default;\\n\\n$image-logo: url('../img/logo/logo.svg?v=1') !default;\\n$image-login-background: url('../img/background.png?v=2') !default;\\n$image-logoheader: url('../img/logo/logo.svg?v=1') !default;\\n$image-favicon: url('../img/logo/logo.svg?v=1') !default;\\n\\n$color-loading-light: #ccc !default;\\n$color-loading-dark: #444 !default;\\n\\n$color-box-shadow: color.adjust(nc-darken($color-main-background, 70%), $alpha: -0.5, $space: hsl) !default;\\n\\n// light border like file table or app-content list\\n$color-border: nc-darken($color-main-background, 7%) !default;\\n// darker border like inputs or very visible elements\\n$color-border-dark: nc-darken($color-main-background, 14%) !default;\\n\\n$border-radius: 3px !default;\\n$border-radius-large: 10px !default;\\n// Pill-style button, value is large so big buttons also have correct roundness\\n$border-radius-pill: 100px !default;\\n\\n$font-face: system-ui, -apple-system, \\\"Segoe UI\\\", Roboto, Oxygen-Sans, Cantarell, Ubuntu, \\\"Helvetica Neue\\\", \\\"Noto Sans\\\", \\\"Liberation Sans\\\", Arial, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\", \\\"Noto Color Emoji\\\" !default;\\n$default-font-size: 15px;\\n\\n$default-line-height: 24px;\\n\\n$animation-quick: 100ms;\\n$animation-slow: 300ms;\\n\\n// various structure data\\n$header-height: 50px;\\n$navigation-width: 300px;\\n$sidebar-min-width: 300px;\\n$sidebar-max-width: 500px;\\n$list-min-width: 200px;\\n$list-max-width: 300px;\\n$header-menu-item-height: 44px;\\n$header-menu-profile-item-height: 66px;\\n\\n// mobile. Keep in sync with core/js/js.js\\n$breakpoint-mobile: 1024px;\\n\",\"\\n@use '../../../../../core/css/variables.scss' as variables;\\n@use 'sass:math';\\n\\n.app-item {\\n\\tposition: relative;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n\\n\\t&--list-view {\\n\\t\\t--app-item-padding: calc(var(--default-grid-baseline) * 2);\\n\\t\\t--app-item-height: calc(var(--default-clickable-area) + var(--app-item-padding) * 2);\\n\\n\\t\\t&.app-item--selected {\\n\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t}\\n\\n\\t\\t> * {\\n\\t\\t\\tvertical-align: middle;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t\\t\\tpadding: var(--app-item-padding);\\n\\t\\t\\theight: var(--app-item-height);\\n\\t\\t}\\n\\n\\t\\t.app-image {\\n\\t\\t\\twidth: var(--default-clickable-area);\\n\\t\\t\\theight: auto;\\n\\t\\t\\ttext-align: end;\\n\\t\\t}\\n\\n\\t\\t.app-image-icon svg,\\n\\t\\t.app-image-icon .icon-settings-dark {\\n\\t\\t\\tmargin-top: 5px;\\n\\t\\t\\twidth: 20px;\\n\\t\\t\\theight: 20px;\\n\\t\\t\\topacity: .5;\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\n\\t\\t.app-name {\\n\\t\\t\\tpadding: 0 var(--app-item-padding);\\n\\t\\t}\\n\\n\\t\\t.app-name--link {\\n\\t\\t\\theight: var(--app-item-height);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t}\\n\\n\\t\\t// Note: because of Safari bug, we cannot position link overlay relative to the table row\\n\\t\\t// So we need to manually position it relative to the table container and cell\\n\\t\\t// See: https://bugs.webkit.org/show_bug.cgi?id=240961\\n\\t\\t.app-name--link::after {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tinset-inline: 0;\\n\\t\\t\\theight: var(--app-item-height);\\n\\t\\t}\\n\\n\\t\\t.app-actions {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tgap: var(--app-item-padding);\\n\\t\\t\\tflex-wrap: wrap;\\n\\t\\t\\tjustify-content: end;\\n\\n\\t\\t\\t.icon-loading-small {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\ttop: 4px;\\n\\t\\t\\t\\tmargin-inline-end: 10px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t/* hide app version and level on narrower screens */\\n\\t\\t@media only screen and (max-width: 900px) {\\n\\t\\t\\t.app-version,\\n\\t\\t\\t.app-level {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t/* Hide actions on a small screen. Click on app opens fill-screen sidebar with the buttons */\\n\\t\\t@media only screen and (max-width: math.div(variables.$breakpoint-mobile, 2)) {\\n\\t\\t\\t.app-actions {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&--store-view {\\n\\t\\tpadding: 30px;\\n\\n\\t\\t.app-image-icon .icon-settings-dark {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 150px;\\n\\t\\t\\tbackground-size: 45px;\\n\\t\\t\\topacity: 0.5;\\n\\t\\t}\\n\\n\\t\\t.app-image-icon svg {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tbottom: 43px;\\n\\t\\t\\t/* position halfway vertically */\\n\\t\\t\\twidth: 64px;\\n\\t\\t\\theight: 64px;\\n\\t\\t\\topacity: .1;\\n\\t\\t}\\n\\n\\t\\t.app-name {\\n\\t\\t\\tmargin: 5px 0;\\n\\t\\t}\\n\\n\\t\\t.app-name--link::after {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tinset-block: 0;\\n\\t\\t\\tinset-inline: 0;\\n\\t\\t}\\n\\n\\t\\t.app-actions {\\n\\t\\t\\tmargin: 10px 0;\\n\\t\\t}\\n\\n\\t\\t@media only screen and (min-width: 1601px) {\\n\\t\\t\\twidth: 25%;\\n\\n\\t\\t\\t&.app-item--with-sidebar {\\n\\t\\t\\t\\twidth: 33%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: 1600px) {\\n\\t\\t\\twidth: 25%;\\n\\n\\t\\t\\t&.app-item--with-sidebar {\\n\\t\\t\\t\\twidth: 33%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: 1400px) {\\n\\t\\t\\twidth: 33%;\\n\\n\\t\\t\\t&.app-item--with-sidebar {\\n\\t\\t\\t\\twidth: 50%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: 900px) {\\n\\t\\t\\twidth: 50%;\\n\\n\\t\\t\\t&.app-item--with-sidebar {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: variables.$breakpoint-mobile) {\\n\\t\\t\\twidth: 50%;\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: 480px) {\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t}\\n}\\n\\n.app-icon {\\n\\tfilter: var(--background-invert-if-bright);\\n}\\n\\n.app-image {\\n\\tposition: relative;\\n\\theight: 150px;\\n\\topacity: 1;\\n\\toverflow: hidden;\\n\\n\\timg {\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\\n.app-version {\\n\\tcolor: var(--color-text-maxcontrast);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n.empty-content__loading[data-v-0105bd03] {\n\theight: 100%;\n}\n.app-settings-content__label[data-v-0105bd03] {\n\tmargin-block-start: var(--app-navigation-padding);\n\tmargin-inline-start: calc(var(--default-clickable-area) + var(--app-navigation-padding) * 2);\n\tmin-height: var(--default-clickable-area);\n\tline-height: var(--default-clickable-area);\n\tvertical-align: center;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/AppStore.vue\"],\"names\":[],\"mappings\":\";AA2EA;CACA,YAAA;AACA;AAEA;CACA,iDAAA;CACA,4FAAA;CACA,yCAAA;CACA,0CAAA;CACA,sBAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of verification constants, according to Apps */\nexport const APPS_SECTION_ENUM = Object.freeze({\n\tdiscover: t('settings', 'Discover'),\n\tinstalled: t('settings', 'Your apps'),\n\tenabled: t('settings', 'Active apps'),\n\tdisabled: t('settings', 'Disabled apps'),\n\tupdates: t('settings', 'Updates'),\n\t'app-bundles': t('settings', 'App bundles'),\n\tfeatured: t('settings', 'Featured apps'),\n\tsupported: t('settings', 'Supported apps'), // From subscription\n})\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.isSupported || _setup.isFeatured)?_c('span',{staticClass:\"app-level-badge\",class:{ 'app-level-badge--supported': _setup.isSupported },attrs:{\"title\":_setup.badgeTitle}},[_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.badgeIcon,\"size\":20,\"inline\":\"\"}}),_vm._v(\"\\n\\t\"+_vm._s(_setup.badgeText)+\"\\n\")],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=style&index=0&id=11da8cb3&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=style&index=0&id=11da8cb3&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppLevelBadge.vue?vue&type=template&id=11da8cb3&scoped=true\"\nimport script from \"./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppLevelBadge.vue?vue&type=style&index=0&id=11da8cb3&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"11da8cb3\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.settings-markdown[data-v-62ec0d6b] a{text-decoration:underline}.settings-markdown[data-v-62ec0d6b] a::after{content:\"↗\";padding-inline:calc(var(--default-grid-baseline)/2)}.settings-markdown[data-v-62ec0d6b] pre{white-space:pre;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.settings-markdown[data-v-62ec0d6b] p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown[data-v-62ec0d6b] li{position:relative}.settings-markdown[data-v-62ec0d6b] ul,.settings-markdown[data-v-62ec0d6b] ol{padding-inline-start:10px;margin-inline-start:10px}.settings-markdown[data-v-62ec0d6b] ul li{list-style-type:disc}.settings-markdown[data-v-62ec0d6b] ul>li>ul>li{list-style-type:circle}.settings-markdown[data-v-62ec0d6b] ul>li>ul>li ul li{list-style-type:square}.settings-markdown[data-v-62ec0d6b] blockquote{padding-inline-start:1em;border-inline-start:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-inline:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./Markdown.vue\",\"webpack://./apps/settings/src/components/Markdown.vue\"],\"names\":[],\"mappings\":\"AAAA,sCCEC,yBACC,CAAA,6CACA,WACC,CAAA,mDACA,CAAA,wCAIF,eACC,CAAA,eACA,CAAA,6CACA,CAAA,kCACA,CAAA,iBACA,CAAA,iBACA,CAAA,2CAGD,6CACC,CAAA,kCACA,CAAA,iBACA,CAAA,uCAGD,iBACC,CAAA,8EAGD,yBACC,CAAA,wBACA,CAAA,0CAGD,oBACC,CAAA,gDAGD,sBACC,CAAA,sDAGD,sBACC,CAAA,+CAGD,wBACC,CAAA,0DACA,CAAA,mCACA,CAAA,eACA\",\"sourcesContent\":[\".settings-markdown :deep a{text-decoration:underline}.settings-markdown :deep a::after{content:\\\"↗\\\";padding-inline:calc(var(--default-grid-baseline)/2)}.settings-markdown :deep pre{white-space:pre;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.settings-markdown :deep p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown :deep li{position:relative}.settings-markdown :deep ul,.settings-markdown :deep ol{padding-inline-start:10px;margin-inline-start:10px}.settings-markdown :deep ul li{list-style-type:disc}.settings-markdown :deep ul>li>ul>li{list-style-type:circle}.settings-markdown :deep ul>li>ul>li ul li{list-style-type:square}.settings-markdown :deep blockquote{padding-inline-start:1em;border-inline-start:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-inline:0}\",\"\\n.settings-markdown :deep {\\n\\ta {\\n\\t\\ttext-decoration: underline;\\n\\t\\t&::after {\\n\\t\\t\\tcontent: '↗';\\n\\t\\t\\tpadding-inline: calc(var(--default-grid-baseline) / 2);\\n\\t\\t}\\n\\t}\\n\\n\\tpre {\\n\\t\\twhite-space: pre;\\n\\t\\toverflow-x: auto;\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: 1em 1.3em;\\n\\t\\tmargin-bottom: 1em;\\n\\t}\\n\\n\\tp code {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: .1em .3em;\\n\\t}\\n\\n\\tli {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\tul, ol {\\n\\t\\tpadding-inline-start: 10px;\\n\\t\\tmargin-inline-start: 10px;\\n\\t}\\n\\n\\tul li {\\n\\t\\tlist-style-type: disc;\\n\\t}\\n\\n\\tul > li > ul > li {\\n\\t\\tlist-style-type: circle;\\n\\t}\\n\\n\\tul > li > ul > li ul li {\\n\\t\\tlist-style-type: square;\\n\\t}\\n\\n\\tblockquote {\\n\\t\\tpadding-inline-start: 1em;\\n\\t\\tborder-inline-start: 4px solid var(--color-primary-element);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-inline: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.listView ? 'tr' : (_vm.inline ? 'article' : 'li'),{tag:\"component\",staticClass:\"app-item\",class:{\n\t\t'app-item--list-view': _vm.listView,\n\t\t'app-item--store-view': !_vm.listView,\n\t\t'app-item--selected': _vm.isSelected,\n\t\t'app-item--with-sidebar': _vm.withSidebar,\n\t}},[_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-image app-image-icon\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-icon`)}},[(!_vm.app?.app_api && _vm.shouldDisplayDefaultIcon)?_c('div',{staticClass:\"icon-settings-dark\"}):(_vm.app.app_api && _vm.shouldDisplayDefaultIcon)?_c('NcIconSvgWrapper',{staticStyle:{\"min-width\":\"auto\",\"min-height\":\"auto\",\"height\":\"100%\"},attrs:{\"path\":_vm.mdiCogOutline,\"size\":_vm.listView ? 24 : 48}}):(_vm.listView && _vm.app.preview && !_vm.app.app_api)?_c('svg',{attrs:{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"0 0 32 32\"}},[_c('image',{staticClass:\"app-icon\",attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"32\",\"height\":\"32\",\"preserveAspectRatio\":\"xMinYMin meet\",\"xlink:href\":_vm.app.preview}})]):_vm._e(),_vm._v(\" \"),(!_vm.listView && _vm.app.screenshot && _vm.screenshotLoaded)?_c('img',{attrs:{\"src\":_vm.app.screenshot,\"alt\":\"\"}}):_vm._e()],1),_vm._v(\" \"),_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-name\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-name`)}},[_c('router-link',{staticClass:\"app-name--link\",attrs:{\"to\":{\n\t\t\t\tname: 'apps-details',\n\t\t\t\tparams: {\n\t\t\t\t\tcategory: _vm.category,\n\t\t\t\t\tid: _vm.app.id,\n\t\t\t\t},\n\t\t\t},\"aria-label\":_vm.t('settings', 'Show details for {appName} app', { appName: _vm.app.name })}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.app.name)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(!_vm.listView)?_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-summary\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-version`)}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.summary)+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.listView)?_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-version\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-version`)}},[(_vm.app.version)?_c('span',[_vm._v(_vm._s(_vm.app.version))]):(_vm.app.appstoreData.releases[0].version)?_c('span',[_vm._v(_vm._s(_vm.app.appstoreData.releases[0].version))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-level\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-level`)}},[_c('AppLevelBadge',{attrs:{\"level\":_vm.app.level}}),_vm._v(\" \"),(_vm.hasRating && !_vm.listView)?_c('AppScore',{attrs:{\"score\":_vm.app.score}}):_vm._e()],1),_vm._v(\" \"),(!_vm.inline)?_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-actions\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-actions`)}},[(_vm.app.error)?_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.app.error)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isLoading || _vm.isInitializing)?_c('div',{staticClass:\"icon icon-loading-small\"}):_vm._e(),_vm._v(\" \"),(_vm.app.update)?_c('NcButton',{attrs:{\"variant\":\"primary\",\"disabled\":_vm.installing || _vm.isLoading || !_vm.defaultDeployDaemonAccessible || _vm.isManualInstall,\"title\":_vm.updateButtonText},on:{\"click\":function($event){$event.stopPropagation();return _vm.update(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Update to {update}', { update: _vm.app.update }))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('NcButton',{staticClass:\"uninstall\",attrs:{\"variant\":\"tertiary\",\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.remove(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Remove'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('NcButton',{attrs:{\"disabled\":_vm.installing || _vm.isLoading || _vm.isInitializing || _vm.isDeploying},on:{\"click\":function($event){$event.stopPropagation();return _vm.disable(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.disableButtonText)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('NcButton',{attrs:{\"title\":_vm.enableButtonTooltip,\"aria-label\":_vm.enableButtonTooltip,\"variant\":\"primary\",\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.isLoading || !_vm.defaultDeployDaemonAccessible || _vm.isInitializing || _vm.isDeploying},on:{\"click\":function($event){$event.stopPropagation();return _vm.enableButtonAction.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.enableButtonText)+\"\\n\\t\\t\")]):(!_vm.app.active)?_c('NcButton',{attrs:{\"title\":_vm.forceEnableButtonTooltip,\"aria-label\":_vm.forceEnableButtonTooltip,\"variant\":\"secondary\",\"disabled\":_vm.installing || _vm.isLoading || !_vm.defaultDeployDaemonAccessible},on:{\"click\":function($event){$event.stopPropagation();return _vm.forceEnable(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.forceEnableButtonText)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app?.app_api && _vm.showSelectDaemonModal)?_c('DaemonSelectionDialog',{attrs:{\"show\":_vm.showSelectDaemonModal,\"app\":_vm.app},on:{\"update:show\":function($event){_vm.showSelectDaemonModal=$event}}}):_vm._e()],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.vue?vue&type=script&lang=js\"","var render, staticRenderFns\nimport script from \"./SvgFilterMixin.vue?vue&type=script&lang=js\"\nexport * from \"./SvgFilterMixin.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=50fa5285&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=50fa5285&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppItem.vue?vue&type=template&id=50fa5285&scoped=true\"\nimport script from \"./AppItem.vue?vue&type=script&lang=js\"\nexport * from \"./AppItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppItem.vue?vue&type=style&index=0&id=50fa5285&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"50fa5285\",\n null\n \n)\n\nexport default component.exports"],"names":["showApiError","showError","t","useAppsStore","defineStore","state","apps","categories","updateCount","loadState","loading","loadingList","gettingCategoriesPromise","actions","loadCategories","force","this","length","data","axios","get","generateUrl","category","icon","APPSTORE_CATEGORY_ICONS","id","$patch","error","logger","loadApps","getCategoryById","categoryId","find","getAppById","appId","___CSS_LOADER_EXPORT___","push","module","_defineComponent","__name","props","daemon","setup","__props","__sfc","mdiFileChart","NcIconSvgWrapper","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","_setup","_setupProxy","staticClass","attrs","name","_v","_s","display_name","_e","app","gpuSupport","ref","deploy_config","computeDevice","NcAppSidebarTab","scopedSlots","_u","key","fn","proxy","accepts_deploy_id","label","text","type","String","default","minHeading","Number","computed","renderMarkdown","renderer","marked","Renderer","link","href","title","prot","decodeURIComponent","unescape","replace","toLowerCase","indexOf","out","heading","depth","Math","min","image","blockquote","dompurify","sanitize","trim","gfm","highlight","tables","breaks","pedantic","smartLists","smartypants","SAFE_FOR_JQUERY","ALLOWED_TAGS","domProps","mdiTextShort","Markdown","description","components","NcDialog","NcTextField","NcButton","NcNoteCard","NcCheckboxRadioSwitch","mixins","AppManagement","Object","required","show","Boolean","store","appApiStore","useAppApiStore","environmentVariables","releases","deployOptions","environment_variables","value","reduce","acc","envVar","envName","mounts","mdiPlus","mdiCheck","mdiClose","mdiDeleteOutline","addingMount","newMountPoint","hostPath","containerPath","readonly","addingPortBinding","configuredDeployOptions","deployOptionsDocsUrl","watch","newShow","fetchExAppDeployOptions","methods","startAddingMount","$nextTick","$refs","newMountHostPath","focus","addMountPoint","cancelAddMountPoint","removeMount","mountToRemove","filter","mount","then","response","catch","submitDeployOptions","fetchDockerDaemons","dockerDaemons","needsDownload","enable","emit","$emit","on","$event","active","canInstall","isCompatible","enableButtonTooltip","installing","isLoading","defaultDeployDaemonAccessible","isInitializing","isDeploying","stopPropagation","apply","arguments","enableButtonText","_l","displayName","$set","keys","staticStyle","NcDateTime","NcSelect","AppDeployOptionsModal","DaemonSelectionDialog","productName","window","OC","theme","mdiBugOutline","mdiFeatureSearchOutline","mdiStar","mdiTextBoxOutline","mdiTooltipQuestionOutline","mdiToyBrickPlusOutline","groupCheckedAppsData","removeData","showDeployOptionsModal","showSelectDaemonModal","lastModified","appstoreData","map","Date","parse","sort","at","appAuthors","authorName","xmlNode","Array","isArray","author","a","b","split","localeCompare","join","appstoreUrl","externalResources","resources","internal","website","documentation","user","admin","developer","appCategories","flat","rateAppUrl","appGroups","groups","group","$store","getters","getGroups","beforeUnmount","unsubscribe","mounted","subscribe","showSelectionModal","toggleRemoveData","enableButtonAction","app_api","canLimitToGroups","directives","rawName","expression","_i","$$a","$$el","target","$$c","checked","$$v","$$i","concat","slice","setGroupLimit","isLimitedToGroups","addGroupLimitation","removeGroupLimitation","asyncFindGroup","slot","update","version","isManualInstall","canUnInstall","remove","disableButtonText","disable","forceEnableButtonTooltip","forceEnableButtonText","forceEnable","click","missingMinOwnCloudVersion","missingMaxOwnCloudVersion","missingDependencies","dep","index","shipped","resource","bugs","discussion","hasChangelog","values","translations","some","changelog","createChangelogFromRelease","release","getLanguage","en","mdiClockFast","route","useRoute","router","useRouter","legacyStore","useStore","params","isAppApiEnabled","exApp","getAllApps","hasRating","ratingNumOverall","rating","ratingNumRecent","ratingRecent","ratingOverall","showSidebar","appIcon","categoryIcon","path","mdiCogOutline","AppstoreCategoryIcons","mdiCog","watchEffect","async","preview","fetch","blob","rawSvg","replaceAll","useAppIcon","licenseText","license","licence","toString","toUpperCase","activeTab","screenshotLoaded","hasScreenshot","screenshot","loadScreenshot","Image","onload","src","onMounted","hideAppDetails","NcAppSidebar","AppDaemonBadge","AppLevelBadge","AppScore","AppDeployDaemonTab","AppDescriptionTab","AppDetailsTab","AppReleasesTab","class","undefined","level","generateOcsUrl","ocs","meta","statuscode","dispatchEvent","Event","getLoading","status","action","updateButtonText","progress","deploy","init","base","getDefaultDaemon","getDaemonAccessible","query","dispatch","search","limit","offset","types","includes","groupArray","pop","currentGroups","splice","forceEnableApp","rebuildNavigation","enableApp","disableApp","uninstallApp","install","updateApp","max","appstoreEnabled","developerDocsUrl","categoriesLoading","isSubscribed","onBeforeMount","NcAppNavigation","NcAppNavigationItem","NcAppNavigationSpacer","NcCounterBubble","NcLoadingIcon","APPS_SECTION_ENUM","discover","installed","enabled","disabled","updates","bundles","supported","featured","Node","constructor","_defineProperty","_head","WeakMap","_tail","_size","Queue","_classPrivateFieldInitSpec","clear","enqueue","_this$size","node","_classPrivateFieldGet","next","_classPrivateFieldSet","dequeue","_this$size3","current","peek","size","Symbol","iterator","drain","pLimit","concurrency","validateConcurrency","queue","activeCount","resumeNext","run","function_","resolve","arguments_","result","generator","Promise","internalResolve","bind","defineProperties","pendingCount","clearQueue","set","newConcurrency","queueMicrotask","array","promises","all","isInteger","POSITIVE_INFINITY","TypeError","AppItem","counter","hasPendingUpdate","showUpdateAll","useListView","exApps","natSortDiff","Util","naturalSortCompare","sortStringA","sortStringB","appstore","getAppBundles","bundle","bundleApps","bundleIds","searchApps","_app","useAppStoreView","useBundleView","allBundlesEnabled","bundleToggleText","beforeDestroy","setSearch","resetSearch","toggleBundle","disableBundle","enableBundle","Notification","updateAll","n","parseApiResponse","element","appElement","date","expiryDate","Error","filterElements","now","PostType","defineAsyncComponent","CarouselType","ShowcaseType","hasError","elements","shuffleArray","i","j","floor","random","info","shuffledElements","order","Infinity","getComponent","defineComponent","render","h","mdiEyeOffOutline","NcEmptyContent","entry","_b","tag","currentCategory","viewLabel","pageHeading","pageTitle","instance","getCurrentInstance","shouldRefetchCategories","fetchAllApps","updateAppsStatus","onBeforeUnmount","clearInterval","getStatusUpdater","NcAppContent","AppList","AppStoreDiscoverSection","statusUpdater","daemonAccessible","defaultDaemon","getUpdateCount","getAppStatus","getInitializingOrDeployingApps","appsApiFailure","message","isHTML","setLoading","Vue","setError","forEach","_id","confirmPassword","post","removable","update_required","showInfo","onClick","location","reload","close","setTimeout","api","fetchAppStatus","initializingOrDeployingApps","debug","hasOwn","daemons","default_daemon_config","setInterval","score","mdiStarHalfFull","mdiStarOutline","appScore","toFixed","fullStars","emptyStars","hasHalfStar","emits","fillColor","$attrs","NcListItem","isDefault","itemTitle","closeModal","selectDaemonAndInstall","exAppsCount","appApiAdminPage","DaemonSelectionEntry","FormatListBullet","appName","DaemonSelectionList","freeze","mdiStarCircleOutline","mdiAccountOutline","mdiArchiveOutline","mdiStarShootingOutline","mdiDownload","ai","mdiCreationOutline","auth","mdiKeyOutline","customization","dashboard","mdiViewColumnOutline","files","mdiFolder","games","mdiControllerClassicOutline","integration","mdiOpenInApp","monitoring","mdiMonitorEye","multimedia","mdiMultimedia","office","mdiFileDocumentEdit","organization","mdiOfficeBuildingOutline","mdiMagnify","security","mdiSecurity","social","mdiAccountMultipleOutline","tools","mdiTools","workflow","mdiClipboardFlowOutline","isSupported","isFeatured","badgeIcon","badgeText","badgeTitle","filterId","filterUrl","substring","SvgFilterMixin","listView","headers","inline","isSelected","scrolled","dataItemTag","withSidebar","$route","shouldDisplayDefaultIcon","watchers","prefix","content","getDataItemHeaders","columnName","summary"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"settings-apps-view-4529.js?v=ef8cdc3030bbaec722df","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/store/apps-store.ts","webpack:///nextcloud/apps/settings/src/components/AppAPI/DaemonSelectionList.vue?vue&type=style&index=0&id=a31da1f4&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/views/AppStoreSidebar.vue?vue&type=style&index=0&id=156b7c7b&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/views/AppStoreNavigation.vue?vue&type=style&index=0&id=6d2cb244&prod&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/views/AppStoreSidebar.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppDaemonBadge.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppDaemonBadge.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/components/AppList/AppDaemonBadge.vue?4961","webpack://nextcloud/./apps/settings/src/components/AppList/AppDaemonBadge.vue?e75c","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue?21a2","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue?4b28","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue","webpack:///nextcloud/apps/settings/src/components/Markdown.vue","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?940d","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?26cf","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?d299","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?0380","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?311d","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?9ed4","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue?1ece","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue?0709","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue?4e6f","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?2f4b","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?d4df","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?55b0","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?d492","webpack:///nextcloud/apps/settings/src/views/AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/settings/src/composables/useAppIcon.ts","webpack://nextcloud/./apps/settings/src/views/AppStoreSidebar.vue?f927","webpack://nextcloud/./apps/settings/src/views/AppStoreSidebar.vue?5373","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue?vue&type=style&index=0&id=28419269&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppList/AppDaemonBadge.vue?vue&type=style&index=0&id=d2263fb4&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=style&index=0&id=707dd976&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/service/rebuild-navigation.js","webpack:///nextcloud/apps/settings/src/mixins/AppManagement.js","webpack:///nextcloud/apps/settings/src/views/AppStoreNavigation.vue","webpack:///nextcloud/apps/settings/src/views/AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/AppStoreNavigation.vue?272c","webpack://nextcloud/./apps/settings/src/views/AppStoreNavigation.vue?6e6f","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?vue&type=style&index=0&id=69f0fc16&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppList/AppLevelBadge.vue?vue&type=style&index=0&id=11da8cb3&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue?vue&type=style&index=0&id=32ad4b6a&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/views/AppStore.vue","webpack:///nextcloud/node_modules/yocto-queue/index.js","webpack:///nextcloud/node_modules/p-limit/index.js","webpack:///nextcloud/apps/settings/src/components/AppList.vue","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/AppList.vue?6f9f","webpack://nextcloud/./apps/settings/src/components/AppList.vue?8acf","webpack://nextcloud/./apps/settings/src/components/AppList.vue?ee21","webpack:///nextcloud/apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue","webpack:///nextcloud/apps/settings/src/utils/appDiscoverParser.ts","webpack:///nextcloud/apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue?221c","webpack://nextcloud/./apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue?0759","webpack:///nextcloud/apps/settings/src/views/AppStore.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/AppStore.vue?61b9","webpack://nextcloud/./apps/settings/src/views/AppStore.vue?47b2","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?vue&type=style&index=0&id=e83f267a&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=style&index=0&id=0774afca&prod&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/store/app-api-store.ts","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue?vue&type=style&index=0&id=0ec0c17d&prod&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?851b","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?26fd","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?vue&type=style&index=0&id=1d5b4408&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppAPI/DaemonSelectionDialog.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulleted.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulleted.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/FormatListBulleted.vue?6c50","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulleted.vue?vue&type=template&id=5c444520","webpack://nextcloud/./apps/settings/src/components/AppAPI/DaemonSelectionEntry.vue?db35","webpack:///nextcloud/apps/settings/src/components/AppAPI/DaemonSelectionEntry.vue","webpack:///nextcloud/apps/settings/src/components/AppAPI/DaemonSelectionEntry.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/AppAPI/DaemonSelectionEntry.vue?462d","webpack:///nextcloud/apps/settings/src/components/AppAPI/DaemonSelectionList.vue?vue&type=script&setup=true&lang=js","webpack:///nextcloud/DaemonSelectionList.vue","webpack://nextcloud/./apps/settings/src/components/AppAPI/DaemonSelectionList.vue?18bc","webpack://nextcloud/./apps/settings/src/components/AppAPI/DaemonSelectionList.vue?39f5","webpack:///nextcloud/apps/settings/src/components/AppAPI/DaemonSelectionList.vue","webpack:///nextcloud/apps/settings/src/components/AppAPI/DaemonSelectionDialog.vue?vue&type=script&setup=true&lang=js","webpack:///nextcloud/DaemonSelectionDialog.vue","webpack://nextcloud/./apps/settings/src/components/AppAPI/DaemonSelectionDialog.vue?7e45","webpack:///nextcloud/apps/settings/src/constants/AppstoreCategoryIcons.ts","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=style&index=0&id=50fa5285&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/views/AppStore.vue?vue&type=style&index=0&id=0105bd03&prod&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/constants/AppsConstants.js","webpack:///nextcloud/apps/settings/src/components/AppList/AppLevelBadge.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppLevelBadge.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/components/AppList/AppLevelBadge.vue?6156","webpack://nextcloud/./apps/settings/src/components/AppList/AppLevelBadge.vue?74e8","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=style&index=0&id=62ec0d6b&prod&scoped=true&lang=scss","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?af1e","webpack:///nextcloud/apps/settings/src/components/SvgFilterMixin.vue","webpack:///nextcloud/apps/settings/src/components/SvgFilterMixin.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/SvgFilterMixin.vue?5bcd","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?a546","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?a9a1"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios';\nimport { showError } from '@nextcloud/dialogs';\nimport { loadState } from '@nextcloud/initial-state';\nimport { translate as t } from '@nextcloud/l10n';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport APPSTORE_CATEGORY_ICONS from '../constants/AppstoreCategoryIcons.ts';\nimport logger from '../logger.ts';\nconst showApiError = () => showError(t('settings', 'An error occurred during the request. Unable to proceed.'));\nexport const useAppsStore = defineStore('settings-apps', {\n state: () => ({\n apps: [],\n categories: [],\n updateCount: loadState('settings', 'appstoreUpdateCount', 0),\n loading: {\n apps: false,\n categories: false,\n },\n loadingList: false,\n gettingCategoriesPromise: null,\n }),\n actions: {\n async loadCategories(force = false) {\n if (this.categories.length > 0 && !force) {\n return;\n }\n try {\n this.loading.categories = true;\n const { data: categories } = await axios.get(generateUrl('settings/apps/categories'));\n for (const category of categories) {\n category.icon = APPSTORE_CATEGORY_ICONS[category.id] ?? '';\n }\n this.$patch({\n categories,\n });\n }\n catch (error) {\n logger.error(error);\n showApiError();\n }\n finally {\n this.loading.categories = false;\n }\n },\n async loadApps(force = false) {\n if (this.apps.length > 0 && !force) {\n return;\n }\n try {\n this.loading.apps = true;\n const { data } = await axios.get(generateUrl('settings/apps/list'));\n this.$patch({\n apps: data.apps,\n });\n }\n catch (error) {\n logger.error(error);\n showApiError();\n }\n finally {\n this.loading.apps = false;\n }\n },\n getCategoryById(categoryId) {\n return this.categories.find(({ id }) => id === categoryId) ?? null;\n },\n getAppById(appId) {\n return this.apps.find(({ id }) => id === appId) ?? null;\n },\n },\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.daemon-selection-list[data-v-a31da1f4]{max-height:350px;overflow-y:scroll;padding:2rem}.daemon-selection-list__empty-content[data-v-a31da1f4]{margin-top:0;text-align:center}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppAPI/DaemonSelectionList.vue\"],\"names\":[],\"mappings\":\"AACA,wCACC,gBAAA,CACA,iBAAA,CACA,YAAA,CAEA,uDACC,YAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.daemon-selection-list {\\n\\tmax-height: 350px;\\n\\toverflow-y: scroll;\\n\\tpadding: 2rem;\\n\\n\\t&__empty-content {\\n\\t\\tmargin-top: 0;\\n\\t\\ttext-align: center;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-sidebar--with-screenshot[data-v-156b7c7b] .app-sidebar-header__figure{background-size:cover}.app-sidebar__fallback-icon[data-v-156b7c7b]{width:100%;height:100%}.app-sidebar__badges[data-v-156b7c7b]{display:flex;flex-direction:row;gap:12px}.app-sidebar__version[data-v-156b7c7b]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/AppStoreSidebar.vue\"],\"names\":[],\"mappings\":\"AAIE,2EACC,qBAAA,CAIF,6CAEC,UAAA,CACA,WAAA,CAGD,sCACC,YAAA,CACA,kBAAA,CACA,QAAA,CAGD,uCACC,mCAAA\",\"sourcesContent\":[\"\\n.app-sidebar {\\n\\t// If a screenshot is available it should cover the whole figure\\n\\t&--with-screenshot {\\n\\t\\t:deep(.app-sidebar-header__figure) {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t}\\n\\n\\t&__fallback-icon {\\n\\t\\t// both 100% to center the icon\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t}\\n\\n\\t&__badges {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tgap: 12px;\\n\\t}\\n\\n\\t&__version {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n/* The categories-loading indicator */\n.categories--loading[data-v-6d2cb244] {\n\tflex: 1;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/AppStoreNavigation.vue\"],\"names\":[],\"mappings\":\";AAkJA,qCAAA;AACA;CACA,OAAA;CACA,aAAA;CACA,mBAAA;CACA,uBAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.showSidebar)?_c(_setup.NcAppSidebar,{staticClass:\"app-sidebar\",class:{ 'app-sidebar--with-screenshot': _setup.hasScreenshot },attrs:{\"active\":_setup.activeTab,\"background\":_setup.hasScreenshot ? _setup.app.screenshot : undefined,\"compact\":!_setup.hasScreenshot,\"name\":_setup.app.name,\"title\":_setup.app.name,\"subname\":_setup.licenseText,\"subtitle\":_setup.licenseText},on:{\"update:active\":function($event){_setup.activeTab=$event},\"close\":_setup.hideAppDetails},scopedSlots:_vm._u([(!_setup.hasScreenshot)?{key:\"header\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{staticClass:\"app-sidebar__fallback-icon\",attrs:{\"svg\":_setup.appIcon ?? '',\"size\":64}})]},proxy:true}:null,{key:\"description\",fn:function(){return [_c('div',{staticClass:\"app-sidebar__badges\"},[_c(_setup.AppLevelBadge,{attrs:{\"level\":_setup.app.level}}),_vm._v(\" \"),(_setup.app.app_api && _setup.app.daemon)?_c(_setup.AppDaemonBadge,{attrs:{\"daemon\":_setup.app.daemon}}):_vm._e(),_vm._v(\" \"),(_setup.hasRating)?_c(_setup.AppScore,{attrs:{\"score\":_setup.rating}}):_vm._e()],1)]},proxy:true}],null,true)},[_vm._v(\" \"),_vm._v(\" \"),_c(_setup.AppDescriptionTab,{attrs:{\"app\":_setup.app}}),_vm._v(\" \"),_c(_setup.AppDetailsTab,{attrs:{\"app\":_setup.app}}),_vm._v(\" \"),_c(_setup.AppReleasesTab,{attrs:{\"app\":_setup.app}}),_vm._v(\" \"),_c(_setup.AppDeployDaemonTab,{attrs:{\"app\":_setup.app}})],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.daemon)?_c('span',{staticClass:\"app-daemon-badge\",attrs:{\"title\":_vm.daemon.name}},[_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiFileChart,\"size\":20,\"inline\":\"\"}}),_vm._v(\"\\n\\t\"+_vm._s(_vm.daemon.display_name)+\"\\n\")],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDaemonBadge.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDaemonBadge.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDaemonBadge.vue?vue&type=style&index=0&id=d2263fb4&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDaemonBadge.vue?vue&type=style&index=0&id=d2263fb4&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDaemonBadge.vue?vue&type=template&id=d2263fb4&scoped=true\"\nimport script from \"./AppDaemonBadge.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppDaemonBadge.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppDaemonBadge.vue?vue&type=style&index=0&id=d2263fb4&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d2263fb4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.app?.daemon)?_c(_setup.NcAppSidebarTab,{attrs:{\"id\":\"daemon\",\"name\":_vm.t('settings', 'Daemon'),\"order\":3},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiFileChart,\"size\":24}})]},proxy:true}],null,false,1746493066)},[_vm._v(\" \"),_c('div',{staticClass:\"daemon\"},[_c('h4',[_vm._v(_vm._s(_vm.t('settings', 'Deploy Daemon')))]),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(_vm._s(_vm.t('settings', 'Type')))]),_vm._v(\": \"+_vm._s(_vm.app?.daemon.accepts_deploy_id))]),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(_vm._s(_vm.t('settings', 'Name')))]),_vm._v(\": \"+_vm._s(_vm.app?.daemon.name))]),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(_vm._s(_vm.t('settings', 'Display Name')))]),_vm._v(\": \"+_vm._s(_vm.app?.daemon.display_name))]),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(_vm._s(_vm.t('settings', 'GPUs support')))]),_vm._v(\": \"+_vm._s(_setup.gpuSupport))]),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(_vm._s(_vm.t('settings', 'Compute device')))]),_vm._v(\": \"+_vm._s(_vm.app?.daemon?.deploy_config?.computeDevice?.label))])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDeployDaemonTab.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDeployDaemonTab.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDeployDaemonTab.vue?vue&type=style&index=0&id=28419269&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDeployDaemonTab.vue?vue&type=style&index=0&id=28419269&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDeployDaemonTab.vue?vue&type=template&id=28419269&scoped=true\"\nimport script from \"./AppDeployDaemonTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppDeployDaemonTab.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppDeployDaemonTab.vue?vue&type=style&index=0&id=28419269&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"28419269\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSidebarTab,{attrs:{\"id\":\"desc\",\"name\":_setup.t('settings', 'Description'),\"order\":0},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiTextShort}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{staticClass:\"app-description\"},[_c(_setup.Markdown,{attrs:{\"text\":_vm.app.description,\"min-heading\":4}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=style&index=0&id=62ec0d6b&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=style&index=0&id=62ec0d6b&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Markdown.vue?vue&type=template&id=62ec0d6b&scoped=true\"\nimport script from \"./Markdown.vue?vue&type=script&lang=js\"\nexport * from \"./Markdown.vue?vue&type=script&lang=js\"\nimport style0 from \"./Markdown.vue?vue&type=style&index=0&id=62ec0d6b&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"62ec0d6b\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"settings-markdown\",domProps:{\"innerHTML\":_vm._s(_vm.renderMarkdown)}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDescriptionTab.vue?vue&type=style&index=0&id=1d5b4408&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDescriptionTab.vue?vue&type=style&index=0&id=1d5b4408&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDescriptionTab.vue?vue&type=template&id=1d5b4408&scoped=true\"\nimport script from \"./AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppDescriptionTab.vue?vue&type=style&index=0&id=1d5b4408&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d5b4408\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSidebarTab',{attrs:{\"id\":\"details\",\"name\":_vm.t('settings', 'Details'),\"order\":1},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiTextBoxOutline}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{staticClass:\"app-details\"},[_c('div',{staticClass:\"app-details__actions\"},[(_vm.app.active && _vm.canLimitToGroups(_vm.app))?_c('div',{staticClass:\"app-details__actions-groups\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.groupCheckedAppsData),expression:\"groupCheckedAppsData\"}],staticClass:\"groups-enable__checkbox checkbox\",attrs:{\"id\":`groups_enable_${_vm.app.id}`,\"type\":\"checkbox\"},domProps:{\"value\":_vm.app.id,\"checked\":Array.isArray(_vm.groupCheckedAppsData)?_vm._i(_vm.groupCheckedAppsData,_vm.app.id)>-1:(_vm.groupCheckedAppsData)},on:{\"change\":[function($event){var $$a=_vm.groupCheckedAppsData,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=_vm.app.id,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.groupCheckedAppsData=$$a.concat([$$v]))}else{$$i>-1&&(_vm.groupCheckedAppsData=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.groupCheckedAppsData=$$c}},_vm.setGroupLimit]}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":`groups_enable_${_vm.app.id}`}},[_vm._v(_vm._s(_vm.t('settings', 'Limit to groups')))]),_vm._v(\" \"),_c('input',{staticClass:\"group_select\",attrs:{\"type\":\"hidden\",\"title\":_vm.t('settings', 'All'),\"value\":\"\"}}),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"limitToGroups\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Limit app usage to groups')))])]),_vm._v(\" \"),(_vm.isLimitedToGroups(_vm.app))?_c('NcSelect',{attrs:{\"input-id\":\"limitToGroups\",\"options\":_vm.groups,\"value\":_vm.appGroups,\"limit\":5,\"label\":\"name\",\"multiple\":true,\"keep-open\":\"\"},on:{\"option:selected\":_vm.addGroupLimitation,\"option:deselected\":_vm.removeGroupLimitation,\"search\":_vm.asyncFindGroup}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])]):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-details__actions-manage\"},[(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {version}', { version: _vm.app.update }),\"disabled\":_vm.installing || _vm.isLoading || _vm.isManualInstall},on:{\"click\":function($event){return _vm.update(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('input',{staticClass:\"uninstall\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Remove'),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.remove(_vm.app.id, _vm.removeData)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.disableButtonText,\"disabled\":_vm.installing || _vm.isLoading || _vm.isInitializing || _vm.isDeploying},on:{\"click\":function($event){return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{staticClass:\"enable primary\",attrs:{\"title\":_vm.enableButtonTooltip,\"aria-label\":_vm.enableButtonTooltip,\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.isLoading || !_vm.defaultDeployDaemonAccessible || _vm.isInitializing || _vm.isDeploying},on:{\"click\":_vm.enableButtonAction}}):(!_vm.app.active && !_vm.app.canInstall)?_c('input',{staticClass:\"enable force\",attrs:{\"title\":_vm.forceEnableButtonTooltip,\"aria-label\":_vm.forceEnableButtonTooltip,\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.forceEnable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app?.app_api && (_vm.app.canInstall || _vm.app.isCompatible))?_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Advanced deploy options'),\"variant\":\"secondary\"},on:{\"click\":() => _vm.showDeployOptionsModal = true},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiToyBrickPlusOutline}})]},proxy:true}],null,false,973660380)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Deploy options'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),(!_vm.defaultDeployDaemonAccessible)?_c('p',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Default Deploy daemon is not accessible'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.removeData,\"disabled\":_vm.installing || _vm.isLoading || !_vm.defaultDeployDaemonAccessible},on:{\"update:checked\":_vm.toggleRemoveData}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Delete data on remove'))+\"\\n\\t\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),_c('ul',{staticClass:\"app-details__dependencies\"},[(_vm.app.missingMinOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app has no minimum {productName} version assigned. This will be an error in the future.', { productName: _vm.productName }))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.missingMaxOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app has no maximum {productName} version assigned. This will be an error in the future.', { productName: _vm.productName }))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.app.canInstall)?_c('li',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:'))+\"\\n\\t\\t\\t\\t\"),_c('ul',{staticClass:\"missing-dependencies\"},_vm._l((_vm.app.missingDependencies),function(dep,index){return _c('li',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(dep)+\"\\n\\t\\t\\t\\t\\t\")])}),0)]):_vm._e()]),_vm._v(\" \"),(_vm.lastModified && !_vm.app.shipped)?_c('div',{staticClass:\"app-details__section\"},[_c('h4',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Latest updated'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcDateTime',{attrs:{\"timestamp\":_vm.lastModified}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-details__section\"},[_c('h4',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Author'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('p',{staticClass:\"app-details__authors\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.appAuthors)+\"\\n\\t\\t\\t\")])]),_vm._v(\" \"),_c('div',{staticClass:\"app-details__section\"},[_c('h4',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Categories'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.appCategories)+\"\\n\\t\\t\\t\")])]),_vm._v(\" \"),(_vm.externalResources.length > 0)?_c('div',{staticClass:\"app-details__section\"},[_c('h4',[_vm._v(_vm._s(_vm.t('settings', 'Resources')))]),_vm._v(\" \"),_c('ul',{staticClass:\"app-details__documentation\",attrs:{\"aria-label\":_vm.t('settings', 'Documentation')}},_vm._l((_vm.externalResources),function(resource){return _c('li',{key:resource.id},[_c('a',{staticClass:\"appslink\",attrs:{\"href\":resource.href,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(resource.label)+\" ↗\\n\\t\\t\\t\\t\\t\")])])}),0)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-details__section\"},[_c('h4',[_vm._v(_vm._s(_vm.t('settings', 'Interact')))]),_vm._v(\" \"),_c('div',{staticClass:\"app-details__interact\"},[_c('NcButton',{attrs:{\"disabled\":!_vm.app.bugs,\"href\":_vm.app.bugs ?? '#',\"aria-label\":_vm.t('settings', 'Report a bug'),\"title\":_vm.t('settings', 'Report a bug')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiBugOutline}})]},proxy:true}])}),_vm._v(\" \"),_c('NcButton',{attrs:{\"disabled\":!_vm.app.bugs,\"href\":_vm.app.bugs ?? '#',\"aria-label\":_vm.t('settings', 'Request feature'),\"title\":_vm.t('settings', 'Request feature')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiFeatureSearchOutline}})]},proxy:true}])}),_vm._v(\" \"),(_vm.app.appstoreData?.discussion)?_c('NcButton',{attrs:{\"href\":_vm.app.appstoreData.discussion,\"aria-label\":_vm.t('settings', 'Ask questions or discuss'),\"title\":_vm.t('settings', 'Ask questions or discuss')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiTooltipQuestionOutline}})]},proxy:true}],null,false,88743630)}):_vm._e(),_vm._v(\" \"),(!_vm.app.internal)?_c('NcButton',{attrs:{\"href\":_vm.rateAppUrl,\"aria-label\":_vm.t('settings', 'Rate the app'),\"title\":_vm.t('settings', 'Rate')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiStar}})]},proxy:true}],null,false,422450625)}):_vm._e()],1)]),_vm._v(\" \"),(_vm.app?.app_api)?_c('AppDeployOptionsModal',{attrs:{\"show\":_vm.showDeployOptionsModal,\"app\":_vm.app},on:{\"update:show\":function($event){_vm.showDeployOptionsModal=$event}}}):_vm._e(),_vm._v(\" \"),(_vm.app?.app_api)?_c('DaemonSelectionDialog',{attrs:{\"show\":_vm.showSelectDaemonModal,\"app\":_vm.app,\"deploy-options\":_vm.deployOptions},on:{\"update:show\":function($event){_vm.showSelectDaemonModal=$event}}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDeployOptionsModal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDeployOptionsModal.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDeployOptionsModal.vue?vue&type=style&index=0&id=0ec0c17d&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDeployOptionsModal.vue?vue&type=style&index=0&id=0ec0c17d&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDeployOptionsModal.vue?vue&type=template&id=0ec0c17d&scoped=true\"\nimport script from \"./AppDeployOptionsModal.vue?vue&type=script&lang=js\"\nexport * from \"./AppDeployOptionsModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppDeployOptionsModal.vue?vue&type=style&index=0&id=0ec0c17d&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0ec0c17d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcDialog',{attrs:{\"open\":_vm.show,\"size\":\"normal\",\"name\":_vm.t('settings', 'Advanced deploy options')},on:{\"update:open\":function($event){return _vm.$emit('update:show', $event)}},scopedSlots:_vm._u([(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible) && _vm.configuredDeployOptions === null)?{key:\"actions\",fn:function(){return [_c('NcButton',{attrs:{\"title\":_vm.enableButtonTooltip,\"aria-label\":_vm.enableButtonTooltip,\"variant\":\"primary\",\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.isLoading || !_vm.defaultDeployDaemonAccessible || _vm.isInitializing || _vm.isDeploying},on:{\"click\":function($event){$event.stopPropagation();return _vm.submitDeployOptions.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.enableButtonText)+\"\\n\\t\\t\")])]},proxy:true}:null],null,true)},[_c('div',{staticClass:\"modal__content\"},[_c('p',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.configuredDeployOptions === null ? _vm.t('settings', 'Edit ExApp deploy options before installation') : _vm.t('settings', 'Configured ExApp deploy options. Can be set only during installation'))+\".\\n\\t\\t\\t\"),(_vm.deployOptionsDocsUrl)?_c('a',{attrs:{\"href\":_vm.deployOptionsDocsUrl}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Learn more'))+\"\\n\\t\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.environmentVariables.length > 0 || (_vm.configuredDeployOptions !== null && _vm.configuredDeployOptions.environment_variables.length > 0))?_c('h3',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Environment variables'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.configuredDeployOptions === null)?_vm._l((_vm.environmentVariables),function(envVar){return _c('div',{key:envVar.envName,staticClass:\"deploy-option\"},[_c('NcTextField',{attrs:{\"label\":envVar.displayName,\"value\":_vm.deployOptions.environment_variables[envVar.envName]},on:{\"update:value\":function($event){return _vm.$set(_vm.deployOptions.environment_variables, envVar.envName, $event)}}}),_vm._v(\" \"),_c('p',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(envVar.description)+\"\\n\\t\\t\\t\\t\")])],1)}):(Object.keys(_vm.configuredDeployOptions).length > 0)?_c('fieldset',{staticClass:\"envs\"},[_c('legend',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'ExApp container environment variables'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.configuredDeployOptions.environment_variables),function(value,key){return _c('NcTextField',{key:key,attrs:{\"label\":value.displayName ?? key,\"helper-text\":value.description,\"value\":value.value,\"readonly\":\"\"}})})],2):[_c('p',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'No environment variables defined'))+\"\\n\\t\\t\\t\")])],_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.t('settings', 'Mounts')))]),_vm._v(\" \"),(_vm.configuredDeployOptions === null)?[_c('p',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Define host folder mounts to bind to the ExApp container'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcNoteCard',{attrs:{\"type\":\"info\",\"text\":_vm.t('settings', 'Must exist on the Deploy daemon host prior to installing the ExApp')}}),_vm._v(\" \"),_vm._l((_vm.deployOptions.mounts),function(mount){return _c('div',{key:mount.hostPath,staticClass:\"deploy-option\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"flex-direction\":\"row\"}},[_c('NcTextField',{attrs:{\"label\":_vm.t('settings', 'Host path'),\"value\":mount.hostPath},on:{\"update:value\":function($event){return _vm.$set(mount, \"hostPath\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{attrs:{\"label\":_vm.t('settings', 'Container path'),\"value\":mount.containerPath},on:{\"update:value\":function($event){return _vm.$set(mount, \"containerPath\", $event)}}}),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":mount.readonly},on:{\"update:checked\":function($event){return _vm.$set(mount, \"readonly\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Read-only'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{staticStyle:{\"margin-top\":\"6px\"},attrs:{\"aria-label\":_vm.t('settings', 'Remove mount')},on:{\"click\":function($event){return _vm.removeMount(mount)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiDeleteOutline}})]},proxy:true}],null,true)})],1)}),_vm._v(\" \"),(_vm.addingMount)?_c('div',{staticClass:\"deploy-option\"},[_c('h4',[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'New mount'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"flex-direction\":\"row\"}},[_c('NcTextField',{ref:\"newMountHostPath\",attrs:{\"label\":_vm.t('settings', 'Host path'),\"aria-label\":_vm.t('settings', 'Enter path to host folder'),\"value\":_vm.newMountPoint.hostPath},on:{\"update:value\":function($event){return _vm.$set(_vm.newMountPoint, \"hostPath\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{attrs:{\"label\":_vm.t('settings', 'Container path'),\"aria-label\":_vm.t('settings', 'Enter path to container folder'),\"value\":_vm.newMountPoint.containerPath},on:{\"update:value\":function($event){return _vm.$set(_vm.newMountPoint, \"containerPath\", $event)}}}),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.newMountPoint.readonly,\"aria-label\":_vm.t('settings', 'Toggle read-only mode')},on:{\"update:checked\":function($event){return _vm.$set(_vm.newMountPoint, \"readonly\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Read-only'))+\"\\n\\t\\t\\t\\t\\t\")])],1),_vm._v(\" \"),_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"margin-top\":\"4px\"}},[_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Confirm adding new mount')},on:{\"click\":_vm.addMountPoint},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiCheck}})]},proxy:true}],null,false,1018299955)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Confirm'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{staticStyle:{\"margin-left\":\"4px\"},attrs:{\"aria-label\":_vm.t('settings', 'Cancel adding mount')},on:{\"click\":_vm.cancelAddMountPoint},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiClose}})]},proxy:true}],null,false,2764082467)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Cancel'))+\"\\n\\t\\t\\t\\t\\t\")])],1)]):_vm._e(),_vm._v(\" \"),(!_vm.addingMount)?_c('NcButton',{staticStyle:{\"margin-top\":\"5px\"},attrs:{\"aria-label\":_vm.t('settings', 'Add mount')},on:{\"click\":_vm.startAddingMount},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiPlus}})]},proxy:true}],null,false,103601839)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add mount'))+\"\\n\\t\\t\\t\")]):_vm._e()]:(_vm.configuredDeployOptions.mounts.length > 0)?[_c('p',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'ExApp container mounts'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.configuredDeployOptions.mounts),function(mount){return _c('div',{key:mount.hostPath,staticClass:\"deploy-option\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"flex-direction\":\"row\"}},[_c('NcTextField',{attrs:{\"label\":_vm.t('settings', 'Host path'),\"value\":mount.hostPath,\"readonly\":\"\"},on:{\"update:value\":function($event){return _vm.$set(mount, \"hostPath\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{attrs:{\"label\":_vm.t('settings', 'Container path'),\"value\":mount.containerPath,\"readonly\":\"\"},on:{\"update:value\":function($event){return _vm.$set(mount, \"containerPath\", $event)}}}),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":mount.readonly,\"disabled\":\"\"},on:{\"update:checked\":function($event){return _vm.$set(mount, \"readonly\", $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Read-only'))+\"\\n\\t\\t\\t\\t\")])],1)})]:_c('p',{staticClass:\"deploy-option__hint\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'No mounts defined'))+\"\\n\\t\\t\")])],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.vue?vue&type=style&index=0&id=e83f267a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.vue?vue&type=style&index=0&id=e83f267a&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDetailsTab.vue?vue&type=template&id=e83f267a&scoped=true\"\nimport script from \"./AppDetailsTab.vue?vue&type=script&lang=js\"\nexport * from \"./AppDetailsTab.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppDetailsTab.vue?vue&type=style&index=0&id=e83f267a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e83f267a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppReleasesTab.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppReleasesTab.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.hasChangelog)?_c(_setup.NcAppSidebarTab,{attrs:{\"id\":\"changelog\",\"name\":_setup.t('settings', 'Changelog'),\"order\":2},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiClockFast,\"size\":24}})]},proxy:true}],null,false,1849836872)},[_vm._v(\" \"),_vm._l((_vm.app.releases),function(release){return _c('div',{key:release.version,staticClass:\"app-sidebar-tabs__release\"},[_c('h2',[_vm._v(_vm._s(release.version))]),_vm._v(\" \"),_c(_setup.Markdown,{staticClass:\"app-sidebar-tabs__release-text\",attrs:{\"text\":_setup.createChangelogFromRelease(release)}})],1)})],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppReleasesTab.vue?vue&type=style&index=0&id=69f0fc16&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppReleasesTab.vue?vue&type=style&index=0&id=69f0fc16&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppReleasesTab.vue?vue&type=template&id=69f0fc16&scoped=true\"\nimport script from \"./AppReleasesTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppReleasesTab.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppReleasesTab.vue?vue&type=style&index=0&id=69f0fc16&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"69f0fc16\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"","import { mdiCog, mdiCogOutline } from '@mdi/js';\nimport { computed, ref, watchEffect } from 'vue';\nimport AppstoreCategoryIcons from '../constants/AppstoreCategoryIcons.ts';\nimport logger from '../logger.ts';\n/**\n * Get the app icon raw SVG for use with `NcIconSvgWrapper` (do never use without sanitizing)\n * It has a fallback to the categroy icon.\n *\n * @param app The app to get the icon for\n */\nexport function useAppIcon(app) {\n const appIcon = ref(null);\n /**\n * Fallback value if no app icon available\n */\n const categoryIcon = computed(() => {\n let path;\n if (app.value?.app_api) {\n // Use different default icon for ExApps (AppAPI)\n path = mdiCogOutline;\n }\n else {\n path = [app.value?.category ?? []].flat()\n .map((name) => AppstoreCategoryIcons[name])\n .filter((icon) => !!icon)\n .at(0)\n ?? (!app.value?.app_api ? mdiCog : mdiCogOutline);\n }\n return path ? `` : null;\n });\n watchEffect(async () => {\n // Note: Only variables until the first `await` will be watched!\n if (!app.value?.preview) {\n appIcon.value = categoryIcon.value;\n }\n else {\n appIcon.value = null;\n // Now try to load the real app icon\n try {\n const response = await window.fetch(app.value.preview);\n const blob = await response.blob();\n const rawSvg = await blob.text();\n appIcon.value = rawSvg.replaceAll(/fill=\"#(fff|ffffff)([a-z0-9]{1,2})?\"/ig, 'fill=\"currentColor\"');\n }\n catch (error) {\n appIcon.value = categoryIcon.value;\n logger.error('Could not load app icon', { error });\n }\n }\n });\n return {\n appIcon,\n };\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=style&index=0&id=156b7c7b&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=style&index=0&id=156b7c7b&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppStoreSidebar.vue?vue&type=template&id=156b7c7b&scoped=true\"\nimport script from \"./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppStoreSidebar.vue?vue&type=style&index=0&id=156b7c7b&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"156b7c7b\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.daemon[data-v-28419269]{padding:20px}.daemon h4[data-v-28419269]{font-weight:bold;margin:10px auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue\"],\"names\":[],\"mappings\":\"AACA,yBACE,YAAA,CAEA,4BACE,gBAAA,CACA,gBAAA\",\"sourcesContent\":[\"\\n.daemon {\\n padding: 20px;\\n\\n h4 {\\n font-weight: bold;\\n margin: 10px auto;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-daemon-badge[data-v-d2263fb4]{color:var(--color-text-maxcontrast);background-color:rgba(0,0,0,0);border:1px solid var(--color-text-maxcontrast);border-radius:var(--border-radius);display:flex;flex-direction:row;gap:6px;padding:3px 6px;width:fit-content}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppDaemonBadge.vue\"],\"names\":[],\"mappings\":\"AACA,mCACC,mCAAA,CACA,8BAAA,CACA,8CAAA,CACA,kCAAA,CAEA,YAAA,CACA,kBAAA,CACA,OAAA,CACA,eAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.app-daemon-badge {\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tbackground-color: transparent;\\n\\tborder: 1px solid var(--color-text-maxcontrast);\\n\\tborder-radius: var(--border-radius);\\n\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tgap: 6px;\\n\\tpadding: 3px 6px;\\n\\twidth: fit-content;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.apps-list[data-v-707dd976]{display:flex;flex-wrap:wrap;align-content:flex-start}.apps-list--move[data-v-707dd976]{transition:transform 1s}.apps-list #app-list-update-all[data-v-707dd976]{margin-inline-start:10px}.apps-list__toolbar[data-v-707dd976]{height:60px;padding:8px;padding-inline-start:60px;width:100%;background-color:var(--color-main-background);position:sticky;top:0;z-index:1;display:flex;align-items:center}.apps-list--list-view[data-v-707dd976]{margin-bottom:100px;position:relative}.apps-list__list-container[data-v-707dd976]{width:100%}.apps-list__store-container[data-v-707dd976]{display:flex;flex-wrap:wrap}.apps-list__bundle-heading[data-v-707dd976]{display:flex;align-items:center;margin-block:20px;margin-inline:0 10px}.apps-list__bundle-header[data-v-707dd976]{color:var(--color-main-text);margin-block:0;margin-inline:50px 10px;font-weight:bold;font-size:20px;line-height:30px}#apps-list-search .app-item h2[data-v-707dd976]{margin-bottom:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList.vue\"],\"names\":[],\"mappings\":\"AAIA,4BACC,YAAA,CACA,cAAA,CACA,wBAAA,CAGA,kCACC,uBAAA,CAGD,iDACC,wBAAA,CAGD,qCACC,WAjBe,CAkBf,WAnBgB,CAqBhB,yBApBe,CAqBf,UAAA,CACA,6CAAA,CACA,eAAA,CACA,KAAA,CACA,SAAA,CACA,YAAA,CACA,kBAAA,CAGD,uCACC,mBAAA,CAEA,iBAAA,CAGD,4CACC,UAAA,CAGD,6CACC,YAAA,CACA,cAAA,CAGD,4CACC,YAAA,CACA,kBAAA,CACA,iBAAA,CACA,oBAAA,CAGD,2CACC,4BAAA,CACA,cAAA,CACA,uBAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CAMA,gDACC,eAAA\",\"sourcesContent\":[\"\\n$toolbar-padding: 8px;\\n$toolbar-height: 44px + $toolbar-padding * 2;\\n\\n.apps-list {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\talign-content: flex-start;\\n\\n\\t// For transition group\\n\\t&--move {\\n\\t\\ttransition: transform 1s;\\n\\t}\\n\\n\\t#app-list-update-all {\\n\\t\\tmargin-inline-start: 10px;\\n\\t}\\n\\n\\t&__toolbar {\\n\\t\\theight: $toolbar-height;\\n\\t\\tpadding: $toolbar-padding;\\n\\t\\t// Leave room for app-navigation-toggle\\n\\t\\tpadding-inline-start: $toolbar-height;\\n\\t\\twidth: 100%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tposition: sticky;\\n\\t\\ttop: 0;\\n\\t\\tz-index: 1;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t}\\n\\n\\t&--list-view {\\n\\t\\tmargin-bottom: 100px;\\n\\t\\t// For positioning link overlay on rows\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__list-container {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__store-container {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-wrap: wrap;\\n\\t}\\n\\n\\t&__bundle-heading {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tmargin-block: 20px;\\n\\t\\tmargin-inline: 0 10px;\\n\\t}\\n\\n\\t&__bundle-header {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tmargin-block: 0;\\n\\t\\tmargin-inline: 50px 10px;\\n\\t\\tfont-weight: bold;\\n\\t\\tfont-size: 20px;\\n\\t\\tline-height: 30px;\\n\\t}\\n}\\n\\n#apps-list-search {\\n\\t.app-item {\\n\\t\\th2 {\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios'\nimport { emit } from '@nextcloud/event-bus'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nexport default () => {\n\treturn axios.get(generateOcsUrl('core/navigation', 2) + '/apps?format=json')\n\t\t.then(({ data }) => {\n\t\t\tif (data.ocs.meta.statuscode !== 200) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\temit('nextcloud:app-menu.refresh', { apps: data.ocs.data })\n\t\t\twindow.dispatchEvent(new Event('resize'))\n\t\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport rebuildNavigation from '../service/rebuild-navigation.js'\n\nconst productName = window.OC.theme.productName\n\nexport default {\n\tcomputed: {\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map((group) => {\n\t\t\t\treturn { id: group, name: group }\n\t\t\t})\n\t\t},\n\t\tinstalling() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app && this?.appApiStore.getLoading('install') === true\n\t\t\t}\n\t\t\treturn this.$store.getters.loading('install')\n\t\t},\n\t\tisLoading() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app && this?.appApiStore.getLoading(this.app.id) === true\n\t\t\t}\n\t\t\treturn this.app && this.$store.getters.loading(this.app.id)\n\t\t},\n\t\tisInitializing() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app && (this.app?.status?.action === 'init' || this.app?.status?.action === 'healthcheck')\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tisDeploying() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app && this.app?.status?.action === 'deploy'\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tisManualInstall() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app?.daemon?.accepts_deploy_id === 'manual-install'\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tupdateButtonText() {\n\t\t\tif (this.app?.app_api && this.app?.daemon?.accepts_deploy_id === 'manual-install') {\n\t\t\t\treturn t('settings', 'Manually installed apps cannot be updated')\n\t\t\t}\n\t\t\treturn t('settings', 'Update to {version}', { version: this.app?.update })\n\t\t},\n\t\tenableButtonText() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'deploy') {\n\t\t\t\t\treturn t('settings', '{progress}% Deploying …', { progress: this.app?.status?.deploy ?? 0 })\n\t\t\t\t}\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'init') {\n\t\t\t\t\treturn t('settings', '{progress}% Initializing …', { progress: this.app?.status?.init ?? 0 })\n\t\t\t\t}\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'healthcheck') {\n\t\t\t\t\treturn t('settings', 'Health checking')\n\t\t\t\t}\n\t\t\t\tif (this.app.needsDownload) {\n\t\t\t\t\treturn t('settings', 'Deploy and Enable')\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable')\n\t\t\t} else {\n\t\t\t\tif (this.app.needsDownload) {\n\t\t\t\t\treturn t('settings', 'Download and enable')\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable')\n\t\t\t}\n\t\t},\n\t\tdisableButtonText() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'deploy') {\n\t\t\t\t\treturn t('settings', '{progress}% Deploying …', { progress: this.app?.status?.deploy })\n\t\t\t\t}\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'init') {\n\t\t\t\t\treturn t('settings', '{progress}% Initializing …', { progress: this.app?.status?.init })\n\t\t\t\t}\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'healthcheck') {\n\t\t\t\t\treturn t('settings', 'Health checking')\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn t('settings', 'Disable')\n\t\t},\n\t\tforceEnableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Allow untested app')\n\t\t\t}\n\t\t\treturn t('settings', 'Allow untested app')\n\t\t},\n\t\tenableButtonTooltip() {\n\t\t\tif (!this.app?.app_api && this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t\tforceEnableButtonTooltip() {\n\t\t\tconst base = t('settings', 'This app is not marked as compatible with your {productName} version.', { productName })\n\t\t\t\t+ ' '\n\t\t\t\t+ t('settings', 'If you continue you will still be able to install the app. Note that the app might not work as expected.')\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn base + ' ' + t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn base\n\t\t},\n\t\tdefaultDeployDaemonAccessible() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tif (this.app?.daemon && this.app?.daemon?.accepts_deploy_id === 'manual-install') {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tif (this.app?.daemon?.accepts_deploy_id === 'docker-install'\n\t\t\t\t\t&& this.appApiStore.getDefaultDaemon?.name === this.app?.daemon?.name) {\n\t\t\t\t\treturn this?.appApiStore.getDaemonAccessible === true\n\t\t\t\t}\n\t\t\t\treturn this?.appApiStore.getDaemonAccessible\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif (this.app && this.app.groups && this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasyncFindGroup(query) {\n\t\t\treturn this.$store.dispatch('getGroups', { search: query, limit: 5, offset: 0 })\n\t\t},\n\t\tisLimitedToGroups() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn this.app.groups.length || this.groupCheckedAppsData\n\t\t},\n\t\tsetGroupLimit() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn // not supported for app_api apps\n\t\t\t}\n\t\t\tif (!this.groupCheckedAppsData) {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: [] })\n\t\t\t}\n\t\t},\n\t\tcanLimitToGroups(app) {\n\t\t\tif ((app.types && app.types.includes('filesystem'))\n\t\t\t\t|| app.types.includes('prelogin')\n\t\t\t\t|| app.types.includes('authentication')\n\t\t\t\t|| app.types.includes('logging')\n\t\t\t\t|| app.types.includes('prevent_group_restriction')\n\t\t\t\t|| app?.app_api) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\taddGroupLimitation(groupArray) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn // not supported for app_api apps\n\t\t\t}\n\t\t\tconst group = groupArray.pop()\n\t\t\tconst groups = this.app.groups.concat([]).concat([group.id])\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups })\n\t\t},\n\t\tremoveGroupLimitation(group) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn // not supported for app_api apps\n\t\t\t}\n\t\t\tconst currentGroups = this.app.groups.concat([])\n\t\t\tconst index = currentGroups.indexOf(group.id)\n\t\t\tif (index > -1) {\n\t\t\t\tcurrentGroups.splice(index, 1)\n\t\t\t}\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: currentGroups })\n\t\t},\n\t\tforceEnable(appId) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.forceEnableApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('forceEnableApp', { appId, groups: [] })\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tenable(appId, daemon = null, deployOptions = {}) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.enableApp(appId, daemon, deployOptions)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId, groups: [] })\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tdisable(appId) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.disableApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('disableApp', { appId })\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tasync remove(appId, removeData = false) {\n\t\t\ttry {\n\t\t\t\tif (this.app?.app_api) {\n\t\t\t\t\tawait this.appApiStore.uninstallApp(appId, removeData)\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('uninstallApp', { appId, removeData })\n\t\t\t\t}\n\t\t\t\tawait rebuildNavigation()\n\t\t\t} catch (error) {\n\t\t\t\tshowError(error)\n\t\t\t}\n\t\t},\n\t\tinstall(appId) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.enableApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId })\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tupdate(appId) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.updateApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('updateApp', { appId })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\trebuildNavigation()\n\t\t\t\t\t\tthis.store.updateCount = Math.max(this.store.updateCount - 1, 0)\n\t\t\t\t\t})\n\t\t\t}\n\t\t},\n\t},\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigation,{attrs:{\"aria-label\":_setup.t('settings', 'Apps')},scopedSlots:_vm._u([{key:\"list\",fn:function(){return [(_setup.appstoreEnabled)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-discover\",\"to\":{ name: 'apps-category', params: { category: 'discover' } },\"name\":_setup.APPS_SECTION_ENUM.discover},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.discover}})]},proxy:true}],null,false,1397544286)}):_vm._e(),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-installed\",\"to\":{ name: 'apps-category', params: { category: 'installed' } },\"name\":_setup.APPS_SECTION_ENUM.installed},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.installed}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-enabled\",\"to\":{ name: 'apps-category', params: { category: 'enabled' } },\"name\":_setup.APPS_SECTION_ENUM.enabled},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.enabled}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-disabled\",\"to\":{ name: 'apps-category', params: { category: 'disabled' } },\"name\":_setup.APPS_SECTION_ENUM.disabled},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.disabled}})]},proxy:true}])}),_vm._v(\" \"),(_setup.store.updateCount > 0)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-updates\",\"to\":{ name: 'apps-category', params: { category: 'updates' } },\"name\":_setup.APPS_SECTION_ENUM.updates},scopedSlots:_vm._u([{key:\"counter\",fn:function(){return [_c(_setup.NcCounterBubble,[_vm._v(_vm._s(_setup.store.updateCount))])]},proxy:true},{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.updates}})]},proxy:true}],null,false,3001044337)}):_vm._e(),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-your-bundles\",\"to\":{ name: 'apps-category', params: { category: 'app-bundles' } },\"name\":_setup.APPS_SECTION_ENUM['app-bundles']},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.bundles}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationSpacer),_vm._v(\" \"),(_setup.appstoreEnabled && _setup.categoriesLoading)?_c('li',{staticClass:\"categories--loading\"},[_c(_setup.NcLoadingIcon,{attrs:{\"size\":20,\"aria-label\":_setup.t('settings', 'Loading categories')}})],1):(_setup.appstoreEnabled && !_setup.categoriesLoading)?[(_setup.isSubscribed)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-supported\",\"to\":{ name: 'apps-category', params: { category: 'supported' } },\"name\":_setup.APPS_SECTION_ENUM.supported},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.supported}})]},proxy:true}],null,false,613663011)}):_vm._e(),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-category-featured\",\"to\":{ name: 'apps-category', params: { category: 'featured' } },\"name\":_setup.APPS_SECTION_ENUM.featured},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.APPSTORE_CATEGORY_ICONS.featured}})]},proxy:true}])}),_vm._v(\" \"),_vm._l((_setup.categories),function(category){return _c(_setup.NcAppNavigationItem,{key:category.id,attrs:{\"id\":`app-category-${category.id}`,\"name\":category.displayName,\"to\":{\n\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\tparams: { category: category.id },\n\t\t\t\t}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":category.icon}})]},proxy:true}],null,true)})})]:_vm._e(),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"app-developer-docs\",\"name\":_setup.t('settings', 'Developer documentation ↗'),\"href\":_setup.developerDocsUrl}})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreNavigation.vue?vue&type=style&index=0&id=6d2cb244&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreNavigation.vue?vue&type=style&index=0&id=6d2cb244&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppStoreNavigation.vue?vue&type=template&id=6d2cb244&scoped=true\"\nimport script from \"./AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStoreNavigation.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppStoreNavigation.vue?vue&type=style&index=0&id=6d2cb244&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d2cb244\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-sidebar-tabs__release h2[data-v-69f0fc16]{border-bottom:1px solid var(--color-border);font-size:24px}.app-sidebar-tabs__release-text[data-v-69f0fc16] h3{font-size:20px}.app-sidebar-tabs__release-text[data-v-69f0fc16] h4{font-size:17px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue\"],\"names\":[],\"mappings\":\"AAEC,+CACC,2CAAA,CACA,cAAA,CAKA,oDACC,cAAA,CAED,oDACC,cAAA\",\"sourcesContent\":[\"\\n.app-sidebar-tabs__release {\\n\\th2 {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t\\tfont-size: 24px;\\n\\t}\\n\\n\\t&-text {\\n\\t\\t// Overwrite changelog heading styles\\n\\t\\t:deep(h3) {\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t}\\n\\t\\t:deep(h4) {\\n\\t\\t\\tfont-size: 17px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-level-badge[data-v-11da8cb3]{color:var(--color-text-maxcontrast);background-color:rgba(0,0,0,0);border:1px solid var(--color-text-maxcontrast);border-radius:var(--border-radius);display:flex;flex-direction:row;gap:6px;padding:3px 6px;width:fit-content}.app-level-badge--supported[data-v-11da8cb3]{background-color:var(--color-success);border-color:var(--color-border-success);color:var(--color-success-text)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppLevelBadge.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,mCAAA,CACA,8BAAA,CACA,8CAAA,CACA,kCAAA,CAEA,YAAA,CACA,kBAAA,CACA,OAAA,CACA,eAAA,CACA,iBAAA,CAEA,6CACC,qCAAA,CACA,wCAAA,CACA,+BAAA\",\"sourcesContent\":[\"\\n.app-level-badge {\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tbackground-color: transparent;\\n\\tborder: 1px solid var(--color-text-maxcontrast);\\n\\tborder-radius: var(--border-radius);\\n\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tgap: 6px;\\n\\tpadding: 3px 6px;\\n\\twidth: fit-content;\\n\\n\\t&--supported {\\n\\t\\tbackground-color: var(--color-success);\\n\\t\\tborder-color: var(--color-border-success);\\n\\t\\tcolor: var(--color-success-text);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-discover[data-v-32ad4b6a]{max-width:1008px;margin-inline:auto;padding-inline:54px;padding-block-end:var(--default-clickable-area, 44px);display:flex;flex-direction:column;gap:var(--default-clickable-area, 44px)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,gBAAA,CACA,kBAAA,CACA,mBAAA,CAEA,qDAAA,CAEA,YAAA,CACA,qBAAA,CACA,uCAAA\",\"sourcesContent\":[\"\\n.app-discover {\\n\\tmax-width: 1008px; /* 900px + 2x 54px padding for the carousel controls */\\n\\tmargin-inline: auto;\\n\\tpadding-inline: 54px;\\n\\t/* Padding required to make last element not bound to the bottom */\\n\\tpadding-block-end: var(--default-clickable-area, 44px);\\n\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: var(--default-clickable-area, 44px);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppContent,{staticClass:\"app-settings-content\",attrs:{\"page-heading\":_setup.pageHeading,\"page-title\":_setup.pageTitle}},[_c('h2',{staticClass:\"app-settings-content__label\",domProps:{\"textContent\":_vm._s(_setup.viewLabel)}}),_vm._v(\" \"),(_setup.currentCategory === 'discover')?_c(_setup.AppStoreDiscoverSection):(_setup.isLoading)?_c(_setup.NcEmptyContent,{staticClass:\"empty-content__loading\",attrs:{\"name\":_setup.t('settings', 'Loading app list')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcLoadingIcon,{attrs:{\"size\":64}})]},proxy:true}])}):_c(_setup.AppList,{attrs:{\"category\":_setup.currentCategory}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n\tvalue;\n\tnext;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\t}\n}\n\nexport default class Queue {\n\t#head;\n\t#tail;\n\t#size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this.#head) {\n\t\t\tthis.#tail.next = node;\n\t\t\tthis.#tail = node;\n\t\t} else {\n\t\t\tthis.#head = node;\n\t\t\tthis.#tail = node;\n\t\t}\n\n\t\tthis.#size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this.#head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#head = this.#head.next;\n\t\tthis.#size--;\n\t\treturn current.value;\n\t}\n\n\tpeek() {\n\t\tif (!this.#head) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.#head.value;\n\n\t\t// TODO: Node.js 18.\n\t\t// return this.#head?.value;\n\t}\n\n\tclear() {\n\t\tthis.#head = undefined;\n\t\tthis.#tail = undefined;\n\t\tthis.#size = 0;\n\t}\n\n\tget size() {\n\t\treturn this.#size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this.#head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n\n\t* drain() {\n\t\twhile (this.#head) {\n\t\t\tyield this.dequeue();\n\t\t}\n\t}\n}\n","import Queue from 'yocto-queue';\n\nexport default function pLimit(concurrency) {\n\tvalidateConcurrency(concurrency);\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst resumeNext = () => {\n\t\t// Process the next queued function if we're under the concurrency limit\n\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\tactiveCount++;\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst next = () => {\n\t\tactiveCount--;\n\t\tresumeNext();\n\t};\n\n\tconst run = async (function_, resolve, arguments_) => {\n\t\t// Execute the function and capture the result promise\n\t\tconst result = (async () => function_(...arguments_))();\n\n\t\t// Resolve immediately with the promise (don't wait for completion)\n\t\tresolve(result);\n\n\t\t// Wait for the function to complete (success or failure)\n\t\t// We catch errors here to prevent unhandled rejections,\n\t\t// but the original promise rejection is preserved for the caller\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\t// Decrement active count and process next queued function\n\t\tnext();\n\t};\n\n\tconst enqueue = (function_, resolve, arguments_) => {\n\t\t// Queue the internal resolve function instead of the run function\n\t\t// to preserve the asynchronous execution context.\n\t\tnew Promise(internalResolve => { // eslint-disable-line promise/param-names\n\t\t\tqueue.enqueue(internalResolve);\n\t\t}).then(run.bind(undefined, function_, resolve, arguments_)); // eslint-disable-line promise/prefer-await-to-then\n\n\t\t// Start processing immediately if we haven't reached the concurrency limit\n\t\tif (activeCount < concurrency) {\n\t\t\tresumeNext();\n\t\t}\n\t};\n\n\tconst generator = (function_, ...arguments_) => new Promise(resolve => {\n\t\tenqueue(function_, resolve, arguments_);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount,\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size,\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue() {\n\t\t\t\tqueue.clear();\n\t\t\t},\n\t\t},\n\t\tconcurrency: {\n\t\t\tget: () => concurrency,\n\n\t\t\tset(newConcurrency) {\n\t\t\t\tvalidateConcurrency(newConcurrency);\n\t\t\t\tconcurrency = newConcurrency;\n\n\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\t// eslint-disable-next-line no-unmodified-loop-condition\n\t\t\t\t\twhile (activeCount < concurrency && queue.size > 0) {\n\t\t\t\t\t\tresumeNext();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\tmap: {\n\t\t\tasync value(iterable, function_) {\n\t\t\t\tconst promises = Array.from(iterable, (value, index) => this(function_, value, index));\n\t\t\t\treturn Promise.all(promises);\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n\nexport function limitFunction(function_, options) {\n\tconst {concurrency} = options;\n\tconst limit = pLimit(concurrency);\n\n\treturn (...arguments_) => limit(() => function_(...arguments_));\n}\n\nfunction validateConcurrency(concurrency) {\n\tif (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n}\n","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=style&index=0&id=707dd976&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=style&index=0&id=707dd976&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppList.vue?vue&type=template&id=707dd976&scoped=true\"\nimport script from \"./AppList.vue?vue&type=script&lang=js\"\nexport * from \"./AppList.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppList.vue?vue&type=style&index=0&id=707dd976&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"707dd976\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"app-content-inner\"}},[_c('div',{staticClass:\"apps-list\",class:{\n\t\t\t'apps-list--list-view': (_vm.useBundleView || _vm.useListView),\n\t\t\t'apps-list--store-view': _vm.useAppStoreView,\n\t\t},attrs:{\"id\":\"apps-list\"}},[(_vm.useListView)?[(_vm.showUpdateAll)?_c('div',{staticClass:\"apps-list__toolbar\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.n('settings', '%n app has an update available', '%n apps have an update available', _vm.counter))+\"\\n\\t\\t\\t\\t\"),(_vm.showUpdateAll)?_c('NcButton',{attrs:{\"id\":\"app-list-update-all\",\"variant\":\"primary\"},on:{\"click\":_vm.updateAll}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.n('settings', 'Update', 'Update all', _vm.counter))+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.showUpdateAll)?_c('div',{staticClass:\"apps-list__toolbar\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'All apps are up-to-date.'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('TransitionGroup',{staticClass:\"apps-list__list-container\",attrs:{\"name\":\"apps-list\",\"tag\":\"table\"}},[_c('tr',{key:\"app-list-view-header\"},[_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Icon')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Name')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Version')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Level')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Actions')))])])]),_vm._v(\" \"),_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category}})})],2)]:_vm._e(),_vm._v(\" \"),(_vm.useBundleView)?_c('table',{staticClass:\"apps-list__list-container\"},[_c('tr',{key:\"app-list-view-header\"},[_c('th',{attrs:{\"id\":\"app-table-col-icon\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Icon')))])]),_vm._v(\" \"),_c('th',{attrs:{\"id\":\"app-table-col-name\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Name')))])]),_vm._v(\" \"),_c('th',{attrs:{\"id\":\"app-table-col-version\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Version')))])]),_vm._v(\" \"),_c('th',{attrs:{\"id\":\"app-table-col-level\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Level')))])]),_vm._v(\" \"),_c('th',{attrs:{\"id\":\"app-table-col-actions\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Actions')))])])]),_vm._v(\" \"),_vm._l((_vm.bundles),function(bundle){return [_c('tr',{key:bundle.id},[_c('th',{attrs:{\"id\":`app-table-rowgroup-${bundle.id}`,\"colspan\":\"5\",\"scope\":\"rowgroup\"}},[_c('div',{staticClass:\"apps-list__bundle-heading\"},[_c('span',{staticClass:\"apps-list__bundle-header\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(bundle.name)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"variant\":\"secondary\"},on:{\"click\":function($event){return _vm.toggleBundle(bundle.id)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', _vm.bundleToggleText(bundle.id)))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])],1)])]),_vm._v(\" \"),_vm._l((_vm.bundleApps(bundle.id)),function(app){return _c('AppItem',{key:bundle.id + app.id,attrs:{\"use-bundle-view\":true,\"headers\":`app-table-rowgroup-${bundle.id}`,\"app\":app,\"category\":_vm.category}})})]})],2):_vm._e(),_vm._v(\" \"),(_vm.useAppStoreView)?_c('ul',{staticClass:\"apps-list__store-container\"},_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":false}})}),1):_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"apps-list apps-list--list-view\",attrs:{\"id\":\"apps-list-search\"}},[_c('div',{staticClass:\"apps-list__list-container\"},[(_vm.search !== '' && _vm.searchApps.length > 0)?_c('table',{staticClass:\"apps-list__list-container\"},[_c('caption',{staticClass:\"apps-list__bundle-header\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Results from other categories'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('tr',{key:\"app-list-view-header\"},[_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Icon')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Name')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Version')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Level')))])]),_vm._v(\" \"),_c('th',[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Actions')))])])]),_vm._v(\" \"),_vm._l((_vm.searchApps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category}})})],2):_vm._e()])]),_vm._v(\" \"),(_vm.search !== '' && !_vm.loading && _vm.searchApps.length === 0 && _vm.apps.length === 0)?_c('div',{staticClass:\"emptycontent emptycontent-search\",attrs:{\"id\":\"apps-list-empty\"}},[_c('div',{staticClass:\"icon-settings-dark\",attrs:{\"id\":\"app-list-empty-icon\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'No apps found for your version')))])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"app-discover\"},[(_setup.hasError)?_c(_setup.NcEmptyContent,{attrs:{\"name\":_setup.t('settings', 'Nothing to show'),\"description\":_setup.t('settings', 'Could not load section content from app store.')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiEyeOffOutline,\"size\":64}})]},proxy:true}],null,false,3626885458)}):(_setup.elements.length === 0)?_c(_setup.NcEmptyContent,{attrs:{\"name\":_setup.t('settings', 'Loading'),\"description\":_setup.t('settings', 'Fetching the latest news…')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcLoadingIcon,{attrs:{\"size\":64}})]},proxy:true}])}):_vm._l((_setup.elements),function(entry,index){return _c(_setup.getComponent(entry.type),_vm._b({key:entry.id ?? index,tag:\"component\"},'component',entry,false))})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * Helper to transform the JSON API results to proper frontend objects (app discover section elements)\n *\n * @param element The JSON API element to transform\n */\nexport function parseApiResponse(element) {\n const appElement = { ...element };\n if (appElement.date) {\n appElement.date = Date.parse(appElement.date);\n }\n if (appElement.expiryDate) {\n appElement.expiryDate = Date.parse(appElement.expiryDate);\n }\n if (appElement.type === 'post') {\n return appElement;\n }\n else if (appElement.type === 'showcase') {\n return appElement;\n }\n else if (appElement.type === 'carousel') {\n return appElement;\n }\n throw new Error(`Invalid argument, app discover element with type ${element.type ?? 'unknown'} is unknown`);\n}\n/**\n * Filter outdated or upcoming elements\n *\n * @param element Element to check\n */\nexport function filterElements(element) {\n const now = Date.now();\n // Element not yet published\n if (element.date && element.date > now) {\n return false;\n }\n // Element expired\n if (element.expiryDate && element.expiryDate < now) {\n return false;\n }\n return true;\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreDiscoverSection.vue?vue&type=style&index=0&id=32ad4b6a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreDiscoverSection.vue?vue&type=style&index=0&id=32ad4b6a&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppStoreDiscoverSection.vue?vue&type=template&id=32ad4b6a&scoped=true\"\nimport script from \"./AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStoreDiscoverSection.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppStoreDiscoverSection.vue?vue&type=style&index=0&id=32ad4b6a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"32ad4b6a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStore.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStore.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStore.vue?vue&type=style&index=0&id=0105bd03&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStore.vue?vue&type=style&index=0&id=0105bd03&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppStore.vue?vue&type=template&id=0105bd03&scoped=true\"\nimport script from \"./AppStore.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStore.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppStore.vue?vue&type=style&index=0&id=0105bd03&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0105bd03\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-details[data-v-e83f267a]{padding:20px}.app-details__actions-manage[data-v-e83f267a]{display:flex;align-items:center}.app-details__actions-manage input[data-v-e83f267a]{flex:0 1 auto;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-details__authors[data-v-e83f267a]{color:var(--color-text-maxcontrast)}.app-details__section[data-v-e83f267a]{margin-top:15px}.app-details__section h4[data-v-e83f267a]{font-size:16px;font-weight:bold;margin-block-end:5px}.app-details__interact[data-v-e83f267a]{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px}.app-details__documentation a[data-v-e83f267a]{text-decoration:underline}.app-details__documentation li[data-v-e83f267a]{padding-inline-start:20px}.app-details__documentation li[data-v-e83f267a]::before{width:5px;height:5px;border-radius:100%;background-color:var(--color-main-text);content:\"\";float:inline-start;margin-inline-start:-13px;position:relative;top:10px}.force[data-v-e83f267a]{color:var(--color-text-error);border-color:var(--color-border-error);background:var(--color-main-background)}.force[data-v-e83f267a]:hover,.force[data-v-e83f267a]:active{color:var(--color-main-background);border-color:var(--color-border-error) !important;background:var(--color-error)}.missing-dependencies[data-v-e83f267a]{list-style:initial;list-style-type:initial;list-style-position:inside}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue\"],\"names\":[],\"mappings\":\"AACA,8BACC,YAAA,CAIC,8CAEC,YAAA,CACA,kBAAA,CACA,oDACC,aAAA,CACA,WAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CAIH,uCACC,mCAAA,CAGD,uCACC,eAAA,CAEA,0CACC,cAAA,CACA,gBAAA,CACA,oBAAA,CAIF,wCACC,YAAA,CACA,kBAAA,CACA,cAAA,CACA,QAAA,CAIA,+CACC,yBAAA,CAED,gDACC,yBAAA,CAEA,wDACC,SAAA,CACA,UAAA,CACA,kBAAA,CACA,uCAAA,CACA,UAAA,CACA,kBAAA,CACA,yBAAA,CACA,iBAAA,CACA,QAAA,CAMJ,wBACC,6BAAA,CACA,sCAAA,CACA,uCAAA,CAGD,6DAEC,kCAAA,CACA,iDAAA,CACA,6BAAA,CAGD,uCACC,kBAAA,CACA,uBAAA,CACA,0BAAA\",\"sourcesContent\":[\"\\n.app-details {\\n\\tpadding: 20px;\\n\\n\\t&__actions {\\n\\t\\t// app management\\n\\t\\t&-manage {\\n\\t\\t\\t// if too many, shrink them and ellipsis\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tinput {\\n\\t\\t\\t\\tflex: 0 1 auto;\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t&__authors {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__section {\\n\\t\\tmargin-top: 15px;\\n\\n\\t\\th4 {\\n\\t\\t\\tfont-size: 16px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin-block-end: 5px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__interact {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tflex-wrap: wrap;\\n\\t\\tgap: 12px;\\n\\t}\\n\\n\\t&__documentation {\\n\\t\\ta {\\n\\t\\t\\ttext-decoration: underline;\\n\\t\\t}\\n\\t\\tli {\\n\\t\\t\\tpadding-inline-start: 20px;\\n\\n\\t\\t\\t&::before {\\n\\t\\t\\t\\twidth: 5px;\\n\\t\\t\\t\\theight: 5px;\\n\\t\\t\\t\\tborder-radius: 100%;\\n\\t\\t\\t\\tbackground-color: var(--color-main-text);\\n\\t\\t\\t\\tcontent: \\\"\\\";\\n\\t\\t\\t\\tfloat: inline-start;\\n\\t\\t\\t\\tmargin-inline-start: -13px;\\n\\t\\t\\t\\tposition: relative;\\n\\t\\t\\t\\ttop: 10px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.force {\\n\\tcolor: var(--color-text-error);\\n\\tborder-color: var(--color-border-error);\\n\\tbackground: var(--color-main-background);\\n}\\n\\n.force:hover,\\n.force:active {\\n\\tcolor: var(--color-main-background);\\n\\tborder-color: var(--color-border-error) !important;\\n\\tbackground: var(--color-error);\\n}\\n\\n.missing-dependencies {\\n\\tlist-style: initial;\\n\\tlist-style-type: initial;\\n\\tlist-style-position: inside;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n.app-score__wrapper[data-v-0774afca] {\n\tdisplay: inline-flex;\n\tcolor: var(--color-favorite, #a08b00);\n> *[data-v-0774afca] {\n\t\tvertical-align: text-bottom;\n}\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppScore.vue\"],\"names\":[],\"mappings\":\";AA0EA;CACA,oBAAA;CACA,qCAAA;AAEA;EACA,2BAAA;AACA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios';\nimport { showError, showInfo } from '@nextcloud/dialogs';\nimport { loadState } from '@nextcloud/initial-state';\nimport { translate as t } from '@nextcloud/l10n';\nimport { confirmPassword } from '@nextcloud/password-confirmation';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport api from './api.js';\nexport const useAppApiStore = defineStore('app-api-apps', {\n state: () => ({\n apps: [],\n updateCount: loadState('settings', 'appstoreExAppUpdateCount', 0),\n loading: {},\n loadingList: false,\n statusUpdater: null,\n daemonAccessible: loadState('settings', 'defaultDaemonConfigAccessible', false),\n defaultDaemon: loadState('settings', 'defaultDaemonConfig', null),\n dockerDaemons: [],\n }),\n getters: {\n getLoading: (state) => (id) => state.loading[id] ?? false,\n getAllApps: (state) => state.apps,\n getUpdateCount: (state) => state.updateCount,\n getDaemonAccessible: (state) => state.daemonAccessible,\n getDefaultDaemon: (state) => state.defaultDaemon,\n getAppStatus: (state) => (appId) => state.apps.find((app) => app.id === appId)?.status || null,\n getStatusUpdater: (state) => state.statusUpdater,\n getInitializingOrDeployingApps: (state) => state.apps.filter((app) => app?.status?.action\n && (app?.status?.action === 'deploy' || app.status.action === 'init' || app.status.action === 'healthcheck')\n && app.status.type !== ''),\n },\n actions: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n appsApiFailure(error) {\n showError(t('settings', 'An error occurred during the request. Unable to proceed.') + '
' + error.error.response.data.data.message, { isHTML: true });\n logger.error(error);\n },\n setLoading(id, value) {\n Vue.set(this.loading, id, value);\n },\n setError(appId, error) {\n const appIds = Array.isArray(appId) ? appId : [appId];\n appIds.forEach((_id) => {\n const app = this.apps.find((app) => app.id === _id);\n if (app) {\n app.error = error;\n }\n });\n },\n enableApp(appId, daemon, deployOptions) {\n this.setLoading(appId, true);\n this.setLoading('install', true);\n return confirmPassword().then(() => {\n return axios.post(generateUrl(`/apps/app_api/apps/enable/${appId}/${daemon.name}`), { deployOptions })\n .then((response) => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n if (!app.installed) {\n app.installed = true;\n app.needsDownload = false;\n app.daemon = daemon;\n app.status = {\n type: 'install',\n action: 'deploy',\n init: 0,\n deploy: 0,\n };\n }\n app.active = true;\n app.canUnInstall = false;\n app.removable = true;\n app.error = '';\n }\n this.updateAppsStatus();\n return axios.get(generateUrl('apps/files'))\n .then(() => {\n if (response.data.update_required) {\n showInfo(t('settings', 'The app has been enabled but needs to be updated.'), {\n onClick: () => window.location.reload(),\n close: false,\n });\n setTimeout(() => {\n location.reload();\n }, 5000);\n }\n })\n .catch(() => {\n this.setError(appId, t('settings', 'Error: This app cannot be enabled because it makes the server unstable'));\n });\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n this.setError(appId, error.response.data.data.message);\n this.appsApiFailure({ appId, error });\n });\n }).catch(() => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n });\n },\n forceEnableApp(appId) {\n this.setLoading(appId, true);\n this.setLoading('install', true);\n return confirmPassword().then(() => {\n return api.post(generateUrl('/apps/app_api/apps/force'), { appId })\n .then(() => {\n location.reload();\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n this.setError(appId, error.response.data.data.message);\n this.appsApiFailure({ appId, error });\n });\n }).catch(() => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n });\n },\n disableApp(appId) {\n this.setLoading(appId, true);\n return confirmPassword().then(() => {\n return api.get(generateUrl(`apps/app_api/apps/disable/${appId}`))\n .then(() => {\n this.setLoading(appId, false);\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n app.active = false;\n if (app.removable) {\n app.canUnInstall = true;\n }\n }\n return true;\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.appsApiFailure({ appId, error });\n });\n }).catch(() => {\n this.setLoading(appId, false);\n });\n },\n uninstallApp(appId, removeData) {\n this.setLoading(appId, true);\n return confirmPassword().then(() => {\n return api.get(generateUrl(`/apps/app_api/apps/uninstall/${appId}?removeData=${removeData}`))\n .then(() => {\n this.setLoading(appId, false);\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n app.active = false;\n app.needsDownload = true;\n app.installed = false;\n app.canUnInstall = false;\n app.canInstall = true;\n app.daemon = null;\n app.status = {};\n if (app.update !== null) {\n this.updateCount--;\n }\n app.update = undefined;\n }\n return true;\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.appsApiFailure({ appId, error });\n });\n });\n },\n updateApp(appId) {\n this.setLoading(appId, true);\n this.setLoading('install', true);\n return confirmPassword().then(() => {\n return api.get(generateUrl(`/apps/app_api/apps/update/${appId}`))\n .then(() => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n const version = app.update;\n app.update = undefined;\n app.version = version || app.version;\n app.status = {\n type: 'update',\n action: 'deploy',\n init: 0,\n deploy: 0,\n };\n app.error = '';\n }\n this.updateCount--;\n this.updateAppsStatus();\n return true;\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n this.appsApiFailure({ appId, error });\n });\n }).catch(() => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n });\n },\n async fetchAllApps() {\n this.loadingList = true;\n try {\n const response = await api.get(generateUrl('/apps/app_api/apps/list'));\n this.apps = response.data.apps;\n this.loadingList = false;\n return true;\n }\n catch (error) {\n logger.error(error);\n showError(t('settings', 'An error occurred during the request. Unable to proceed.'));\n this.loadingList = false;\n }\n },\n async fetchAppStatus(appId) {\n return api.get(generateUrl(`/apps/app_api/apps/status/${appId}`))\n .then((response) => {\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n app.status = response.data;\n }\n const initializingOrDeployingApps = this.getInitializingOrDeployingApps;\n logger.debug('initializingOrDeployingApps after setAppStatus', { initializingOrDeployingApps });\n if (initializingOrDeployingApps.length === 0) {\n logger.debug('clearing interval');\n clearInterval(this.statusUpdater);\n this.statusUpdater = null;\n }\n if (Object.hasOwn(response.data, 'error')\n && response.data.error !== ''\n && initializingOrDeployingApps.length === 1) {\n clearInterval(this.statusUpdater);\n this.statusUpdater = null;\n }\n })\n .catch((error) => {\n this.appsApiFailure({ appId, error });\n this.apps = this.apps.filter((app) => app.id !== appId);\n this.updateAppsStatus();\n });\n },\n async fetchDockerDaemons() {\n try {\n const { data } = await axios.get(generateUrl('/apps/app_api/daemons'));\n this.defaultDaemon = data.daemons.find((daemon) => daemon.name === data.default_daemon_config);\n this.dockerDaemons = data.daemons.filter((daemon) => daemon.accepts_deploy_id === 'docker-install');\n }\n catch (error) {\n logger.error('[app-api-store] Failed to fetch Docker daemons', { error });\n return false;\n }\n return true;\n },\n updateAppsStatus() {\n clearInterval(this.statusUpdater);\n const initializingOrDeployingApps = this.getInitializingOrDeployingApps;\n if (initializingOrDeployingApps.length === 0) {\n return;\n }\n this.statusUpdater = setInterval(() => {\n const initializingOrDeployingApps = this.getInitializingOrDeployingApps;\n logger.debug('initializingOrDeployingApps', { initializingOrDeployingApps });\n initializingOrDeployingApps.forEach((app) => {\n this.fetchAppStatus(app.id);\n });\n }, 2000);\n },\n },\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n.deploy-option[data-v-0ec0c17d] {\n\tmargin: calc(var(--default-grid-baseline) * 4) 0;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: flex-start;\n&__hint[data-v-0ec0c17d] {\n\t\tmargin-top: 4px;\n\t\tfont-size: 0.8em;\n\t\tcolor: var(--color-text-maxcontrast);\n}\n}\n.envs[data-v-0ec0c17d] {\n\twidth: 100%;\n\toverflow: auto;\n\theight: 100%;\n\tmax-height: 300px;\nli[data-v-0ec0c17d] {\n\t\tmargin: 10px 0;\n}\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue\"],\"names\":[],\"mappings\":\";AA6TA;CACA,gDAAA;CACA,aAAA;CACA,sBAAA;CACA,uBAAA;AAEA;EACA,eAAA;EACA,gBAAA;EACA,oCAAA;AACA;AACA;AAEA;CACA,WAAA;CACA,cAAA;CACA,YAAA;CACA,iBAAA;AAEA;EACA,cAAA;AACA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"app-score__wrapper\",attrs:{\"role\":\"img\",\"aria-label\":_vm.title,\"title\":_vm.title}},[_vm._l((_vm.fullStars),function(index){return _c('NcIconSvgWrapper',{key:`full-star-${index}`,attrs:{\"path\":_vm.mdiStar,\"inline\":\"\"}})}),_vm._v(\" \"),(_vm.hasHalfStar)?_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiStarHalfFull,\"inline\":\"\"}}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.emptyStars),function(index){return _c('NcIconSvgWrapper',{key:`empty-star-${index}`,attrs:{\"path\":_vm.mdiStarOutline,\"inline\":\"\"}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=style&index=0&id=0774afca&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=style&index=0&id=0774afca&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppScore.vue?vue&type=template&id=0774afca&scoped=true\"\nimport script from \"./AppScore.vue?vue&type=script&lang=ts\"\nexport * from \"./AppScore.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppScore.vue?vue&type=style&index=0&id=0774afca&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0774afca\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-description[data-v-1d5b4408]{padding:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,YAAA\",\"sourcesContent\":[\"\\n.app-description {\\n\\tpadding: 12px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcDialog,{attrs:{\"open\":_vm.show,\"name\":_vm.t('settings', 'Choose Deploy Daemon for {appName}', { appName: _vm.app.name }),\"size\":\"normal\"},on:{\"update:open\":_setup.closeModal}},[_c(_setup.DaemonSelectionList,{attrs:{\"app\":_vm.app,\"deploy-options\":_vm.deployOptions},on:{\"close\":_setup.closeModal}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulleted.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulleted.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FormatListBulleted.vue?vue&type=template&id=5c444520\"\nimport script from \"./FormatListBulleted.vue?vue&type=script&lang=js\"\nexport * from \"./FormatListBulleted.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon format-list-bulleted-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7,5H21V7H7V5M7,13V11H21V13H7M4,4.5A1.5,1.5 0 0,1 5.5,6A1.5,1.5 0 0,1 4,7.5A1.5,1.5 0 0,1 2.5,6A1.5,1.5 0 0,1 4,4.5M4,10.5A1.5,1.5 0 0,1 5.5,12A1.5,1.5 0 0,1 4,13.5A1.5,1.5 0 0,1 2.5,12A1.5,1.5 0 0,1 4,10.5M7,19V17H21V19H7M4,16.5A1.5,1.5 0 0,1 5.5,18A1.5,1.5 0 0,1 4,19.5A1.5,1.5 0 0,1 2.5,18A1.5,1.5 0 0,1 4,16.5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcListItem',{attrs:{\"name\":_vm.itemTitle,\"details\":_vm.isDefault ? _vm.t('settings', 'Default') : '',\"force-display-actions\":true,\"counter-number\":_vm.daemon.exAppsCount,\"active\":_vm.isDefault,\"counter-type\":\"highlighted\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.selectDaemonAndInstall.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"subname\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.daemon.accepts_deploy_id)+\"\\n\\t\")]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionEntry.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionEntry.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DaemonSelectionEntry.vue?vue&type=template&id=16f518b8\"\nimport script from \"./DaemonSelectionEntry.vue?vue&type=script&lang=js\"\nexport * from \"./DaemonSelectionEntry.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionList.vue?vue&type=script&setup=true&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionList.vue?vue&type=script&setup=true&lang=js\"","\n\n\n\n\n\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionList.vue?vue&type=style&index=0&id=a31da1f4&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionList.vue?vue&type=style&index=0&id=a31da1f4&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DaemonSelectionList.vue?vue&type=template&id=a31da1f4&scoped=true\"\nimport script from \"./DaemonSelectionList.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./DaemonSelectionList.vue?vue&type=script&setup=true&lang=js\"\nimport style0 from \"./DaemonSelectionList.vue?vue&type=style&index=0&id=a31da1f4&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a31da1f4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"daemon-selection-list\"},[(_setup.dockerDaemons.length > 0)?_c('ul',{attrs:{\"aria-label\":_vm.t('settings', 'Registered Deploy daemons list')}},_vm._l((_setup.dockerDaemons),function(daemon){return _c(_setup.DaemonSelectionEntry,{key:daemon.id,attrs:{\"daemon\":daemon,\"is-default\":_setup.defaultDaemon.name === daemon.name,\"app\":_vm.app,\"deploy-options\":_vm.deployOptions},on:{\"close\":_setup.closeModal}})}),1):_c(_setup.NcEmptyContent,{staticClass:\"daemon-selection-list__empty-content\",attrs:{\"name\":_vm.t('settings', 'No Deploy daemons configured'),\"description\":_vm.t('settings', 'Register a custom one or setup from available templates')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.FormatListBullet,{attrs:{\"size\":20}})]},proxy:true},{key:\"action\",fn:function(){return [_c(_setup.NcButton,{attrs:{\"href\":_setup.appApiAdminPage}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Manage Deploy daemons'))+\"\\n\\t\\t\\t\")])]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionDialog.vue?vue&type=script&setup=true&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionDialog.vue?vue&type=script&setup=true&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./DaemonSelectionDialog.vue?vue&type=template&id=02d5b285\"\nimport script from \"./DaemonSelectionDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./DaemonSelectionDialog.vue?vue&type=script&setup=true&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { mdiAccountMultipleOutline, mdiAccountOutline, mdiArchiveOutline, mdiCheck, mdiClipboardFlowOutline, mdiClose, mdiCogOutline, mdiControllerClassicOutline, mdiCreationOutline, mdiDownload, mdiFileDocumentEdit, mdiFolder, mdiKeyOutline, mdiMagnify, mdiMonitorEye, mdiMultimedia, mdiOfficeBuildingOutline, mdiOpenInApp, mdiSecurity, mdiStar, mdiStarCircleOutline, mdiStarShootingOutline, mdiTools, mdiViewColumnOutline, } from '@mdi/js';\n/**\n * SVG paths used for appstore category icons\n */\nexport default Object.freeze({\n // system special categories\n discover: mdiStarCircleOutline,\n installed: mdiAccountOutline,\n enabled: mdiCheck,\n disabled: mdiClose,\n bundles: mdiArchiveOutline,\n supported: mdiStarShootingOutline,\n featured: mdiStar,\n updates: mdiDownload,\n // generic category\n ai: mdiCreationOutline,\n auth: mdiKeyOutline,\n customization: mdiCogOutline,\n dashboard: mdiViewColumnOutline,\n files: mdiFolder,\n games: mdiControllerClassicOutline,\n integration: mdiOpenInApp,\n monitoring: mdiMonitorEye,\n multimedia: mdiMultimedia,\n office: mdiFileDocumentEdit,\n organization: mdiOfficeBuildingOutline,\n search: mdiMagnify,\n security: mdiSecurity,\n social: mdiAccountMultipleOutline,\n tools: mdiTools,\n workflow: mdiClipboardFlowOutline,\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*!\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */.app-item[data-v-50fa5285]{position:relative}.app-item[data-v-50fa5285]:hover{background-color:var(--color-background-dark)}.app-item--list-view[data-v-50fa5285]{--app-item-padding: calc(var(--default-grid-baseline) * 2);--app-item-height: calc(var(--default-clickable-area) + var(--app-item-padding) * 2)}.app-item--list-view.app-item--selected[data-v-50fa5285]{background-color:var(--color-background-dark)}.app-item--list-view>*[data-v-50fa5285]{vertical-align:middle;border-bottom:1px solid var(--color-border);padding:var(--app-item-padding);height:var(--app-item-height)}.app-item--list-view .app-image[data-v-50fa5285]{width:var(--default-clickable-area);height:auto;text-align:end}.app-item--list-view .app-image-icon svg[data-v-50fa5285],.app-item--list-view .app-image-icon .icon-settings-dark[data-v-50fa5285]{margin-top:5px;width:20px;height:20px;opacity:.5;background-size:cover;display:inline-block}.app-item--list-view .app-name[data-v-50fa5285]{padding:0 var(--app-item-padding)}.app-item--list-view .app-name--link[data-v-50fa5285]{height:var(--app-item-height);display:flex;align-items:center}.app-item--list-view .app-name--link[data-v-50fa5285]::after{content:\"\";position:absolute;inset-inline:0;height:var(--app-item-height)}.app-item--list-view .app-actions[data-v-50fa5285]{display:flex;gap:var(--app-item-padding);flex-wrap:wrap;justify-content:end}.app-item--list-view .app-actions .icon-loading-small[data-v-50fa5285]{display:inline-block;top:4px;margin-inline-end:10px}@media only screen and (max-width: 900px){.app-item--list-view .app-version[data-v-50fa5285],.app-item--list-view .app-level[data-v-50fa5285]{display:none}}@media only screen and (max-width: 512px){.app-item--list-view .app-actions[data-v-50fa5285]{display:none}}.app-item--store-view[data-v-50fa5285]{padding:30px}.app-item--store-view .app-image-icon .icon-settings-dark[data-v-50fa5285]{width:100%;height:150px;background-size:45px;opacity:.5}.app-item--store-view .app-image-icon svg[data-v-50fa5285]{position:absolute;bottom:43px;width:64px;height:64px;opacity:.1}.app-item--store-view .app-name[data-v-50fa5285]{margin:5px 0}.app-item--store-view .app-name--link[data-v-50fa5285]::after{content:\"\";position:absolute;inset-block:0;inset-inline:0}.app-item--store-view .app-actions[data-v-50fa5285]{margin:10px 0}@media only screen and (min-width: 1601px){.app-item--store-view[data-v-50fa5285]{width:25%}.app-item--store-view.app-item--with-sidebar[data-v-50fa5285]{width:33%}}@media only screen and (max-width: 1600px){.app-item--store-view[data-v-50fa5285]{width:25%}.app-item--store-view.app-item--with-sidebar[data-v-50fa5285]{width:33%}}@media only screen and (max-width: 1400px){.app-item--store-view[data-v-50fa5285]{width:33%}.app-item--store-view.app-item--with-sidebar[data-v-50fa5285]{width:50%}}@media only screen and (max-width: 900px){.app-item--store-view[data-v-50fa5285]{width:50%}.app-item--store-view.app-item--with-sidebar[data-v-50fa5285]{width:100%}}@media only screen and (max-width: 1024px){.app-item--store-view[data-v-50fa5285]{width:50%}}@media only screen and (max-width: 480px){.app-item--store-view[data-v-50fa5285]{width:100%}}.app-icon[data-v-50fa5285]{filter:var(--background-invert-if-bright)}.app-image[data-v-50fa5285]{position:relative;height:150px;opacity:1;overflow:hidden}.app-image img[data-v-50fa5285]{width:100%}.app-version[data-v-50fa5285]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/css/variables.scss\",\"webpack://./apps/settings/src/components/AppList/AppItem.vue\"],\"names\":[],\"mappings\":\"AAEA;;;EAAA,CCEA,2BACC,iBAAA,CAEA,iCACC,6CAAA,CAGD,sCACC,0DAAA,CACA,oFAAA,CAEA,yDACC,6CAAA,CAGD,wCACC,qBAAA,CACA,2CAAA,CACA,+BAAA,CACA,6BAAA,CAGD,iDACC,mCAAA,CACA,WAAA,CACA,cAAA,CAGD,oIAEC,cAAA,CACA,UAAA,CACA,WAAA,CACA,UAAA,CACA,qBAAA,CACA,oBAAA,CAGD,gDACC,iCAAA,CAGD,sDACC,6BAAA,CACA,YAAA,CACA,kBAAA,CAMD,6DACC,UAAA,CACA,iBAAA,CACA,cAAA,CACA,6BAAA,CAGD,mDACC,YAAA,CACA,2BAAA,CACA,cAAA,CACA,mBAAA,CAEA,uEACC,oBAAA,CACA,OAAA,CACA,sBAAA,CAKF,0CACC,oGAEC,YAAA,CAAA,CAKF,0CACC,mDACC,YAAA,CAAA,CAKH,uCACC,YAAA,CAEA,2EACC,UAAA,CACA,YAAA,CACA,oBAAA,CACA,UAAA,CAGD,2DACC,iBAAA,CACA,WAAA,CAEA,UAAA,CACA,WAAA,CACA,UAAA,CAGD,iDACC,YAAA,CAGD,8DACC,UAAA,CACA,iBAAA,CACA,aAAA,CACA,cAAA,CAGD,oDACC,aAAA,CAGD,2CAlCD,uCAmCE,SAAA,CAEA,8DACC,SAAA,CAAA,CAIF,2CA1CD,uCA2CE,SAAA,CAEA,8DACC,SAAA,CAAA,CAIF,2CAlDD,uCAmDE,SAAA,CAEA,8DACC,SAAA,CAAA,CAIF,0CA1DD,uCA2DE,SAAA,CAEA,8DACC,UAAA,CAAA,CAIF,2CAlED,uCAmEE,SAAA,CAAA,CAGD,0CAtED,uCAuEE,UAAA,CAAA,CAKH,2BACC,yCAAA,CAGD,4BACC,iBAAA,CACA,YAAA,CACA,SAAA,CACA,eAAA,CAEA,gCACC,UAAA,CAIF,8BACC,mCAAA\",\"sourcesContent\":[\"@use 'sass:color';\\n\\n/*!\\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n// SCSS darken/lighten function override\\n@function nc-darken($color, $value) {\\n\\t@return color.adjust($color, $lightness: - $value, $space: hsl);\\n}\\n\\n@function nc-lighten($color, $value) {\\n\\t@return color.adjust($color, $lightness: $value, $space: hsl);\\n}\\n\\n// SCSS variables\\n// DEPRECATED, please use CSS4 vars\\n$color-main-text: #222 !default; // Not #000 for better readability\\n$color-main-background: #fff !default;\\n$color-main-background-translucent: rgba($color-main-background, .97) !default;\\n\\n// used for different active/hover/focus/disabled states\\n$color-background-hover: nc-darken($color-main-background, 4%) !default;\\n$color-background-dark: nc-darken($color-main-background, 7%) !default;\\n$color-background-darker: nc-darken($color-main-background, 14%) !default;\\n\\n$color-placeholder-light: nc-darken($color-main-background, 10%) !default;\\n$color-placeholder-dark: nc-darken($color-main-background, 20%) !default;\\n\\n$color-primary: #0082c9 !default;\\n$color-primary-hover: color.mix($color-primary, $color-main-background, 80%) !default;\\n\\n$color-primary-light: color.mix($color-primary, $color-main-background, 10%) !default;\\n$color-primary-light-text: $color-primary !default;\\n$color-primary-light-hover: color.mix($color-primary-light, $color-main-text, 95%) !default;\\n\\n$color-primary-text: #ffffff !default;\\n// do not use nc-darken/lighten in case of overriding because\\n// primary-text is independent of color-main-text\\n$color-primary-element-text-dark: color.adjust($color-primary-text, $lightness: -7%, $space: hsl) !default;\\n$color-primary-element: $color-primary !default;\\n$color-primary-element-hover: color.mix($color-primary-element, $color-main-background, 80%) !default;\\n$color-primary-element-light: color.adjust($color-primary-element, $lightness: 15%, $space: hsl) !default;\\n\\n$color-error: #e9322d;\\n$color-error-hover: color.mix($color-error, $color-main-background, 80%) !default;\\n$color-warning: #eca700;\\n$color-warning-hover: color.mix($color-warning, $color-main-background, 80%) !default;\\n$color-success: #46ba61;\\n$color-success-hover: color.mix($color-success, $color-main-background, 80%) !default;\\n// used for svg\\n$color-white: #fff;\\n$color-black: #000;\\n$color-yellow: #FC0;\\n\\n// rgb(118, 118, 118) / #767676\\n// min. color contrast for normal text on white background according to WCAG AA\\n// (Works as well: color: #000; opacity: 0.57;)\\n$color-text-maxcontrast: nc-lighten($color-main-text, 33%) !default;\\n\\n$image-logo: url('../img/logo/logo.svg?v=1') !default;\\n$image-login-background: url('../img/background.png?v=2') !default;\\n$image-logoheader: url('../img/logo/logo.svg?v=1') !default;\\n$image-favicon: url('../img/logo/logo.svg?v=1') !default;\\n\\n$color-loading-light: #ccc !default;\\n$color-loading-dark: #444 !default;\\n\\n$color-box-shadow: color.adjust(nc-darken($color-main-background, 70%), $alpha: -0.5, $space: hsl) !default;\\n\\n// light border like file table or app-content list\\n$color-border: nc-darken($color-main-background, 7%) !default;\\n// darker border like inputs or very visible elements\\n$color-border-dark: nc-darken($color-main-background, 14%) !default;\\n\\n$border-radius: 3px !default;\\n$border-radius-large: 10px !default;\\n// Pill-style button, value is large so big buttons also have correct roundness\\n$border-radius-pill: 100px !default;\\n\\n$font-face: system-ui, -apple-system, \\\"Segoe UI\\\", Roboto, Oxygen-Sans, Cantarell, Ubuntu, \\\"Helvetica Neue\\\", \\\"Noto Sans\\\", \\\"Liberation Sans\\\", Arial, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\", \\\"Noto Color Emoji\\\" !default;\\n$default-font-size: 15px;\\n\\n$default-line-height: 24px;\\n\\n$animation-quick: 100ms;\\n$animation-slow: 300ms;\\n\\n// various structure data\\n$header-height: 50px;\\n$navigation-width: 300px;\\n$sidebar-min-width: 300px;\\n$sidebar-max-width: 500px;\\n$list-min-width: 200px;\\n$list-max-width: 300px;\\n$header-menu-item-height: 44px;\\n$header-menu-profile-item-height: 66px;\\n\\n// mobile. Keep in sync with core/js/js.js\\n$breakpoint-mobile: 1024px;\\n\",\"\\n@use '../../../../../core/css/variables.scss' as variables;\\n@use 'sass:math';\\n\\n.app-item {\\n\\tposition: relative;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n\\n\\t&--list-view {\\n\\t\\t--app-item-padding: calc(var(--default-grid-baseline) * 2);\\n\\t\\t--app-item-height: calc(var(--default-clickable-area) + var(--app-item-padding) * 2);\\n\\n\\t\\t&.app-item--selected {\\n\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t}\\n\\n\\t\\t> * {\\n\\t\\t\\tvertical-align: middle;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t\\t\\tpadding: var(--app-item-padding);\\n\\t\\t\\theight: var(--app-item-height);\\n\\t\\t}\\n\\n\\t\\t.app-image {\\n\\t\\t\\twidth: var(--default-clickable-area);\\n\\t\\t\\theight: auto;\\n\\t\\t\\ttext-align: end;\\n\\t\\t}\\n\\n\\t\\t.app-image-icon svg,\\n\\t\\t.app-image-icon .icon-settings-dark {\\n\\t\\t\\tmargin-top: 5px;\\n\\t\\t\\twidth: 20px;\\n\\t\\t\\theight: 20px;\\n\\t\\t\\topacity: .5;\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\n\\t\\t.app-name {\\n\\t\\t\\tpadding: 0 var(--app-item-padding);\\n\\t\\t}\\n\\n\\t\\t.app-name--link {\\n\\t\\t\\theight: var(--app-item-height);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t}\\n\\n\\t\\t// Note: because of Safari bug, we cannot position link overlay relative to the table row\\n\\t\\t// So we need to manually position it relative to the table container and cell\\n\\t\\t// See: https://bugs.webkit.org/show_bug.cgi?id=240961\\n\\t\\t.app-name--link::after {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tinset-inline: 0;\\n\\t\\t\\theight: var(--app-item-height);\\n\\t\\t}\\n\\n\\t\\t.app-actions {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tgap: var(--app-item-padding);\\n\\t\\t\\tflex-wrap: wrap;\\n\\t\\t\\tjustify-content: end;\\n\\n\\t\\t\\t.icon-loading-small {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\ttop: 4px;\\n\\t\\t\\t\\tmargin-inline-end: 10px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t/* hide app version and level on narrower screens */\\n\\t\\t@media only screen and (max-width: 900px) {\\n\\t\\t\\t.app-version,\\n\\t\\t\\t.app-level {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t/* Hide actions on a small screen. Click on app opens fill-screen sidebar with the buttons */\\n\\t\\t@media only screen and (max-width: math.div(variables.$breakpoint-mobile, 2)) {\\n\\t\\t\\t.app-actions {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&--store-view {\\n\\t\\tpadding: 30px;\\n\\n\\t\\t.app-image-icon .icon-settings-dark {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 150px;\\n\\t\\t\\tbackground-size: 45px;\\n\\t\\t\\topacity: 0.5;\\n\\t\\t}\\n\\n\\t\\t.app-image-icon svg {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tbottom: 43px;\\n\\t\\t\\t/* position halfway vertically */\\n\\t\\t\\twidth: 64px;\\n\\t\\t\\theight: 64px;\\n\\t\\t\\topacity: .1;\\n\\t\\t}\\n\\n\\t\\t.app-name {\\n\\t\\t\\tmargin: 5px 0;\\n\\t\\t}\\n\\n\\t\\t.app-name--link::after {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tinset-block: 0;\\n\\t\\t\\tinset-inline: 0;\\n\\t\\t}\\n\\n\\t\\t.app-actions {\\n\\t\\t\\tmargin: 10px 0;\\n\\t\\t}\\n\\n\\t\\t@media only screen and (min-width: 1601px) {\\n\\t\\t\\twidth: 25%;\\n\\n\\t\\t\\t&.app-item--with-sidebar {\\n\\t\\t\\t\\twidth: 33%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: 1600px) {\\n\\t\\t\\twidth: 25%;\\n\\n\\t\\t\\t&.app-item--with-sidebar {\\n\\t\\t\\t\\twidth: 33%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: 1400px) {\\n\\t\\t\\twidth: 33%;\\n\\n\\t\\t\\t&.app-item--with-sidebar {\\n\\t\\t\\t\\twidth: 50%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: 900px) {\\n\\t\\t\\twidth: 50%;\\n\\n\\t\\t\\t&.app-item--with-sidebar {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: variables.$breakpoint-mobile) {\\n\\t\\t\\twidth: 50%;\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: 480px) {\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t}\\n}\\n\\n.app-icon {\\n\\tfilter: var(--background-invert-if-bright);\\n}\\n\\n.app-image {\\n\\tposition: relative;\\n\\theight: 150px;\\n\\topacity: 1;\\n\\toverflow: hidden;\\n\\n\\timg {\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\\n.app-version {\\n\\tcolor: var(--color-text-maxcontrast);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n.empty-content__loading[data-v-0105bd03] {\n\theight: 100%;\n}\n.app-settings-content__label[data-v-0105bd03] {\n\tmargin-block-start: var(--app-navigation-padding);\n\tmargin-inline-start: calc(var(--default-clickable-area) + var(--app-navigation-padding) * 2);\n\tmin-height: var(--default-clickable-area);\n\tline-height: var(--default-clickable-area);\n\tvertical-align: center;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/AppStore.vue\"],\"names\":[],\"mappings\":\";AA2EA;CACA,YAAA;AACA;AAEA;CACA,iDAAA;CACA,4FAAA;CACA,yCAAA;CACA,0CAAA;CACA,sBAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of verification constants, according to Apps */\nexport const APPS_SECTION_ENUM = Object.freeze({\n\tdiscover: t('settings', 'Discover'),\n\tinstalled: t('settings', 'Your apps'),\n\tenabled: t('settings', 'Active apps'),\n\tdisabled: t('settings', 'Disabled apps'),\n\tupdates: t('settings', 'Updates'),\n\t'app-bundles': t('settings', 'App bundles'),\n\tfeatured: t('settings', 'Featured apps'),\n\tsupported: t('settings', 'Supported apps'), // From subscription\n})\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.isSupported || _setup.isFeatured)?_c('span',{staticClass:\"app-level-badge\",class:{ 'app-level-badge--supported': _setup.isSupported },attrs:{\"title\":_setup.badgeTitle}},[_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.badgeIcon,\"size\":20,\"inline\":\"\"}}),_vm._v(\"\\n\\t\"+_vm._s(_setup.badgeText)+\"\\n\")],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=style&index=0&id=11da8cb3&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=style&index=0&id=11da8cb3&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppLevelBadge.vue?vue&type=template&id=11da8cb3&scoped=true\"\nimport script from \"./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppLevelBadge.vue?vue&type=style&index=0&id=11da8cb3&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"11da8cb3\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.settings-markdown[data-v-62ec0d6b] a{text-decoration:underline}.settings-markdown[data-v-62ec0d6b] a::after{content:\"↗\";padding-inline:calc(var(--default-grid-baseline)/2)}.settings-markdown[data-v-62ec0d6b] pre{white-space:pre;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.settings-markdown[data-v-62ec0d6b] p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown[data-v-62ec0d6b] li{position:relative}.settings-markdown[data-v-62ec0d6b] ul,.settings-markdown[data-v-62ec0d6b] ol{padding-inline-start:10px;margin-inline-start:10px}.settings-markdown[data-v-62ec0d6b] ul li{list-style-type:disc}.settings-markdown[data-v-62ec0d6b] ul>li>ul>li{list-style-type:circle}.settings-markdown[data-v-62ec0d6b] ul>li>ul>li ul li{list-style-type:square}.settings-markdown[data-v-62ec0d6b] blockquote{padding-inline-start:1em;border-inline-start:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-inline:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./Markdown.vue\",\"webpack://./apps/settings/src/components/Markdown.vue\"],\"names\":[],\"mappings\":\"AAAA,sCCEC,yBACC,CAAA,6CACA,WACC,CAAA,mDACA,CAAA,wCAIF,eACC,CAAA,eACA,CAAA,6CACA,CAAA,kCACA,CAAA,iBACA,CAAA,iBACA,CAAA,2CAGD,6CACC,CAAA,kCACA,CAAA,iBACA,CAAA,uCAGD,iBACC,CAAA,8EAGD,yBACC,CAAA,wBACA,CAAA,0CAGD,oBACC,CAAA,gDAGD,sBACC,CAAA,sDAGD,sBACC,CAAA,+CAGD,wBACC,CAAA,0DACA,CAAA,mCACA,CAAA,eACA\",\"sourcesContent\":[\".settings-markdown :deep a{text-decoration:underline}.settings-markdown :deep a::after{content:\\\"↗\\\";padding-inline:calc(var(--default-grid-baseline)/2)}.settings-markdown :deep pre{white-space:pre;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.settings-markdown :deep p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown :deep li{position:relative}.settings-markdown :deep ul,.settings-markdown :deep ol{padding-inline-start:10px;margin-inline-start:10px}.settings-markdown :deep ul li{list-style-type:disc}.settings-markdown :deep ul>li>ul>li{list-style-type:circle}.settings-markdown :deep ul>li>ul>li ul li{list-style-type:square}.settings-markdown :deep blockquote{padding-inline-start:1em;border-inline-start:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-inline:0}\",\"\\n.settings-markdown :deep {\\n\\ta {\\n\\t\\ttext-decoration: underline;\\n\\t\\t&::after {\\n\\t\\t\\tcontent: '↗';\\n\\t\\t\\tpadding-inline: calc(var(--default-grid-baseline) / 2);\\n\\t\\t}\\n\\t}\\n\\n\\tpre {\\n\\t\\twhite-space: pre;\\n\\t\\toverflow-x: auto;\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: 1em 1.3em;\\n\\t\\tmargin-bottom: 1em;\\n\\t}\\n\\n\\tp code {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: .1em .3em;\\n\\t}\\n\\n\\tli {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\tul, ol {\\n\\t\\tpadding-inline-start: 10px;\\n\\t\\tmargin-inline-start: 10px;\\n\\t}\\n\\n\\tul li {\\n\\t\\tlist-style-type: disc;\\n\\t}\\n\\n\\tul > li > ul > li {\\n\\t\\tlist-style-type: circle;\\n\\t}\\n\\n\\tul > li > ul > li ul li {\\n\\t\\tlist-style-type: square;\\n\\t}\\n\\n\\tblockquote {\\n\\t\\tpadding-inline-start: 1em;\\n\\t\\tborder-inline-start: 4px solid var(--color-primary-element);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-inline: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.listView ? 'tr' : (_vm.inline ? 'article' : 'li'),{tag:\"component\",staticClass:\"app-item\",class:{\n\t\t'app-item--list-view': _vm.listView,\n\t\t'app-item--store-view': !_vm.listView,\n\t\t'app-item--selected': _vm.isSelected,\n\t\t'app-item--with-sidebar': _vm.withSidebar,\n\t}},[_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-image app-image-icon\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-icon`)}},[(!_vm.app?.app_api && _vm.shouldDisplayDefaultIcon)?_c('div',{staticClass:\"icon-settings-dark\"}):(_vm.app.app_api && _vm.shouldDisplayDefaultIcon)?_c('NcIconSvgWrapper',{staticStyle:{\"min-width\":\"auto\",\"min-height\":\"auto\",\"height\":\"100%\"},attrs:{\"path\":_vm.mdiCogOutline,\"size\":_vm.listView ? 24 : 48}}):(_vm.listView && _vm.app.preview && !_vm.app.app_api)?_c('svg',{attrs:{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"0 0 32 32\"}},[_c('image',{staticClass:\"app-icon\",attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"32\",\"height\":\"32\",\"preserveAspectRatio\":\"xMinYMin meet\",\"xlink:href\":_vm.app.preview}})]):_vm._e(),_vm._v(\" \"),(!_vm.listView && _vm.app.screenshot && _vm.screenshotLoaded)?_c('img',{attrs:{\"src\":_vm.app.screenshot,\"alt\":\"\"}}):_vm._e()],1),_vm._v(\" \"),_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-name\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-name`)}},[_c('router-link',{staticClass:\"app-name--link\",attrs:{\"to\":{\n\t\t\t\tname: 'apps-details',\n\t\t\t\tparams: {\n\t\t\t\t\tcategory: _vm.category,\n\t\t\t\t\tid: _vm.app.id,\n\t\t\t\t},\n\t\t\t},\"aria-label\":_vm.t('settings', 'Show details for {appName} app', { appName: _vm.app.name })}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.app.name)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(!_vm.listView)?_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-summary\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-version`)}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.summary)+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.listView)?_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-version\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-version`)}},[(_vm.app.version)?_c('span',[_vm._v(_vm._s(_vm.app.version))]):(_vm.app.appstoreData.releases[0].version)?_c('span',[_vm._v(_vm._s(_vm.app.appstoreData.releases[0].version))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-level\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-level`)}},[_c('AppLevelBadge',{attrs:{\"level\":_vm.app.level}}),_vm._v(\" \"),(_vm.hasRating && !_vm.listView)?_c('AppScore',{attrs:{\"score\":_vm.app.score}}):_vm._e()],1),_vm._v(\" \"),(!_vm.inline)?_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-actions\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-actions`)}},[(_vm.app.error)?_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.app.error)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isLoading || _vm.isInitializing)?_c('div',{staticClass:\"icon icon-loading-small\"}):_vm._e(),_vm._v(\" \"),(_vm.app.update)?_c('NcButton',{attrs:{\"variant\":\"primary\",\"disabled\":_vm.installing || _vm.isLoading || !_vm.defaultDeployDaemonAccessible || _vm.isManualInstall,\"title\":_vm.updateButtonText},on:{\"click\":function($event){$event.stopPropagation();return _vm.update(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Update to {update}', { update: _vm.app.update }))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('NcButton',{staticClass:\"uninstall\",attrs:{\"variant\":\"tertiary\",\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.remove(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Remove'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('NcButton',{attrs:{\"disabled\":_vm.installing || _vm.isLoading || _vm.isInitializing || _vm.isDeploying},on:{\"click\":function($event){$event.stopPropagation();return _vm.disable(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.disableButtonText)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('NcButton',{attrs:{\"title\":_vm.enableButtonTooltip,\"aria-label\":_vm.enableButtonTooltip,\"variant\":\"primary\",\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.isLoading || !_vm.defaultDeployDaemonAccessible || _vm.isInitializing || _vm.isDeploying},on:{\"click\":function($event){$event.stopPropagation();return _vm.enableButtonAction.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.enableButtonText)+\"\\n\\t\\t\")]):(!_vm.app.active)?_c('NcButton',{attrs:{\"title\":_vm.forceEnableButtonTooltip,\"aria-label\":_vm.forceEnableButtonTooltip,\"variant\":\"secondary\",\"disabled\":_vm.installing || _vm.isLoading || !_vm.defaultDeployDaemonAccessible},on:{\"click\":function($event){$event.stopPropagation();return _vm.forceEnable(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.forceEnableButtonText)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app?.app_api && _vm.showSelectDaemonModal)?_c('DaemonSelectionDialog',{attrs:{\"show\":_vm.showSelectDaemonModal,\"app\":_vm.app},on:{\"update:show\":function($event){_vm.showSelectDaemonModal=$event}}}):_vm._e()],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.vue?vue&type=script&lang=js\"","var render, staticRenderFns\nimport script from \"./SvgFilterMixin.vue?vue&type=script&lang=js\"\nexport * from \"./SvgFilterMixin.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=50fa5285&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=50fa5285&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppItem.vue?vue&type=template&id=50fa5285&scoped=true\"\nimport script from \"./AppItem.vue?vue&type=script&lang=js\"\nexport * from \"./AppItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppItem.vue?vue&type=style&index=0&id=50fa5285&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"50fa5285\",\n null\n \n)\n\nexport default component.exports"],"names":["showApiError","showError","t","useAppsStore","defineStore","state","apps","categories","updateCount","loadState","loading","loadingList","gettingCategoriesPromise","actions","loadCategories","force","this","length","data","axios","get","generateUrl","category","icon","APPSTORE_CATEGORY_ICONS","id","$patch","error","logger","loadApps","getCategoryById","categoryId","find","getAppById","appId","___CSS_LOADER_EXPORT___","push","module","_defineComponent","__name","props","daemon","setup","__props","__sfc","mdiFileChart","NcIconSvgWrapper","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","_setup","_setupProxy","staticClass","attrs","name","_v","_s","display_name","_e","app","gpuSupport","ref","deploy_config","computeDevice","NcAppSidebarTab","scopedSlots","_u","key","fn","proxy","accepts_deploy_id","label","text","type","String","default","minHeading","Number","computed","renderMarkdown","renderer","marked","Renderer","link","href","title","prot","decodeURIComponent","unescape","replace","toLowerCase","indexOf","out","heading","depth","Math","min","image","blockquote","dompurify","sanitize","trim","gfm","highlight","tables","breaks","pedantic","smartLists","smartypants","SAFE_FOR_JQUERY","ALLOWED_TAGS","domProps","mdiTextShort","Markdown","description","components","NcDialog","NcTextField","NcButton","NcNoteCard","NcCheckboxRadioSwitch","mixins","AppManagement","Object","required","show","Boolean","store","appApiStore","useAppApiStore","environmentVariables","releases","deployOptions","environment_variables","value","reduce","acc","envVar","envName","mounts","mdiPlus","mdiCheck","mdiClose","mdiDeleteOutline","addingMount","newMountPoint","hostPath","containerPath","readonly","addingPortBinding","configuredDeployOptions","deployOptionsDocsUrl","watch","newShow","fetchExAppDeployOptions","methods","startAddingMount","$nextTick","$refs","newMountHostPath","focus","addMountPoint","cancelAddMountPoint","removeMount","mountToRemove","filter","mount","then","response","catch","submitDeployOptions","fetchDockerDaemons","dockerDaemons","needsDownload","enable","emit","$emit","on","$event","active","canInstall","isCompatible","enableButtonTooltip","installing","isLoading","defaultDeployDaemonAccessible","isInitializing","isDeploying","stopPropagation","apply","arguments","enableButtonText","_l","displayName","$set","keys","staticStyle","NcDateTime","NcSelect","AppDeployOptionsModal","DaemonSelectionDialog","productName","window","OC","theme","mdiBugOutline","mdiFeatureSearchOutline","mdiStar","mdiTextBoxOutline","mdiTooltipQuestionOutline","mdiToyBrickPlusOutline","groupCheckedAppsData","removeData","showDeployOptionsModal","showSelectDaemonModal","lastModified","appstoreData","map","Date","parse","sort","at","appAuthors","authorName","xmlNode","Array","isArray","author","a","b","split","localeCompare","join","appstoreUrl","externalResources","resources","internal","website","documentation","user","admin","developer","appCategories","flat","rateAppUrl","appGroups","groups","group","$store","getters","getGroups","beforeUnmount","unsubscribe","mounted","subscribe","showSelectionModal","toggleRemoveData","enableButtonAction","app_api","canLimitToGroups","directives","rawName","expression","_i","$$a","$$el","target","$$c","checked","$$v","$$i","concat","slice","setGroupLimit","isLimitedToGroups","addGroupLimitation","removeGroupLimitation","asyncFindGroup","slot","update","version","isManualInstall","canUnInstall","remove","disableButtonText","disable","forceEnableButtonTooltip","forceEnableButtonText","forceEnable","click","missingMinOwnCloudVersion","missingMaxOwnCloudVersion","missingDependencies","dep","index","shipped","resource","bugs","discussion","hasChangelog","values","translations","some","changelog","createChangelogFromRelease","release","getLanguage","en","mdiClockFast","route","useRoute","router","useRouter","legacyStore","useStore","params","isAppApiEnabled","exApp","getAllApps","hasRating","ratingNumOverall","rating","ratingNumRecent","ratingRecent","ratingOverall","showSidebar","appIcon","categoryIcon","path","mdiCogOutline","AppstoreCategoryIcons","mdiCog","watchEffect","async","preview","fetch","blob","rawSvg","replaceAll","useAppIcon","licenseText","license","licence","toString","toUpperCase","activeTab","screenshotLoaded","hasScreenshot","screenshot","loadScreenshot","Image","onload","src","onMounted","hideAppDetails","NcAppSidebar","AppDaemonBadge","AppLevelBadge","AppScore","AppDeployDaemonTab","AppDescriptionTab","AppDetailsTab","AppReleasesTab","class","undefined","level","generateOcsUrl","ocs","meta","statuscode","dispatchEvent","Event","getLoading","status","action","updateButtonText","progress","deploy","init","base","getDefaultDaemon","getDaemonAccessible","query","dispatch","search","limit","offset","types","includes","groupArray","pop","currentGroups","splice","forceEnableApp","rebuildNavigation","enableApp","disableApp","uninstallApp","install","updateApp","max","appstoreEnabled","developerDocsUrl","categoriesLoading","isSubscribed","onBeforeMount","NcAppNavigation","NcAppNavigationItem","NcAppNavigationSpacer","NcCounterBubble","NcLoadingIcon","APPS_SECTION_ENUM","discover","installed","enabled","disabled","updates","bundles","supported","featured","Node","constructor","_defineProperty","_head","WeakMap","_tail","_size","Queue","_classPrivateFieldInitSpec","clear","enqueue","_this$size","node","_classPrivateFieldGet","next","_classPrivateFieldSet","dequeue","_this$size3","current","peek","size","Symbol","iterator","drain","pLimit","concurrency","validateConcurrency","queue","activeCount","resumeNext","run","function_","resolve","arguments_","result","generator","Promise","internalResolve","bind","defineProperties","pendingCount","clearQueue","set","newConcurrency","queueMicrotask","iterable","promises","from","all","isInteger","POSITIVE_INFINITY","TypeError","AppItem","counter","hasPendingUpdate","showUpdateAll","useListView","exApps","natSortDiff","Util","naturalSortCompare","sortStringA","sortStringB","appstore","getAppBundles","bundle","bundleApps","bundleIds","searchApps","_app","useAppStoreView","useBundleView","allBundlesEnabled","bundleToggleText","beforeDestroy","setSearch","resetSearch","toggleBundle","disableBundle","enableBundle","Notification","updateAll","n","parseApiResponse","element","appElement","date","expiryDate","Error","filterElements","now","PostType","defineAsyncComponent","CarouselType","ShowcaseType","hasError","elements","shuffleArray","array","i","j","floor","random","info","shuffledElements","order","Infinity","getComponent","defineComponent","render","h","mdiEyeOffOutline","NcEmptyContent","entry","_b","tag","currentCategory","viewLabel","pageHeading","pageTitle","instance","getCurrentInstance","shouldRefetchCategories","fetchAllApps","updateAppsStatus","onBeforeUnmount","clearInterval","getStatusUpdater","NcAppContent","AppList","AppStoreDiscoverSection","statusUpdater","daemonAccessible","defaultDaemon","getUpdateCount","getAppStatus","getInitializingOrDeployingApps","appsApiFailure","message","isHTML","setLoading","Vue","setError","forEach","_id","confirmPassword","post","removable","update_required","showInfo","onClick","location","reload","close","setTimeout","api","fetchAppStatus","initializingOrDeployingApps","debug","hasOwn","daemons","default_daemon_config","setInterval","score","mdiStarHalfFull","mdiStarOutline","appScore","toFixed","fullStars","emptyStars","hasHalfStar","emits","fillColor","$attrs","NcListItem","isDefault","itemTitle","closeModal","selectDaemonAndInstall","exAppsCount","appApiAdminPage","DaemonSelectionEntry","FormatListBullet","appName","DaemonSelectionList","freeze","mdiStarCircleOutline","mdiAccountOutline","mdiArchiveOutline","mdiStarShootingOutline","mdiDownload","ai","mdiCreationOutline","auth","mdiKeyOutline","customization","dashboard","mdiViewColumnOutline","files","mdiFolder","games","mdiControllerClassicOutline","integration","mdiOpenInApp","monitoring","mdiMonitorEye","multimedia","mdiMultimedia","office","mdiFileDocumentEdit","organization","mdiOfficeBuildingOutline","mdiMagnify","security","mdiSecurity","social","mdiAccountMultipleOutline","tools","mdiTools","workflow","mdiClipboardFlowOutline","isSupported","isFeatured","badgeIcon","badgeText","badgeTitle","filterId","filterUrl","substring","SvgFilterMixin","listView","headers","inline","isSelected","scrolled","dataItemTag","withSidebar","$route","shouldDisplayDefaultIcon","watchers","prefix","content","getDataItemHeaders","columnName","summary"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/settings-vue-settings-apps-users-management.js b/dist/settings-vue-settings-apps-users-management.js index 89380b20de0ca..dea32f2b307b9 100644 --- a/dist/settings-vue-settings-apps-users-management.js +++ b/dist/settings-vue-settings-apps-users-management.js @@ -1,2 +1,2 @@ -(()=>{var e,o,i,n={2404:(e,t,o)=>{var i=o(60270);e.exports=function(e,t){return i(e,t)}},6028:(e,t,o)=>{"use strict";o.d(t,{A:()=>s});var i=o(19051),n=o(12555);function r(e){return e.replace(/\/$/,"")}const s={requireAdmin:()=>(0,n.C5)(),get:(e,t)=>i.Ay.get(r(e),t),post:(e,t)=>i.Ay.post(r(e),t),patch:(e,t)=>i.Ay.patch(r(e),t),put:(e,t)=>i.Ay.put(r(e),t),delete:(e,t)=>i.Ay.delete(r(e),{params:t})}},14744:(e,o,i)=>{"use strict";i.d(o,{P:()=>j});var n=i(85168),r=i(95353),s=i(36620),a=i(19051),d=i(81222),p=i(63814),c=i(85471),u=i(6028);const l={apps:[],bundles:(0,d.C)("settings","appstoreBundles",[]),categories:[],updateCount:(0,d.C)("settings","appstoreUpdateCount",0),loading:{},gettingCategoriesPromise:null,appApiEnabled:(0,d.C)("settings","appApiEnabled",!1)},f={APPS_API_FAILURE(e,o){(0,n.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+o.error.response.data.data.message,{isHTML:!0}),s.A.error("An error occurred during the request. Unable to proceed.",{state:e,error:o})},initCategories(e,{categories:t,updateCount:o}){e.categories=t,e.updateCount=o},updateCategories(e,t){e.gettingCategoriesPromise=t},setUpdateCount(e,t){e.updateCount=t},addCategory(e,t){e.categories.push(t)},appendCategories(e,t){e.categories=t},setAllApps(e,t){e.apps=t},setError(e,{appId:t,error:o}){Array.isArray(t)||(t=[t]),t.forEach(t=>{e.apps.find(e=>e.id===t).error=o})},clearError(e,{appId:t}){e.apps.find(e=>e.id===t).error=null},enableApp(e,{appId:t,groups:o}){const i=e.apps.find(e=>e.id===t);i.active=!0,i.groups=o,"app_api"===i.id&&(e.appApiEnabled=!0)},setInstallState(e,{appId:t,canInstall:o}){const i=e.apps.find(e=>e.id===t);i&&(i.canInstall=!0===o)},disableApp(e,t){const o=e.apps.find(e=>e.id===t);o.active=!1,o.groups=[],o.removable&&(o.canUnInstall=!0),"app_api"===o.id&&(e.appApiEnabled=!1)},uninstallApp(e,t){e.apps.find(e=>e.id===t).active=!1,e.apps.find(e=>e.id===t).groups=[],e.apps.find(e=>e.id===t).needsDownload=!0,e.apps.find(e=>e.id===t).installed=!1,e.apps.find(e=>e.id===t).canUnInstall=!1,e.apps.find(e=>e.id===t).canInstall=!0,"app_api"===t&&(e.appApiEnabled=!1)},updateApp(e,t){const o=e.apps.find(e=>e.id===t),i=o.update;o.update=null,o.version=i,e.updateCount--},resetApps(e){e.apps=[]},reset(e){e.apps=[],e.categories=[],e.updateCount=0},startLoading(e,t){Array.isArray(t)?t.forEach(t=>{c.Ay.set(e.loading,t,!0)}):c.Ay.set(e.loading,t,!0)},stopLoading(e,t){Array.isArray(t)?t.forEach(t=>{c.Ay.set(e.loading,t,!1)}):c.Ay.set(e.loading,t,!1)}},h={enableApp(e,{appId:o,groups:i}){let r;return r=Array.isArray(o)?o:[o],u.A.requireAdmin().then(()=>(e.commit("startLoading",r),e.commit("startLoading","install"),u.A.post((0,p.Jv)("settings/apps/enable"),{appIds:r,groups:i}).then(s=>(e.commit("stopLoading",r),e.commit("stopLoading","install"),r.forEach(t=>{e.commit("enableApp",{appId:t,groups:i})}),a.Ay.get((0,p.Jv)("apps/files/")).then(()=>{s.data.update_required&&((0,n.cf)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:()=>window.location.reload(),close:!1}),setTimeout(function(){location.reload()},5e3))}).catch(()=>{Array.isArray(o)||((0,n.Qg)(t("settings","Error: This app cannot be enabled because it makes the server unstable")),e.commit("setError",{appId:r,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")}),e.dispatch("disableApp",{appId:o}))}))).catch(t=>{e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("setError",{appId:r,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:o,error:t})}))).catch(t=>e.commit("API_FAILURE",{appId:o,error:t}))},forceEnableApp(e,{appId:t}){let o;return o=Array.isArray(t)?t:[t],u.A.requireAdmin().then(()=>(e.commit("startLoading",o),e.commit("startLoading","install"),u.A.post((0,p.Jv)("settings/apps/force"),{appId:t}).then(()=>{e.commit("setInstallState",{appId:t,canInstall:!0})}).catch(i=>{e.commit("stopLoading",o),e.commit("stopLoading","install"),e.commit("setError",{appId:o,error:i.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:t,error:i})}).finally(()=>{e.commit("stopLoading",o),e.commit("stopLoading","install")}))).catch(o=>e.commit("API_FAILURE",{appId:t,error:o}))},disableApp(e,{appId:t}){let o;return o=Array.isArray(t)?t:[t],u.A.requireAdmin().then(()=>(e.commit("startLoading",o),u.A.post((0,p.Jv)("settings/apps/disable"),{appIds:o}).then(()=>(e.commit("stopLoading",o),o.forEach(t=>{e.commit("disableApp",t)}),!0)).catch(i=>{e.commit("stopLoading",o),e.commit("APPS_API_FAILURE",{appId:t,error:i})}))).catch(o=>e.commit("API_FAILURE",{appId:t,error:o}))},uninstallApp:(e,{appId:t})=>u.A.requireAdmin().then(()=>(e.commit("startLoading",t),u.A.get((0,p.Jv)(`settings/apps/uninstall/${t}`)).then(()=>(e.commit("stopLoading",t),e.commit("uninstallApp",t),!0)).catch(o=>{e.commit("stopLoading",t),e.commit("APPS_API_FAILURE",{appId:t,error:o})}))).catch(o=>e.commit("API_FAILURE",{appId:t,error:o})),updateApp:(e,{appId:t})=>u.A.requireAdmin().then(()=>(e.commit("startLoading",t),e.commit("startLoading","install"),u.A.get((0,p.Jv)(`settings/apps/update/${t}`)).then(()=>(e.commit("stopLoading","install"),e.commit("stopLoading",t),e.commit("updateApp",t),!0)).catch(o=>{e.commit("stopLoading",t),e.commit("stopLoading","install"),e.commit("APPS_API_FAILURE",{appId:t,error:o})}))).catch(o=>e.commit("API_FAILURE",{appId:t,error:o})),getAllApps:e=>(e.commit("startLoading","list"),u.A.get((0,p.Jv)("settings/apps/list")).then(t=>(e.commit("setAllApps",t.data.apps),e.commit("stopLoading","list"),!0)).catch(t=>e.commit("API_FAILURE",t))),async getCategories(e,{shouldRefetchCategories:t=!1}={}){if(t||!e.state.gettingCategoriesPromise){e.commit("startLoading","categories");try{const t=u.A.get((0,p.Jv)("settings/apps/categories"));e.commit("updateCategories",t);const o=await t;return o.data.length>0?(e.commit("appendCategories",o.data),e.commit("stopLoading","categories"),!0):(e.commit("stopLoading","categories"),!1)}catch(t){e.commit("API_FAILURE",t)}}return e.state.gettingCategoriesPromise}},m={state:l,mutations:f,getters:{isAppApiEnabled:e=>e.appApiEnabled,loading:e=>function(t){return e.loading[t]},getCategories:e=>e.categories,getAllApps:e=>e.apps,getAppBundles:e=>e.bundles,getUpdateCount:e=>e.updateCount,getCategoryById:e=>t=>e.categories.find(e=>e.id===t)},actions:h},v={state:{},mutations:{},getters:{},actions:{setAppConfig:(e,{app:t,key:o,value:i})=>u.A.requireAdmin().then(()=>u.A.post((0,p.KT)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:t,key:o}),{value:i}).catch(e=>{throw e})).catch(n=>e.commit("API_FAILURE",{app:t,key:o,value:i,error:n}))}},g={serverData:(0,d.C)("settings","usersSettings",{})},b={setServerData(e,t){e.serverData=t}},y={state:g,mutations:b,getters:{getServerData:e=>e.serverData},actions:{}};var _=i(80474),w=i(87485),A=i(35810),O=i(15916),E=i(53334);const C=Intl.Collator([(0,E.Z0)(),(0,E.lO)()],{numeric:!0,usage:"sort"}),I=(0,d.C)("settings","usersSettings",{}),L=(0,_.c0)("settings").persist(!0).build(),T={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},P={users:[],groups:[...I.getSubAdminGroups??[],...I.systemGroups??[]],orderBy:I.sortGroups??O.q.UserCount,minPasswordLength:0,usersOffset:0,usersLimit:25,disabledUsersOffset:0,disabledUsersLimit:25,userCount:I.userCount??0,showConfig:{showStoragePath:"true"===L.getItem("account_settings__showStoragePath"),showUserBackend:"true"===L.getItem("account_settings__showUserBackend"),showFirstLogin:"true"===L.getItem("account_settings__showFirstLogin"),showLastLogin:"true"===L.getItem("account_settings__showLastLogin"),showNewUserForm:"true"===L.getItem("account_settings__showNewUserForm"),showLanguages:"true"===L.getItem("account_settings__showLanguages")}},U={appendUsers(e,t){const o=e.users.map(({id:e})=>e),i=Object.values(t).filter(({id:e})=>!o.includes(e)),n=e.users.concat(i);e.usersOffset+=e.usersLimit,e.users=n},updateDisabledUsers(e){e.disabledUsersOffset+=e.disabledUsersLimit},setPasswordPolicyMinLength(e,t){e.minPasswordLength=""!==t?t:0},addGroup(e,t){try{if(void 0!==e.groups.find(e=>e.id===t.id))return;const o={...T,...t};e.groups.unshift(o)}catch(e){s.A.error("Cannt create group",{error:e})}},renameGroup(e,{gid:t,displayName:o}){const i=e.groups.findIndex(e=>e.id===t);if(i>=0){const t=e.groups[i];t.name=o,e.groups.splice(i,1,t)}},removeGroup(e,t){const o=e.groups.findIndex(e=>e.id===t);o>=0&&e.groups.splice(o,1)},addUserGroup(e,{userid:t,gid:o}){const i=e.groups.find(e=>e.id===o),n=e.users.find(e=>e.id===t);i&&n.enabled&&e.userCount>0&&i.usercount++,n.groups.push(o)},removeUserGroup(e,{userid:t,gid:o}){const i=e.groups.find(e=>e.id===o),n=e.users.find(e=>e.id===t);i&&n.enabled&&e.userCount>0&&i.usercount--;const r=n.groups;r.splice(r.indexOf(o),1)},addUserSubAdmin(e,{userid:t,gid:o}){e.users.find(e=>e.id===t).subadmin.push(o)},removeUserSubAdmin(e,{userid:t,gid:o}){const i=e.users.find(e=>e.id===t).subadmin;i.splice(i.indexOf(o),1)},deleteUser(e,t){const o=e.users.findIndex(e=>e.id===t);this.commit("updateUserCounts",{user:e.users[o],actionType:"remove"}),e.users.splice(o,1)},addUserData(e,t){const o=t.data.ocs.data;e.users.unshift(o),this.commit("updateUserCounts",{user:o,actionType:"create"})},enableDisableUser(e,{userid:t,enabled:o}){const i=e.users.find(e=>e.id===t);i.enabled=o,this.commit("updateUserCounts",{user:i,actionType:o?"enable":"disable"})},updateUserCounts(e,{user:t,actionType:o}){if(0===e.userCount)return;const i=e.groups.find(e=>"__nc_internal_recent"===e.id),n=e.groups.find(e=>"disabled"===e.id);switch(o){case"enable":case"disable":n.usercount+=t.enabled?-1:1,i.usercount+=t.enabled?1:-1,e.userCount+=t.enabled?1:-1,t.groups.forEach(o=>{const i=e.groups.find(e=>e.id===o);i&&(i.disabled+=t.enabled?-1:1)});break;case"create":i.usercount++,e.userCount++,t.groups.forEach(t=>{const o=e.groups.find(e=>e.id===t);o&&o.usercount++});break;case"remove":t.enabled?(i.usercount--,e.userCount--,t.groups.forEach(t=>{const o=e.groups.find(e=>e.id===t);o?o.usercount--:s.A.warn("User group "+t+" does not exist during user removal")})):(n.usercount--,t.groups.forEach(t=>{const o=e.groups.find(e=>e.id===t);o&&o.disabled--}));break;default:s.A.error(`Unknown action type in updateUserCounts: '${o}'`)}},setUserData(e,{userid:t,key:o,value:i}){if("quota"===o){const n=(0,A.lT)(i,!0);e.users.find(e=>e.id===t)[o][o]=null!==n?n:i}else e.users.find(e=>e.id===t)[o]=i},resetUsers(e){e.users=[],e.usersOffset=0,e.disabledUsersOffset=0},resetGroups(e){e.groups=[...I.getSubAdminGroups??[],...I.systemGroups??[]]},setShowConfig(e,{key:t,value:o}){L.setItem(`account_settings__${t}`,JSON.stringify(o)),e.showConfig[t]=o},setGroupSorting(e,o){const i=e.orderBy;e.orderBy=o,a.Ay.post((0,p.Jv)("/settings/users/preferences/group.sortBy"),{value:String(o)}).catch(o=>{e.orderBy=i,(0,n.Qg)(t("settings","Could not set group sorting")),s.A.error(o)})}},S={getUsers:e=>e.users,getGroups:e=>e.groups,getSubAdminGroups:()=>I.subAdminGroups??[],getSortedGroups(e){const t=[...e.groups];return e.orderBy===O.q.UserCount?t.sort((e,t)=>{const o=e.usercount-e.disabled,i=t.usercount-t.disabled;return oC.compare(e.name,t.name))},getGroupSorting:e=>e.orderBy,getPasswordPolicyMinLength:e=>e.minPasswordLength,getUsersOffset:e=>e.usersOffset,getUsersLimit:e=>e.usersLimit,getDisabledUsersOffset:e=>e.disabledUsersOffset,getDisabledUsersLimit:e=>e.disabledUsersLimit,getUserCount:e=>e.userCount,getShowConfig:e=>e.showConfig},$=a.Ay.CancelToken;let k=null;const x={state:P,mutations:U,getters:S,actions:{searchUsers:(e,{offset:t,limit:o,search:i})=>(i="string"==typeof i?i:"",u.A.get((0,p.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:t,limit:o,search:i})).catch(t=>{a.Ay.isCancel(t)||e.commit("API_FAILURE",t)})),getUser:(e,t)=>u.A.get((0,p.KT)(`cloud/users/${t}`)).catch(t=>{a.Ay.isCancel(t)||e.commit("API_FAILURE",t)}),getUsers:(e,{offset:t,limit:o,search:i,group:n})=>(k&&k.cancel("Operation canceled by another search request."),k=$.source(),i=(i="string"==typeof i?i:"").replace(/in:[^\s]+/g,"").trim(),""!==(n="string"==typeof n?n:"")?u.A.get((0,p.KT)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(n),offset:t,limit:o,search:i}),{cancelToken:k.token}).then(t=>{const o=Object.keys(t.data.ocs.data.users).length;return o>0&&e.commit("appendUsers",t.data.ocs.data.users),o}).catch(t=>{a.Ay.isCancel(t)||e.commit("API_FAILURE",t)}):u.A.get((0,p.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:t,limit:o,search:i}),{cancelToken:k.token}).then(t=>{const o=Object.keys(t.data.ocs.data.users).length;return o>0&&e.commit("appendUsers",t.data.ocs.data.users),o}).catch(t=>{a.Ay.isCancel(t)||e.commit("API_FAILURE",t)})),async getRecentUsers(e,{offset:t,limit:o,search:i}){const n=(0,p.KT)("cloud/users/recent?offset={offset}&limit={limit}&search={search}",{offset:t,limit:o,search:i});try{const t=await u.A.get(n),o=Object.keys(t.data.ocs.data.users).length;return o>0&&e.commit("appendUsers",t.data.ocs.data.users),o}catch(t){e.commit("API_FAILURE",t)}},async getDisabledUsers(e,{offset:t,limit:o,search:i}){const n=(0,p.KT)("cloud/users/disabled?offset={offset}&limit={limit}&search={search}",{offset:t,limit:o,search:i});try{const t=await u.A.get(n),o=Object.keys(t.data.ocs.data.users).length;return o>0&&(e.commit("appendUsers",t.data.ocs.data.users),e.commit("updateDisabledUsers",t.data.ocs.data.users)),o}catch(t){e.commit("API_FAILURE",t)}},getGroups(e,{offset:t,limit:o,search:i}){i="string"==typeof i?i:"";const n=-1===o?"":`&limit=${o}`;return u.A.get((0,p.KT)("cloud/groups?offset={offset}&search={search}",{offset:t,search:i})+n).then(t=>Object.keys(t.data.ocs.data.groups).length>0&&(t.data.ocs.data.groups.forEach(function(t){e.commit("addGroup",{id:t,name:t})}),!0)).catch(t=>e.commit("API_FAILURE",t))},getUsersFromList:(e,{offset:t,limit:o,search:i})=>(i="string"==typeof i?i:"",u.A.get((0,p.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:t,limit:o,search:i})).then(t=>Object.keys(t.data.ocs.data.users).length>0&&(e.commit("appendUsers",t.data.ocs.data.users),!0)).catch(t=>e.commit("API_FAILURE",t))),getUsersFromGroup:(e,{groupid:t,offset:o,limit:i})=>u.A.get((0,p.KT)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(t),offset:o,limit:i})).then(t=>e.commit("getUsersFromList",t.data.ocs.data.users)).catch(t=>e.commit("API_FAILURE",t)),getPasswordPolicyMinLength:e=>!(!(0,w.F)().password_policy||!(0,w.F)().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",(0,w.F)().password_policy.minLength),(0,w.F)().password_policy.minLength),addGroup:(e,t)=>u.A.requireAdmin().then(()=>u.A.post((0,p.KT)("cloud/groups"),{groupid:t}).then(()=>(e.commit("addGroup",{id:t,name:t}),{gid:t,displayName:t})).catch(e=>{throw e})).catch(o=>{throw e.commit("API_FAILURE",{gid:t,error:o}),o}),renameGroup:(e,{groupid:t,displayName:o})=>u.A.requireAdmin().then(()=>u.A.put((0,p.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)}),{key:"displayname",value:o}).then(()=>(e.commit("renameGroup",{gid:t,displayName:o}),{groupid:t,displayName:o})).catch(e=>{throw e})).catch(o=>{throw e.commit("API_FAILURE",{groupid:t,error:o}),o}),removeGroup:(e,t)=>u.A.requireAdmin().then(()=>u.A.delete((0,p.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)})).then(()=>e.commit("removeGroup",t)).catch(e=>{throw e})).catch(o=>e.commit("API_FAILURE",{gid:t,error:o})),addUserGroup:(e,{userid:t,gid:o})=>u.A.requireAdmin().then(()=>u.A.post((0,p.KT)("cloud/users/{userid}/groups",{userid:t}),{groupid:o}).then(()=>e.commit("addUserGroup",{userid:t,gid:o})).catch(e=>{throw e})).catch(o=>e.commit("API_FAILURE",{userid:t,error:o})),removeUserGroup:(e,{userid:t,gid:o})=>u.A.requireAdmin().then(()=>u.A.delete((0,p.KT)("cloud/users/{userid}/groups",{userid:t}),{groupid:o}).then(()=>e.commit("removeUserGroup",{userid:t,gid:o})).catch(e=>{throw e})).catch(o=>{throw e.commit("API_FAILURE",{userid:t,error:o}),o}),addUserSubAdmin:(e,{userid:t,gid:o})=>u.A.requireAdmin().then(()=>u.A.post((0,p.KT)("cloud/users/{userid}/subadmins",{userid:t}),{groupid:o}).then(()=>e.commit("addUserSubAdmin",{userid:t,gid:o})).catch(e=>{throw e})).catch(o=>e.commit("API_FAILURE",{userid:t,error:o})),removeUserSubAdmin:(e,{userid:t,gid:o})=>u.A.requireAdmin().then(()=>u.A.delete((0,p.KT)("cloud/users/{userid}/subadmins",{userid:t}),{groupid:o}).then(()=>e.commit("removeUserSubAdmin",{userid:t,gid:o})).catch(e=>{throw e})).catch(o=>e.commit("API_FAILURE",{userid:t,error:o})),async wipeUserDevices(e,t){try{return await u.A.requireAdmin(),await u.A.post((0,p.KT)("cloud/users/{userid}/wipe",{userid:t}))}catch(o){return e.commit("API_FAILURE",{userid:t,error:o}),Promise.reject(new Error("Failed to wipe user devices"))}},deleteUser:(e,t)=>u.A.requireAdmin().then(()=>u.A.delete((0,p.KT)("cloud/users/{userid}",{userid:t})).then(()=>e.commit("deleteUser",t)).catch(e=>{throw e})).catch(o=>e.commit("API_FAILURE",{userid:t,error:o})),addUser:({commit:e,dispatch:t},{userid:o,password:i,displayName:n,email:r,groups:s,subadmin:a,quota:d,language:c,manager:l})=>u.A.requireAdmin().then(()=>u.A.post((0,p.KT)("cloud/users"),{userid:o,password:i,displayName:n,email:r,groups:s,subadmin:a,quota:d,language:c,manager:l}).then(e=>t("addUserData",o||e.data.ocs.data.id)).catch(e=>{throw e})).catch(t=>{throw e("API_FAILURE",{userid:o,error:t}),t}),addUserData:(e,t)=>u.A.requireAdmin().then(()=>u.A.get((0,p.KT)("cloud/users/{userid}",{userid:t})).then(t=>e.commit("addUserData",t)).catch(e=>{throw e})).catch(o=>e.commit("API_FAILURE",{userid:t,error:o})),enableDisableUser(e,{userid:t,enabled:o=!0}){const i=o?"enable":"disable";return u.A.requireAdmin().then(()=>u.A.put((0,p.KT)("cloud/users/{userid}/{userStatus}",{userid:t,userStatus:i})).then(()=>e.commit("enableDisableUser",{userid:t,enabled:o})).catch(e=>{throw e})).catch(o=>e.commit("API_FAILURE",{userid:t,error:o}))},async setUserData(e,{userid:t,key:o,value:i}){if(!["email","language","quota","displayname","password","manager"].includes(o))throw new Error("Invalid request data");if(""===i&&!["email","displayname","manager"].includes(o))throw new Error("Value cannot be empty for this field");try{return await u.A.requireAdmin(),await u.A.put((0,p.KT)("cloud/users/{userid}",{userid:t}),{key:o,value:i}),e.commit("setUserData",{userid:t,key:o,value:i})}catch(o){throw e.commit("API_FAILURE",{userid:t,error:o}),o}},sendWelcomeMail:(e,t)=>u.A.requireAdmin().then(()=>u.A.post((0,p.KT)("cloud/users/{userid}/welcome",{userid:t})).then(()=>!0).catch(e=>{throw e})).catch(o=>e.commit("API_FAILURE",{userid:t,error:o}))}},N={API_FAILURE(e,o){try{const e=o.error.response.data.ocs.meta.message;(0,n.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+e,{isHTML:!0})}catch{(0,n.Qg)(t("settings","An error occurred during the request. Unable to proceed."))}s.A.error("An error occurred during the request.",{state:e,error:o})}};let D=null;function j(){return null===D&&(D=new r.il({modules:{users:x,apps:m,settings:y,oc:v},strict:!1,mutations:N})),D}},14974:e=>{e.exports=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}},15340:()=>{},15916:(e,t,o)=>{"use strict";var i;o.d(t,{q:()=>i}),function(e){e[e.UserCount=1]="UserCount",e[e.GroupName=2]="GroupName"}(i||(i={}))},20999:(e,t,o)=>{var i=o(69302),n=o(36800);e.exports=function(e){return i(function(t,o){var i=-1,r=o.length,s=r>1?o[r-1]:void 0,a=r>2?o[2]:void 0;for(s=e.length>3&&"function"==typeof s?(r--,s):void 0,a&&n(o[0],o[1],a)&&(s=r<3?void 0:s,r=1),t=Object(t);++i{"use strict";var i=o(21777),n=o(53334),r=o(10810);function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function a(e){var t=function(e){if("object"!=s(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var o=t.call(e,"string");if("object"!=s(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==s(t)?t:t+""}function d(e,t,o){return(t=a(t))in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function p(e,t){for(var o=0;o=0)return 1;return 0}(),l=c&&window.Promise?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},u))}};function f(e){return e&&"[object Function]"==={}.toString.call(e)}function h(e,t){if(1!==e.nodeType)return[];var o=e.ownerDocument.defaultView.getComputedStyle(e,null);return t?o[t]:o}function m(e){return"HTML"===e.nodeName?e:e.parentNode||e.host}function v(e){if(!e)return document.body;switch(e.nodeName){case"HTML":case"BODY":return e.ownerDocument.body;case"#document":return e.body}var t=h(e),o=t.overflow,i=t.overflowX,n=t.overflowY;return/(auto|scroll|overlay)/.test(o+n+i)?e:v(m(e))}function g(e){return e&&e.referenceNode?e.referenceNode:e}var b=c&&!(!window.MSInputMethodContext||!document.documentMode),y=c&&/MSIE 10/.test(navigator.userAgent);function _(e){return 11===e?b:10===e?y:b||y}function w(e){if(!e)return document.documentElement;for(var t=_(10)?document.body:null,o=e.offsetParent||null;o===t&&e.nextElementSibling;)o=(e=e.nextElementSibling).offsetParent;var i=o&&o.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(o.nodeName)&&"static"===h(o,"position")?w(o):o:e?e.ownerDocument.documentElement:document.documentElement}function A(e){return null!==e.parentNode?A(e.parentNode):e}function O(e,t){if(!(e&&e.nodeType&&t&&t.nodeType))return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=o?e:t,n=o?t:e,r=document.createRange();r.setStart(i,0),r.setEnd(n,0);var s,a,d=r.commonAncestorContainer;if(e!==d&&t!==d||i.contains(n))return"BODY"===(a=(s=d).nodeName)||"HTML"!==a&&w(s.firstElementChild)!==s?w(d):d;var p=A(e);return p.host?O(p.host,t):O(e,A(t).host)}function E(e){var t="top"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",o=e.nodeName;if("BODY"===o||"HTML"===o){var i=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||i)[t]}return e[t]}function C(e,t){var o="x"===t?"Left":"Top",i="Left"===o?"Right":"Bottom";return parseFloat(e["border"+o+"Width"])+parseFloat(e["border"+i+"Width"])}function I(e,t,o,i){return Math.max(t["offset"+e],t["scroll"+e],o["client"+e],o["offset"+e],o["scroll"+e],_(10)?parseInt(o["offset"+e])+parseInt(i["margin"+("Height"===e?"Top":"Left")])+parseInt(i["margin"+("Height"===e?"Bottom":"Right")]):0)}function L(e){var t=e.body,o=e.documentElement,i=_(10)&&getComputedStyle(o);return{height:I("Height",t,o,i),width:I("Width",t,o,i)}}var T=function(){function e(e,t){for(var o=0;o2&&void 0!==arguments[2]&&arguments[2],i=_(10),n="HTML"===t.nodeName,r=$(e),s=$(t),a=v(e),d=h(t),p=parseFloat(d.borderTopWidth),c=parseFloat(d.borderLeftWidth);o&&n&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));var u=S({top:r.top-s.top-p,left:r.left-s.left-c,width:r.width,height:r.height});if(u.marginTop=0,u.marginLeft=0,!i&&n){var l=parseFloat(d.marginTop),f=parseFloat(d.marginLeft);u.top-=p-l,u.bottom-=p-l,u.left-=c-f,u.right-=c-f,u.marginTop=l,u.marginLeft=f}return(i&&!o?t.contains(a):t===a&&"BODY"!==a.nodeName)&&(u=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=E(t,"top"),n=E(t,"left"),r=o?-1:1;return e.top+=i*r,e.bottom+=i*r,e.left+=n*r,e.right+=n*r,e}(u,t)),u}function x(e){var t=e.nodeName;if("BODY"===t||"HTML"===t)return!1;if("fixed"===h(e,"position"))return!0;var o=m(e);return!!o&&x(o)}function N(e){if(!e||!e.parentElement||_())return document.documentElement;for(var t=e.parentElement;t&&"none"===h(t,"transform");)t=t.parentElement;return t||document.documentElement}function D(e,t,o,i){var n=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},s=n?N(e):O(e,g(t));if("viewport"===i)r=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=e.ownerDocument.documentElement,i=k(e,o),n=Math.max(o.clientWidth,window.innerWidth||0),r=Math.max(o.clientHeight,window.innerHeight||0),s=t?0:E(o),a=t?0:E(o,"left");return S({top:s-i.top+i.marginTop,left:a-i.left+i.marginLeft,width:n,height:r})}(s,n);else{var a=void 0;"scrollParent"===i?"BODY"===(a=v(m(t))).nodeName&&(a=e.ownerDocument.documentElement):a="window"===i?e.ownerDocument.documentElement:i;var d=k(a,s,n);if("HTML"!==a.nodeName||x(s))r=d;else{var p=L(e.ownerDocument),c=p.height,u=p.width;r.top+=d.top-d.marginTop,r.bottom=c+d.top,r.left+=d.left-d.marginLeft,r.right=u+d.left}}var l="number"==typeof(o=o||0);return r.left+=l?o:o.left||0,r.top+=l?o:o.top||0,r.right-=l?o:o.right||0,r.bottom-=l?o:o.bottom||0,r}function j(e,t,o,i,n){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf("auto"))return e;var s=D(o,i,r,n),a={top:{width:s.width,height:t.top-s.top},right:{width:s.right-t.right,height:s.height},bottom:{width:s.width,height:s.bottom-t.bottom},left:{width:t.left-s.left,height:s.height}},d=Object.keys(a).map(function(e){return U({key:e},a[e],{area:(t=a[e],t.width*t.height)});var t}).sort(function(e,t){return t.area-e.area}),p=d.filter(function(e){var t=e.width,i=e.height;return t>=o.clientWidth&&i>=o.clientHeight}),c=p.length>0?p[0].key:d[0].key,u=e.split("-")[1];return c+(u?"-"+u:"")}function F(e,t,o){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return k(o,i?N(t):O(t,g(o)),i)}function R(e){var t=e.ownerDocument.defaultView.getComputedStyle(e),o=parseFloat(t.marginTop||0)+parseFloat(t.marginBottom||0),i=parseFloat(t.marginLeft||0)+parseFloat(t.marginRight||0);return{width:e.offsetWidth+i,height:e.offsetHeight+o}}function H(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function M(e,t,o){o=o.split("-")[0];var i=R(e),n={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(o),s=r?"top":"left",a=r?"left":"top",d=r?"height":"width",p=r?"width":"height";return n[s]=t[s]+t[d]/2-i[d]/2,n[a]=o===a?t[a]-i[p]:t[H(a)],n}function B(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function q(e,t,o){return(void 0===o?e:e.slice(0,function(e,t,o){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===o});var i=B(e,function(e){return e[t]===o});return e.indexOf(i)}(e,"name",o))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var o=e.function||e.fn;e.enabled&&f(o)&&(t.offsets.popper=S(t.offsets.popper),t.offsets.reference=S(t.offsets.reference),t=o(t,e))}),t}function G(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=F(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=j(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=M(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",e=q(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function z(e,t){return e.some(function(e){var o=e.name;return e.enabled&&o===t})}function W(e){for(var t=[!1,"ms","Webkit","Moz","O"],o=e.charAt(0).toUpperCase()+e.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],o=ne.indexOf(e),i=ne.slice(o+1).concat(ne.slice(0,o));return t?i.reverse():i}var se={shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,o=t.split("-")[0],i=t.split("-")[1];if(i){var n=e.offsets,r=n.reference,s=n.popper,a=-1!==["bottom","top"].indexOf(o),d=a?"left":"top",p=a?"width":"height",c={start:P({},d,r[d]),end:P({},d,r[d]+r[p]-s[p])};e.offsets.popper=U({},s,c[i])}return e}},offset:{order:200,enabled:!0,fn:function(e,t){var o,i=t.offset,n=e.placement,r=e.offsets,s=r.popper,a=r.reference,d=n.split("-")[0];return o=Z(+i)?[+i,0]:function(e,t,o,i){var n=[0,0],r=-1!==["right","left"].indexOf(i),s=e.split(/(\+|\-)/).map(function(e){return e.trim()}),a=s.indexOf(B(s,function(e){return-1!==e.search(/,|\s/)}));s[a]&&-1===s[a].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var d=/\s*,\s*|\s+/,p=-1!==a?[s.slice(0,a).concat([s[a].split(d)[0]]),[s[a].split(d)[1]].concat(s.slice(a+1))]:[s];return(p=p.map(function(e,i){var n=(1===i?!r:r)?"height":"width",s=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,s=!0,e):s?(e[e.length-1]+=t,s=!1,e):e.concat(t)},[]).map(function(e){return function(e,t,o,i){var n=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+n[1],s=n[2];return r?0===s.indexOf("%")?S("%p"===s?o:i)[t]/100*r:"vh"===s||"vw"===s?("vh"===s?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r:r:e}(e,n,t,o)})})).forEach(function(e,t){e.forEach(function(o,i){Z(o)&&(n[t]+=o*("-"===e[i-1]?-1:1))})}),n}(i,s,a,d),"left"===d?(s.top+=o[0],s.left-=o[1]):"right"===d?(s.top+=o[0],s.left+=o[1]):"top"===d?(s.left+=o[0],s.top-=o[1]):"bottom"===d&&(s.left+=o[0],s.top+=o[1]),e.popper=s,e},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var o=t.boundariesElement||w(e.instance.popper);e.instance.reference===o&&(o=w(o));var i=W("transform"),n=e.instance.popper.style,r=n.top,s=n.left,a=n[i];n.top="",n.left="",n[i]="";var d=D(e.instance.popper,e.instance.reference,t.padding,o,e.positionFixed);n.top=r,n.left=s,n[i]=a,t.boundaries=d;var p=t.priority,c=e.offsets.popper,u={primary:function(e){var o=c[e];return c[e]d[e]&&!t.escapeWithReference&&(i=Math.min(c[o],d[e]-("right"===e?c.width:c.height))),P({},o,i)}};return p.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";c=U({},c,u[t](e))}),e.offsets.popper=c,e},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,i=t.reference,n=e.placement.split("-")[0],r=Math.floor,s=-1!==["top","bottom"].indexOf(n),a=s?"right":"bottom",d=s?"left":"top",p=s?"width":"height";return o[a]r(i[a])&&(e.offsets.popper[d]=r(i[a])),e}},arrow:{order:500,enabled:!0,fn:function(e,t){var o;if(!oe(e.instance.modifiers,"arrow","keepTogether"))return e;var i=t.element;if("string"==typeof i){if(!(i=e.instance.popper.querySelector(i)))return e}else if(!e.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),e;var n=e.placement.split("-")[0],r=e.offsets,s=r.popper,a=r.reference,d=-1!==["left","right"].indexOf(n),p=d?"height":"width",c=d?"Top":"Left",u=c.toLowerCase(),l=d?"left":"top",f=d?"bottom":"right",m=R(i)[p];a[f]-ms[f]&&(e.offsets.popper[u]+=a[u]+m-s[f]),e.offsets.popper=S(e.offsets.popper);var v=a[u]+a[p]/2-m/2,g=h(e.instance.popper),b=parseFloat(g["margin"+c]),y=parseFloat(g["border"+c+"Width"]),_=v-e.offsets.popper[u]-b-y;return _=Math.max(Math.min(s[p]-m,_),0),e.arrowElement=i,e.offsets.arrow=(P(o={},u,Math.round(_)),P(o,l,""),o),e},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(e,t){if(z(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=D(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),i=e.placement.split("-")[0],n=H(i),r=e.placement.split("-")[1]||"",s=[];switch(t.behavior){case"flip":s=[i,n];break;case"clockwise":s=re(i);break;case"counterclockwise":s=re(i,!0);break;default:s=t.behavior}return s.forEach(function(a,d){if(i!==a||s.length===d+1)return e;i=e.placement.split("-")[0],n=H(i);var p=e.offsets.popper,c=e.offsets.reference,u=Math.floor,l="left"===i&&u(p.right)>u(c.left)||"right"===i&&u(p.left)u(c.top)||"bottom"===i&&u(p.top)u(o.right),m=u(p.top)u(o.bottom),g="left"===i&&f||"right"===i&&h||"top"===i&&m||"bottom"===i&&v,b=-1!==["top","bottom"].indexOf(i),y=!!t.flipVariations&&(b&&"start"===r&&f||b&&"end"===r&&h||!b&&"start"===r&&m||!b&&"end"===r&&v),_=!!t.flipVariationsByContent&&(b&&"start"===r&&h||b&&"end"===r&&f||!b&&"start"===r&&v||!b&&"end"===r&&m),w=y||_;(l||g||w)&&(e.flipped=!0,(l||g)&&(i=s[d+1]),w&&(r=function(e){return"end"===e?"start":"start"===e?"end":e}(r)),e.placement=i+(r?"-"+r:""),e.offsets.popper=U({},e.offsets.popper,M(e.instance.popper,e.offsets.reference,e.placement)),e=q(e.instance.modifiers,e,"flip"))}),e},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split("-")[0],i=e.offsets,n=i.popper,r=i.reference,s=-1!==["left","right"].indexOf(o),a=-1===["top","left"].indexOf(o);return n[s?"left":"top"]=r[o]-(a?n[s?"width":"height"]:0),e.placement=H(t),e.offsets.popper=S(n),e}},hide:{order:800,enabled:!0,fn:function(e){if(!oe(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,o=B(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.right2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=l(this.update.bind(this)),this.options=U({},e.Defaults,n),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=o&&o.jquery?o[0]:o,this.options.modifiers={},Object.keys(U({},e.Defaults.modifiers,n.modifiers)).forEach(function(t){i.options.modifiers[t]=U({},e.Defaults.modifiers[t]||{},n.modifiers?n.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return U({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&f(e.onLoad)&&e.onLoad(i.reference,i.popper,i.options,e,i.state)}),this.update();var r=this.options.eventsEnabled;r&&this.enableEventListeners(),this.state.eventsEnabled=r}return T(e,[{key:"update",value:function(){return G.call(this)}},{key:"destroy",value:function(){return V.call(this)}},{key:"enableEventListeners",value:function(){return X.call(this)}},{key:"disableEventListeners",value:function(){return Q.call(this)}}]),e}();de.Utils=("undefined"!=typeof window?window:o.g).PopperUtils,de.placements=ie,de.Defaults=ae;const pe=de;var ce,ue=o(2404),le=o.n(ue);function fe(){fe.init||(fe.init=!0,ce=-1!==function(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);if(e.indexOf("Trident/")>0){var o=e.indexOf("rv:");return parseInt(e.substring(o+3,e.indexOf(".",o)),10)}var i=e.indexOf("Edge/");return i>0?parseInt(e.substring(i+5,e.indexOf(".",i)),10):-1}())}function he(e,t,o,i,n,r,s,a,d,p){"boolean"!=typeof s&&(d=a,a=s,s=!1);var c,u="function"==typeof o?o.options:o;if(e&&e.render&&(u.render=e.render,u.staticRenderFns=e.staticRenderFns,u._compiled=!0,n&&(u.functional=!0)),i&&(u._scopeId=i),r?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),t&&t.call(this,d(e)),e&&e._registeredComponents&&e._registeredComponents.add(r)},u._ssrRegister=c):t&&(c=s?function(e){t.call(this,p(e,this.$root.$options.shadowRoot))}:function(e){t.call(this,a(e))}),c)if(u.functional){var l=u.render;u.render=function(e,t){return c.call(t),l(e,t)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,c):[c]}return o}var me={name:"ResizeObserver",props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},mounted:function(){var e=this;fe(),this.$nextTick(function(){e._w=e.$el.offsetWidth,e._h=e.$el.offsetHeight,e.emitOnMount&&e.emitSize()});var t=document.createElement("object");this._resizeObject=t,t.setAttribute("aria-hidden","true"),t.setAttribute("tabindex",-1),t.onload=this.addResizeHandlers,t.type="text/html",ce&&this.$el.appendChild(t),t.data="about:blank",ce||this.$el.appendChild(t)},beforeDestroy:function(){this.removeResizeHandlers()},methods:{compareAndNotify:function(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize:function(){this.$emit("notify",{width:this._w,height:this._h})},addResizeHandlers:function(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers:function(){this._resizeObject&&this._resizeObject.onload&&(!ce&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}},ve=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"resize-observer",attrs:{tabindex:"-1"}})};ve._withStripped=!0;var ge=he({render:ve,staticRenderFns:[]},void 0,me,"data-v-8859cc6c",!1,void 0,!1,void 0,void 0,void 0),be={version:"1.0.1",install:function(e){e.component("resize-observer",ge),e.component("ResizeObserver",ge)}},ye=null;"undefined"!=typeof window?ye=window.Vue:void 0!==o.g&&(ye=o.g.Vue),ye&&ye.use(be);var _e=o(55364),we=o.n(_e),Ae=function(){};function Oe(e){return"string"==typeof e&&(e=e.split(" ")),e}function Ee(e,t){var o,i=Oe(t);o=e.className instanceof Ae?Oe(e.className.baseVal):Oe(e.className),i.forEach(function(e){-1===o.indexOf(e)&&o.push(e)}),e instanceof SVGElement?e.setAttribute("class",o.join(" ")):e.className=o.join(" ")}function Ce(e,t){var o,i=Oe(t);o=e.className instanceof Ae?Oe(e.className.baseVal):Oe(e.className),i.forEach(function(e){var t=o.indexOf(e);-1!==t&&o.splice(t,1)}),e instanceof SVGElement?e.setAttribute("class",o.join(" ")):e.className=o.join(" ")}"undefined"!=typeof window&&(Ae=window.SVGAnimatedString);var Ie=!1;if("undefined"!=typeof window){Ie=!1;try{var Le=Object.defineProperty({},"passive",{get:function(){Ie=!0}});window.addEventListener("test",null,Le)}catch(e){}}function Te(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,i)}return o}function Pe(e){for(var t=1;t
',trigger:"hover focus",offset:0},Se=[],$e=function(){function e(t,o){var i=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),d(this,"_events",[]),d(this,"_setTooltipNodeEvent",function(e,t,o,n){var r=e.relatedreference||e.toElement||e.relatedTarget;return!!i._tooltipNode.contains(r)&&(i._tooltipNode.addEventListener(e.type,function o(r){var s=r.relatedreference||r.toElement||r.relatedTarget;i._tooltipNode.removeEventListener(e.type,o),t.contains(s)||i._scheduleHide(t,n.delay,n,r)}),!0)}),o=Pe(Pe({},Ue),o),t.jquery&&(t=t[0]),this.show=this.show.bind(this),this.hide=this.hide.bind(this),this.reference=t,this.options=o,this._isOpen=!1,this._init()}return t=e,(o=[{key:"show",value:function(){this._show(this.reference,this.options)}},{key:"hide",value:function(){this._hide()}},{key:"dispose",value:function(){this._dispose()}},{key:"toggle",value:function(){return this._isOpen?this.hide():this.show()}},{key:"setClasses",value:function(e){this._classes=e}},{key:"setContent",value:function(e){this.options.title=e,this._tooltipNode&&this._setContent(e,this.options)}},{key:"setOptions",value:function(e){var t=!1,o=e&&e.classes||qe.options.defaultClass;le()(this._classes,o)||(this.setClasses(o),t=!0),e=Fe(e);var i=!1,n=!1;for(var r in this.options.offset===e.offset&&this.options.placement===e.placement||(i=!0),(this.options.template!==e.template||this.options.trigger!==e.trigger||this.options.container!==e.container||t)&&(n=!0),e)this.options[r]=e[r];if(this._tooltipNode)if(n){var s=this._isOpen;this.dispose(),this._init(),s&&this.show()}else i&&this.popperInstance.update()}},{key:"_init",value:function(){var e="string"==typeof this.options.trigger?this.options.trigger.split(" "):[];this._isDisposed=!1,this._enableDocumentTouch=-1===e.indexOf("manual"),e=e.filter(function(e){return-1!==["click","hover","focus"].indexOf(e)}),this._setEventListeners(this.reference,e,this.options),this.$_originalTitle=this.reference.getAttribute("title"),this.reference.removeAttribute("title"),this.reference.setAttribute("data-original-title",this.$_originalTitle)}},{key:"_create",value:function(e,t){var o=this,i=window.document.createElement("div");i.innerHTML=t.trim();var n=i.childNodes[0];return n.id=this.options.ariaId||"tooltip_".concat(Math.random().toString(36).substr(2,10)),n.setAttribute("aria-hidden","true"),this.options.autoHide&&-1!==this.options.trigger.indexOf("hover")&&(n.addEventListener("mouseenter",function(t){return o._scheduleHide(e,o.options.delay,o.options,t)}),n.addEventListener("click",function(t){return o._scheduleHide(e,o.options.delay,o.options,t)})),n}},{key:"_setContent",value:function(e,t){var o=this;this.asyncContent=!1,this._applyContent(e,t).then(function(){o.popperInstance&&o.popperInstance.update()})}},{key:"_applyContent",value:function(e,t){var o=this;return new Promise(function(i,n){var r=t.html,s=o._tooltipNode;if(s){var a=s.querySelector(o.options.innerSelector);if(1===e.nodeType){if(r){for(;a.firstChild;)a.removeChild(a.firstChild);a.appendChild(e)}}else{if("function"==typeof e){var d=e();return void(d&&"function"==typeof d.then?(o.asyncContent=!0,t.loadingClass&&Ee(s,t.loadingClass),t.loadingContent&&o._applyContent(t.loadingContent,t),d.then(function(e){return t.loadingClass&&Ce(s,t.loadingClass),o._applyContent(e,t)}).then(i).catch(n)):o._applyContent(d,t).then(i).catch(n))}r?a.innerHTML=e:a.innerText=e}i()}})}},{key:"_show",value:function(e,t){if(!t||"string"!=typeof t.container||document.querySelector(t.container)){clearTimeout(this._disposeTimer),delete(t=Object.assign({},t)).offset;var o=!0;this._tooltipNode&&(Ee(this._tooltipNode,this._classes),o=!1);var i=this._ensureShown(e,t);return o&&this._tooltipNode&&Ee(this._tooltipNode,this._classes),Ee(e,["v-tooltip-open"]),i}}},{key:"_ensureShown",value:function(e,t){var o=this;if(this._isOpen)return this;if(this._isOpen=!0,Se.push(this),this._tooltipNode)return this._tooltipNode.style.display="",this._tooltipNode.setAttribute("aria-hidden","false"),this.popperInstance.enableEventListeners(),this.popperInstance.update(),this.asyncContent&&this._setContent(t.title,t),this;var i=e.getAttribute("title")||t.title;if(!i)return this;var n=this._create(e,t.template);this._tooltipNode=n,e.setAttribute("aria-describedby",n.id);var r=this._findContainer(t.container,e);this._append(n,r);var s=Pe(Pe({},t.popperOptions),{},{placement:t.placement});return s.modifiers=Pe(Pe({},s.modifiers),{},{arrow:{element:this.options.arrowSelector}}),t.boundariesElement&&(s.modifiers.preventOverflow={boundariesElement:t.boundariesElement}),this.popperInstance=new pe(e,n,s),this._setContent(i,t),requestAnimationFrame(function(){!o._isDisposed&&o.popperInstance?(o.popperInstance.update(),requestAnimationFrame(function(){o._isDisposed?o.dispose():o._isOpen&&n.setAttribute("aria-hidden","false")})):o.dispose()}),this}},{key:"_noLongerOpen",value:function(){var e=Se.indexOf(this);-1!==e&&Se.splice(e,1)}},{key:"_hide",value:function(){var e=this;if(!this._isOpen)return this;this._isOpen=!1,this._noLongerOpen(),this._tooltipNode.style.display="none",this._tooltipNode.setAttribute("aria-hidden","true"),this.popperInstance&&this.popperInstance.disableEventListeners(),clearTimeout(this._disposeTimer);var t=qe.options.disposeTimeout;return null!==t&&(this._disposeTimer=setTimeout(function(){e._tooltipNode&&(e._tooltipNode.removeEventListener("mouseenter",e.hide),e._tooltipNode.removeEventListener("click",e.hide),e._removeTooltipNode())},t)),Ce(this.reference,["v-tooltip-open"]),this}},{key:"_removeTooltipNode",value:function(){if(this._tooltipNode){var e=this._tooltipNode.parentNode;e&&(e.removeChild(this._tooltipNode),this.reference.removeAttribute("aria-describedby")),this._tooltipNode=null}}},{key:"_dispose",value:function(){var e=this;return this._isDisposed=!0,this.reference.removeAttribute("data-original-title"),this.$_originalTitle&&this.reference.setAttribute("title",this.$_originalTitle),this._events.forEach(function(t){var o=t.func,i=t.event;e.reference.removeEventListener(i,o)}),this._events=[],this._tooltipNode?(this._hide(),this._tooltipNode.removeEventListener("mouseenter",this.hide),this._tooltipNode.removeEventListener("click",this.hide),this.popperInstance.destroy(),this.popperInstance.options.removeOnDestroy||this._removeTooltipNode()):this._noLongerOpen(),this}},{key:"_findContainer",value:function(e,t){return"string"==typeof e?e=window.document.querySelector(e):!1===e&&(e=t.parentNode),e}},{key:"_append",value:function(e,t){t.appendChild(e)}},{key:"_setEventListeners",value:function(e,t,o){var i=this,n=[],r=[];t.forEach(function(e){switch(e){case"hover":n.push("mouseenter"),r.push("mouseleave"),i.options.hideOnTargetClick&&r.push("click");break;case"focus":n.push("focus"),r.push("blur"),i.options.hideOnTargetClick&&r.push("click");break;case"click":n.push("click"),r.push("click")}}),n.forEach(function(t){var n=function(t){!0!==i._isOpen&&(t.usedByTooltip=!0,i._scheduleShow(e,o.delay,o,t))};i._events.push({event:t,func:n}),e.addEventListener(t,n)}),r.forEach(function(t){var n=function(t){!0!==t.usedByTooltip&&i._scheduleHide(e,o.delay,o,t)};i._events.push({event:t,func:n}),e.addEventListener(t,n)})}},{key:"_onDocumentTouch",value:function(e){this._enableDocumentTouch&&this._scheduleHide(this.reference,this.options.delay,this.options,e)}},{key:"_scheduleShow",value:function(e,t,o){var i=this,n=t&&t.show||t||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout(function(){return i._show(e,o)},n)}},{key:"_scheduleHide",value:function(e,t,o,i){var n=this,r=t&&t.hide||t||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout(function(){if(!1!==n._isOpen&&n._tooltipNode.ownerDocument.body.contains(n._tooltipNode)){if("mouseleave"===i.type&&n._setTooltipNodeEvent(i,e,t,o))return;n._hide(e,o)}},r)}}])&&p(t.prototype,o),Object.defineProperty(t,"prototype",{writable:!1}),e;var t,o}();function ke(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,i)}return o}function xe(e){for(var t=1;t
',defaultArrowSelector:".tooltip-arrow, .tooltip__arrow",defaultInnerSelector:".tooltip-inner, .tooltip__inner",defaultDelay:0,defaultTrigger:"hover focus",defaultOffset:0,defaultContainer:"body",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultLoadingClass:"tooltip-loading",defaultLoadingContent:"...",autoHide:!0,defaultHideOnTargetClick:!0,disposeTimeout:5e3,popover:{defaultPlacement:"bottom",defaultClass:"vue-popover-theme",defaultBaseClass:"tooltip popover",defaultWrapperClass:"wrapper",defaultInnerClass:"tooltip-inner popover-inner",defaultArrowClass:"tooltip-arrow popover-arrow",defaultOpenClass:"open",defaultDelay:0,defaultTrigger:"click",defaultOffset:0,defaultContainer:"body",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultAutoHide:!0,defaultHandleResize:!0}};function Fe(e){var t={placement:void 0!==e.placement?e.placement:qe.options.defaultPlacement,delay:void 0!==e.delay?e.delay:qe.options.defaultDelay,html:void 0!==e.html?e.html:qe.options.defaultHtml,template:void 0!==e.template?e.template:qe.options.defaultTemplate,arrowSelector:void 0!==e.arrowSelector?e.arrowSelector:qe.options.defaultArrowSelector,innerSelector:void 0!==e.innerSelector?e.innerSelector:qe.options.defaultInnerSelector,trigger:void 0!==e.trigger?e.trigger:qe.options.defaultTrigger,offset:void 0!==e.offset?e.offset:qe.options.defaultOffset,container:void 0!==e.container?e.container:qe.options.defaultContainer,boundariesElement:void 0!==e.boundariesElement?e.boundariesElement:qe.options.defaultBoundariesElement,autoHide:void 0!==e.autoHide?e.autoHide:qe.options.autoHide,hideOnTargetClick:void 0!==e.hideOnTargetClick?e.hideOnTargetClick:qe.options.defaultHideOnTargetClick,loadingClass:void 0!==e.loadingClass?e.loadingClass:qe.options.defaultLoadingClass,loadingContent:void 0!==e.loadingContent?e.loadingContent:qe.options.defaultLoadingContent,popperOptions:xe({},void 0!==e.popperOptions?e.popperOptions:qe.options.defaultPopperOptions)};if(t.offset){var o=s(t.offset),i=t.offset;("number"===o||"string"===o&&-1===i.indexOf(","))&&(i="0, ".concat(i)),t.popperOptions.modifiers||(t.popperOptions.modifiers={}),t.popperOptions.modifiers.offset={offset:i}}return t.trigger&&-1!==t.trigger.indexOf("click")&&(t.hideOnTargetClick=!1),t}function Re(e,t){for(var o=e.placement,i=0;i2&&void 0!==arguments[2]?arguments[2]:{},i=He(t),n=void 0!==t.classes?t.classes:qe.options.defaultClass,r=xe({title:i},Fe(xe(xe({},"object"===s(t)?t:{}),{},{placement:Re(t,o)}))),a=e._tooltip=new $e(e,r);a.setClasses(n),a._vueEl=e;var d=void 0!==t.targetClasses?t.targetClasses:qe.options.defaultTargetClass;return e._tooltipTargetClasses=d,Ee(e,d),a}(e,o,n),void 0!==o.show&&o.show!==e._tooltipOldShow&&(e._tooltipOldShow=o.show,o.show?i.show():i.hide())):Me(e)}var qe={options:je,bind:Be,update:Be,unbind:function(e){Me(e)}};function Ge(e){e.addEventListener("click",We),e.addEventListener("touchstart",Ve,!!Ie&&{passive:!0})}function ze(e){e.removeEventListener("click",We),e.removeEventListener("touchstart",Ve),e.removeEventListener("touchend",Ke),e.removeEventListener("touchcancel",Ye)}function We(e){var t=e.currentTarget;e.closePopover=!t.$_vclosepopover_touch,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}function Ve(e){if(1===e.changedTouches.length){var t=e.currentTarget;t.$_vclosepopover_touch=!0;var o=e.changedTouches[0];t.$_vclosepopover_touchPoint=o,t.addEventListener("touchend",Ke),t.addEventListener("touchcancel",Ye)}}function Ke(e){var t=e.currentTarget;if(t.$_vclosepopover_touch=!1,1===e.changedTouches.length){var o=e.changedTouches[0],i=t.$_vclosepopover_touchPoint;e.closePopover=Math.abs(o.screenY-i.screenY)<20&&Math.abs(o.screenX-i.screenX)<20,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}}function Ye(e){e.currentTarget.$_vclosepopover_touch=!1}var Je={bind:function(e,t){var o=t.value,i=t.modifiers;e.$_closePopoverModifiers=i,(void 0===o||o)&&Ge(e)},update:function(e,t){var o=t.value,i=t.oldValue,n=t.modifiers;e.$_closePopoverModifiers=n,o!==i&&(void 0===o||o?Ge(e):ze(e))},unbind:function(e){ze(e)}};function Xe(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,i)}return o}function Qe(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},o=t.event;t.skipDelay;var i=t.force;!(void 0!==i&&i)&&this.disabled||(this.$_scheduleShow(o),this.$emit("show")),this.$emit("update:open",!0),this.$_beingShowed=!0,requestAnimationFrame(function(){e.$_beingShowed=!1})},hide:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.event;e.skipDelay,this.$_scheduleHide(t),this.$emit("hide"),this.$emit("update:open",!1)},dispose:function(){if(this.$_isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.popperInstance&&(this.popperInstance.destroy(),!this.popperInstance.options.removeOnDestroy)){var e=this.$refs.popover;e.parentNode&&e.parentNode.removeChild(e)}this.$_mounted=!1,this.popperInstance=null,this.isOpen=!1,this.$emit("dispose")},$_init:function(){-1===this.trigger.indexOf("manual")&&this.$_addEventListeners()},$_show:function(){var e=this,t=this.$refs.trigger,o=this.$refs.popover;if(clearTimeout(this.$_disposeTimer),!this.isOpen){if(this.popperInstance&&(this.isOpen=!0,this.popperInstance.enableEventListeners(),this.popperInstance.scheduleUpdate()),!this.$_mounted){var i=this.$_findContainer(this.container,t);if(!i)return void console.warn("No container for popover",this);i.appendChild(o),this.$_mounted=!0,this.isOpen=!1,this.popperInstance&&requestAnimationFrame(function(){e.hidden||(e.isOpen=!0)})}if(!this.popperInstance){var n=Qe(Qe({},this.popperOptions),{},{placement:this.placement});if(n.modifiers=Qe(Qe({},n.modifiers),{},{arrow:Qe(Qe({},n.modifiers&&n.modifiers.arrow),{},{element:this.$refs.arrow})}),this.offset){var r=this.$_getOffset();n.modifiers.offset=Qe(Qe({},n.modifiers&&n.modifiers.offset),{},{offset:r})}this.boundariesElement&&(n.modifiers.preventOverflow=Qe(Qe({},n.modifiers&&n.modifiers.preventOverflow),{},{boundariesElement:this.boundariesElement})),this.popperInstance=new pe(t,o,n),requestAnimationFrame(function(){if(e.hidden)return e.hidden=!1,void e.$_hide();!e.$_isDisposed&&e.popperInstance?(e.popperInstance.scheduleUpdate(),requestAnimationFrame(function(){if(e.hidden)return e.hidden=!1,void e.$_hide();e.$_isDisposed?e.dispose():e.isOpen=!0})):e.dispose()})}var s=this.openGroup;if(s)for(var a,d=0;d1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),e)this.$_show();else{var t=parseInt(this.delay&&this.delay.show||this.delay||0);this.$_scheduleTimer=setTimeout(this.$_show.bind(this),t)}},$_scheduleHide:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),o)this.$_hide();else{var i=parseInt(this.delay&&this.delay.hide||this.delay||0);this.$_scheduleTimer=setTimeout(function(){if(e.isOpen){if(t&&"mouseleave"===t.type&&e.$_setTooltipNodeEvent(t))return;e.$_hide()}},i)}},$_setTooltipNodeEvent:function(e){var t=this,o=this.$refs.trigger,i=this.$refs.popover,n=e.relatedreference||e.toElement||e.relatedTarget;return!!i.contains(n)&&(i.addEventListener(e.type,function n(r){var s=r.relatedreference||r.toElement||r.relatedTarget;i.removeEventListener(e.type,n),o.contains(s)||t.hide({event:r})}),!0)},$_removeEventListeners:function(){var e=this.$refs.trigger;this.$_events.forEach(function(t){var o=t.func,i=t.event;e.removeEventListener(i,o)}),this.$_events=[]},$_updatePopper:function(e){this.popperInstance&&(e(),this.isOpen&&this.popperInstance.scheduleUpdate())},$_restartPopper:function(){if(this.popperInstance){var e=this.isOpen;this.dispose(),this.$_isDisposed=!1,this.$_init(),e&&this.show({skipDelay:!0,force:!0})}},$_handleGlobalClose:function(e){var t=this,o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.$_beingShowed||(this.hide({event:e}),e.closePopover?this.$emit("close-directive"):this.$emit("auto-hide"),o&&(this.$_preventOpen=!0,setTimeout(function(){t.$_preventOpen=!1},300)))},$_handleResize:function(){this.isOpen&&this.popperInstance&&(this.popperInstance.scheduleUpdate(),this.$emit("resize"))}}};function nt(e){for(var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=function(o){var i=tt[o];if(i.$refs.popover){var n=i.$refs.popover.contains(e.target);requestAnimationFrame(function(){(e.closeAllPopover||e.closePopover&&n||i.autoHide&&!n)&&i.$_handleGlobalClose(e,t)})}},i=0;i1&&void 0!==arguments[1]?arguments[1]:{};if(!e.installed){e.installed=!0;var i={};we()(i,je,o),pt.options=i,qe.options=i,t.directive("tooltip",qe),t.directive("close-popover",Je),t.component("VPopover",dt)}},get enabled(){return Ne.enabled},set enabled(e){Ne.enabled=e}},ct=null;"undefined"!=typeof window?ct=window.Vue:void 0!==o.g&&(ct=o.g.Vue),ct&&ct.use(pt);const ut=pt;var lt=o(85471),ft=o(95353),ht=o(58723),mt=o(22378);const vt=(0,lt.pM)({__name:"SettingsApp",setup:e=>({__sfc:!0,NcContent:mt.A})}),gt=(0,o(14486).A)(vt,function(){var e=this,t=e._self._c;return t(e._self._setupProxy.NcContent,{attrs:{"app-name":"settings"}},[t("router-view",{attrs:{name:"navigation"}}),e._v(" "),t("router-view"),e._v(" "),t("router-view",{attrs:{name:"sidebar"}})],1)},[],!1,null,null,null).exports;var bt=o(63814),yt=o(40173);const _t=[{name:"users",path:"/:index(index.php/)?settings/users",components:{default:()=>Promise.all([o.e(4208),o.e(23),o.e(3239)]).then(o.bind(o,77472)),navigation:()=>Promise.all([o.e(4208),o.e(23),o.e(3239)]).then(o.bind(o,5765))},props:!0,children:[{path:":selectedGroup",name:"group"}]},{path:"/:index(index.php/)?settings/apps",name:"apps",redirect:{name:"apps-category",params:{category:(0,o(81222).C)("settings","appstoreEnabled",!0)?"discover":"installed"}},components:{default:()=>Promise.all([o.e(4208),o.e(23),o.e(4529)]).then(o.bind(o,55689)),navigation:()=>Promise.all([o.e(4208),o.e(23),o.e(4529)]).then(o.bind(o,31437)),sidebar:()=>Promise.all([o.e(4208),o.e(23),o.e(4529)]).then(o.bind(o,9128))},children:[{path:":category",name:"apps-category",children:[{path:":id",name:"apps-details"}]}]}];lt.Ay.use(yt.Ay);const wt=new yt.Ay({mode:"history",base:(0,bt.Jv)(""),linkActiveClass:"active",routes:_t});var At=o(14744);o.nc=(0,i.aV)(),lt.Ay.prototype.t=n.t,lt.Ay.prototype.n=n.n,lt.Ay.use(r.R2),lt.Ay.use(ut,{defaultHtml:!1}),lt.Ay.use(ft.Ay);const Ot=(0,At.P)();(0,ht.O)(Ot,wt);const Et=(0,r.Ey)();new lt.Ay({router:wt,store:Ot,pinia:Et,render:e=>e(gt),el:"#content"})},36620:(e,t,o)=>{"use strict";o.d(t,{A:()=>i});const i=(0,o(35947).YK)().setApp("settings").detectUser().build()},42824:(e,t,o)=>{var i=o(87805),n=o(93290),r=o(71961),s=o(23007),a=o(35529),d=o(72428),p=o(56449),c=o(83693),u=o(3656),l=o(1882),f=o(23805),h=o(11331),m=o(37167),v=o(14974),g=o(69884);e.exports=function(e,t,o,b,y,_,w){var A=v(e,o),O=v(t,o),E=w.get(O);if(E)i(e,o,E);else{var C=_?_(A,O,o+"",e,t,w):void 0,I=void 0===C;if(I){var L=p(O),T=!L&&u(O),P=!L&&!T&&m(O);C=O,L||T||P?p(A)?C=A:c(A)?C=s(A):T?(I=!1,C=n(O,!0)):P?(I=!1,C=r(O,!0)):C=[]:h(O)||d(O)?(C=A,d(A)?C=g(A):f(A)&&!l(A)||(C=a(O))):I=!1}I&&(w.set(O,C),y(C,O,b,_,w),w.delete(O)),i(e,o,C)}}},47790:()=>{},51069:()=>{},55364:(e,t,o)=>{var i=o(85250),n=o(20999)(function(e,t,o){i(e,t,o)});e.exports=n},58723:(e,t)=>{function o(e,t){var i={name:e.name,path:e.path,hash:e.hash,query:e.query,params:e.params,fullPath:e.fullPath,meta:e.meta};return t&&(i.from=o(t)),Object.freeze(i)}t.O=function(e,t,i){var n=(i||{}).moduleName||"route";e.registerModule(n,{namespaced:!0,state:o(t.currentRoute),mutations:{ROUTE_CHANGED:function(t,i){e.state[n]=o(i.to,i.from)}}});var r,s=!1,a=e.watch(function(e){return e[n]},function(e){var o=e.fullPath;o!==r&&(null!=r&&(s=!0,t.push(e)),r=o)},{sync:!0}),d=t.afterEach(function(t,o){s?s=!1:(r=t.fullPath,e.commit(n+"/ROUTE_CHANGED",{to:t,from:o}))});return function(){null!=d&&d(),null!=a&&a(),e.unregisterModule(n)}}},63779:()=>{},64688:()=>{},66089:()=>{},69884:(e,t,o)=>{var i=o(21791),n=o(37241);e.exports=function(e){return i(e,n(e))}},73776:()=>{},77199:()=>{},77965:()=>{},78982:()=>{},79368:()=>{},79838:()=>{},83693:(e,t,o)=>{var i=o(64894),n=o(40346);e.exports=function(e){return n(e)&&i(e)}},85250:(e,t,o)=>{var i=o(37217),n=o(87805),r=o(86649),s=o(42824),a=o(23805),d=o(37241),p=o(14974);e.exports=function e(t,o,c,u,l){t!==o&&r(o,function(r,d){if(l||(l=new i),a(r))s(t,o,d,c,e,u,l);else{var f=u?u(p(t,d),r,d+"",t,o,l):void 0;void 0===f&&(f=r),n(t,d,f)}},d)}},87805:(e,t,o)=>{var i=o(43360),n=o(75288);e.exports=function(e,t,o){(void 0!==o&&!n(e[t],o)||void 0===o&&!(t in e))&&i(e,t,o)}}},r={};function s(e){var t=r[e];if(void 0!==t)return t.exports;var o=r[e]={id:e,loaded:!1,exports:{}};return n[e].call(o.exports,o,o.exports,s),o.loaded=!0,o.exports}s.m=n,e=[],s.O=(t,o,i,n)=>{if(!o){var r=1/0;for(c=0;c=n)&&Object.keys(s.O).every(e=>s.O[e](o[d]))?o.splice(d--,1):(a=!1,n0&&e[c-1][2]>n;c--)e[c]=e[c-1];e[c]=[o,i,n]},s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var o in t)s.o(t,o)&&!s.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},s.f={},s.e=e=>Promise.all(Object.keys(s.f).reduce((t,o)=>(s.f[o](e,t),t),[])),s.u=e=>(({3239:"settings-users",4529:"settings-apps-view"}[e]||e)+"-"+e+".js?v="+{23:"de5d76438bc8be7b2828",249:"2e3ea1454441bc8ad0ca",594:"42559babdb08cd8462d3",620:"9afba54f1bb9c5700ce0",2391:"583add71333f4a7828d7",2880:"e173b56d1e35791ae43e",3239:"eb98239f2d18a34d52cd",4325:"6b1845748e1acf68c63b",4529:"ac7d9640434b5a8a4e0f",5862:"89bf17a66ae45dcd0971",7145:"8a0ec35632f81f53660b",7471:"e4533847625f31a740b2",7591:"2406514b7ce03d6c7ca8",8339:"fa979d926218e7f6f617",9381:"1e5cd6afa2665f6a78fe"}[e]),s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o={},i="nextcloud-ui-legacy:",s.l=(e,t,n,r)=>{if(o[e])o[e].push(t);else{var a,d;if(void 0!==n)for(var p=document.getElementsByTagName("script"),c=0;c{a.onerror=a.onload=null,clearTimeout(f);var n=o[e];if(delete o[e],a.parentNode&&a.parentNode.removeChild(a),n&&n.forEach(e=>e(i)),t)return t(i)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=l.bind(null,a.onerror),a.onload=l.bind(null,a.onload),d&&document.head.appendChild(a)}},s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),s.j=2689,(()=>{var e;s.g.importScripts&&(e=s.g.location+"");var t=s.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var o=t.getElementsByTagName("script");if(o.length)for(var i=o.length-1;i>-1&&(!e||!/^http(s?):/.test(e));)e=o[i--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=e})(),(()=>{s.b="undefined"!=typeof document&&document.baseURI||self.location.href;var e={2689:0};s.f.j=(t,o)=>{var i=s.o(e,t)?e[t]:void 0;if(0!==i)if(i)o.push(i[2]);else{var n=new Promise((o,n)=>i=e[t]=[o,n]);o.push(i[2]=n);var r=s.p+s.u(t),a=new Error;s.l(r,o=>{if(s.o(e,t)&&(0!==(i=e[t])&&(e[t]=void 0),i)){var n=o&&("load"===o.type?"missing":o.type),r=o&&o.target&&o.target.src;a.message="Loading chunk "+t+" failed.\n("+n+": "+r+")",a.name="ChunkLoadError",a.type=n,a.request=r,i[1](a)}},"chunk-"+t,t)}},s.O.j=t=>0===e[t];var t=(t,o)=>{var i,n,[r,a,d]=o,p=0;if(r.some(t=>0!==e[t])){for(i in a)s.o(a,i)&&(s.m[i]=a[i]);if(d)var c=d(s)}for(t&&t(o);ps(31960));a=s.O(a)})(); -//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=f38da2dda037543969ac \ No newline at end of file +(()=>{var e,o,i,n={2404:(e,t,o)=>{var i=o(60270);e.exports=function(e,t){return i(e,t)}},6028:(e,t,o)=>{"use strict";o.d(t,{A:()=>s});var i=o(19051),n=o(12555);function r(e){return e.replace(/\/$/,"")}const s={requireAdmin:()=>(0,n.C5)(),get:(e,t)=>i.Ay.get(r(e),t),post:(e,t)=>i.Ay.post(r(e),t),patch:(e,t)=>i.Ay.patch(r(e),t),put:(e,t)=>i.Ay.put(r(e),t),delete:(e,t)=>i.Ay.delete(r(e),{params:t})}},14744:(e,o,i)=>{"use strict";i.d(o,{P:()=>j});var n=i(85168),r=i(95353),s=i(36620),a=i(19051),d=i(81222),p=i(63814),c=i(85471),u=i(6028);const l={apps:[],bundles:(0,d.C)("settings","appstoreBundles",[]),categories:[],updateCount:(0,d.C)("settings","appstoreUpdateCount",0),loading:{},gettingCategoriesPromise:null,appApiEnabled:(0,d.C)("settings","appApiEnabled",!1)},f={APPS_API_FAILURE(e,o){(0,n.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+o.error.response.data.data.message,{isHTML:!0}),s.A.error("An error occurred during the request. Unable to proceed.",{state:e,error:o})},initCategories(e,{categories:t,updateCount:o}){e.categories=t,e.updateCount=o},updateCategories(e,t){e.gettingCategoriesPromise=t},setUpdateCount(e,t){e.updateCount=t},addCategory(e,t){e.categories.push(t)},appendCategories(e,t){e.categories=t},setAllApps(e,t){e.apps=t},setError(e,{appId:t,error:o}){Array.isArray(t)||(t=[t]),t.forEach(t=>{e.apps.find(e=>e.id===t).error=o})},clearError(e,{appId:t}){e.apps.find(e=>e.id===t).error=null},enableApp(e,{appId:t,groups:o}){const i=e.apps.find(e=>e.id===t);i.active=!0,i.groups=o,"app_api"===i.id&&(e.appApiEnabled=!0)},setInstallState(e,{appId:t,canInstall:o}){const i=e.apps.find(e=>e.id===t);i&&(i.canInstall=!0===o)},disableApp(e,t){const o=e.apps.find(e=>e.id===t);o.active=!1,o.groups=[],o.removable&&(o.canUnInstall=!0),"app_api"===o.id&&(e.appApiEnabled=!1)},uninstallApp(e,t){e.apps.find(e=>e.id===t).active=!1,e.apps.find(e=>e.id===t).groups=[],e.apps.find(e=>e.id===t).needsDownload=!0,e.apps.find(e=>e.id===t).installed=!1,e.apps.find(e=>e.id===t).canUnInstall=!1,e.apps.find(e=>e.id===t).canInstall=!0,"app_api"===t&&(e.appApiEnabled=!1)},updateApp(e,t){const o=e.apps.find(e=>e.id===t),i=o.update;o.update=null,o.version=i,e.updateCount--},resetApps(e){e.apps=[]},reset(e){e.apps=[],e.categories=[],e.updateCount=0},startLoading(e,t){Array.isArray(t)?t.forEach(t=>{c.Ay.set(e.loading,t,!0)}):c.Ay.set(e.loading,t,!0)},stopLoading(e,t){Array.isArray(t)?t.forEach(t=>{c.Ay.set(e.loading,t,!1)}):c.Ay.set(e.loading,t,!1)}},h={enableApp(e,{appId:o,groups:i}){let r;return r=Array.isArray(o)?o:[o],u.A.requireAdmin().then(()=>(e.commit("startLoading",r),e.commit("startLoading","install"),u.A.post((0,p.Jv)("settings/apps/enable"),{appIds:r,groups:i}).then(s=>(e.commit("stopLoading",r),e.commit("stopLoading","install"),r.forEach(t=>{e.commit("enableApp",{appId:t,groups:i})}),a.Ay.get((0,p.Jv)("apps/files/")).then(()=>{s.data.update_required&&((0,n.cf)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:()=>window.location.reload(),close:!1}),setTimeout(function(){location.reload()},5e3))}).catch(()=>{Array.isArray(o)||((0,n.Qg)(t("settings","Error: This app cannot be enabled because it makes the server unstable")),e.commit("setError",{appId:r,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")}),e.dispatch("disableApp",{appId:o}))}))).catch(t=>{e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("setError",{appId:r,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:o,error:t})}))).catch(t=>e.commit("API_FAILURE",{appId:o,error:t}))},forceEnableApp(e,{appId:t}){let o;return o=Array.isArray(t)?t:[t],u.A.requireAdmin().then(()=>(e.commit("startLoading",o),e.commit("startLoading","install"),u.A.post((0,p.Jv)("settings/apps/force"),{appId:t}).then(()=>{e.commit("setInstallState",{appId:t,canInstall:!0})}).catch(i=>{e.commit("stopLoading",o),e.commit("stopLoading","install"),e.commit("setError",{appId:o,error:i.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:t,error:i})}).finally(()=>{e.commit("stopLoading",o),e.commit("stopLoading","install")}))).catch(o=>e.commit("API_FAILURE",{appId:t,error:o}))},disableApp(e,{appId:t}){let o;return o=Array.isArray(t)?t:[t],u.A.requireAdmin().then(()=>(e.commit("startLoading",o),u.A.post((0,p.Jv)("settings/apps/disable"),{appIds:o}).then(()=>(e.commit("stopLoading",o),o.forEach(t=>{e.commit("disableApp",t)}),!0)).catch(i=>{e.commit("stopLoading",o),e.commit("APPS_API_FAILURE",{appId:t,error:i})}))).catch(o=>e.commit("API_FAILURE",{appId:t,error:o}))},uninstallApp:(e,{appId:t})=>u.A.requireAdmin().then(()=>(e.commit("startLoading",t),u.A.get((0,p.Jv)(`settings/apps/uninstall/${t}`)).then(()=>(e.commit("stopLoading",t),e.commit("uninstallApp",t),!0)).catch(o=>{e.commit("stopLoading",t),e.commit("APPS_API_FAILURE",{appId:t,error:o})}))).catch(o=>e.commit("API_FAILURE",{appId:t,error:o})),updateApp:(e,{appId:t})=>u.A.requireAdmin().then(()=>(e.commit("startLoading",t),e.commit("startLoading","install"),u.A.get((0,p.Jv)(`settings/apps/update/${t}`)).then(()=>(e.commit("stopLoading","install"),e.commit("stopLoading",t),e.commit("updateApp",t),!0)).catch(o=>{e.commit("stopLoading",t),e.commit("stopLoading","install"),e.commit("APPS_API_FAILURE",{appId:t,error:o})}))).catch(o=>e.commit("API_FAILURE",{appId:t,error:o})),getAllApps:e=>(e.commit("startLoading","list"),u.A.get((0,p.Jv)("settings/apps/list")).then(t=>(e.commit("setAllApps",t.data.apps),e.commit("stopLoading","list"),!0)).catch(t=>e.commit("API_FAILURE",t))),async getCategories(e,{shouldRefetchCategories:t=!1}={}){if(t||!e.state.gettingCategoriesPromise){e.commit("startLoading","categories");try{const t=u.A.get((0,p.Jv)("settings/apps/categories"));e.commit("updateCategories",t);const o=await t;return o.data.length>0?(e.commit("appendCategories",o.data),e.commit("stopLoading","categories"),!0):(e.commit("stopLoading","categories"),!1)}catch(t){e.commit("API_FAILURE",t)}}return e.state.gettingCategoriesPromise}},m={state:l,mutations:f,getters:{isAppApiEnabled:e=>e.appApiEnabled,loading:e=>function(t){return e.loading[t]},getCategories:e=>e.categories,getAllApps:e=>e.apps,getAppBundles:e=>e.bundles,getUpdateCount:e=>e.updateCount,getCategoryById:e=>t=>e.categories.find(e=>e.id===t)},actions:h},v={state:{},mutations:{},getters:{},actions:{setAppConfig:(e,{app:t,key:o,value:i})=>u.A.requireAdmin().then(()=>u.A.post((0,p.KT)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:t,key:o}),{value:i}).catch(e=>{throw e})).catch(n=>e.commit("API_FAILURE",{app:t,key:o,value:i,error:n}))}},g={serverData:(0,d.C)("settings","usersSettings",{})},b={setServerData(e,t){e.serverData=t}},y={state:g,mutations:b,getters:{getServerData:e=>e.serverData},actions:{}};var _=i(80474),w=i(87485),A=i(35810),O=i(15916),E=i(53334);const C=Intl.Collator([(0,E.Z0)(),(0,E.lO)()],{numeric:!0,usage:"sort"}),I=(0,d.C)("settings","usersSettings",{}),L=(0,_.c0)("settings").persist(!0).build(),T={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},P={users:[],groups:[...I.getSubAdminGroups??[],...I.systemGroups??[]],orderBy:I.sortGroups??O.q.UserCount,minPasswordLength:0,usersOffset:0,usersLimit:25,disabledUsersOffset:0,disabledUsersLimit:25,userCount:I.userCount??0,showConfig:{showStoragePath:"true"===L.getItem("account_settings__showStoragePath"),showUserBackend:"true"===L.getItem("account_settings__showUserBackend"),showFirstLogin:"true"===L.getItem("account_settings__showFirstLogin"),showLastLogin:"true"===L.getItem("account_settings__showLastLogin"),showNewUserForm:"true"===L.getItem("account_settings__showNewUserForm"),showLanguages:"true"===L.getItem("account_settings__showLanguages")}},U={appendUsers(e,t){const o=e.users.map(({id:e})=>e),i=Object.values(t).filter(({id:e})=>!o.includes(e)),n=e.users.concat(i);e.usersOffset+=e.usersLimit,e.users=n},updateDisabledUsers(e){e.disabledUsersOffset+=e.disabledUsersLimit},setPasswordPolicyMinLength(e,t){e.minPasswordLength=""!==t?t:0},addGroup(e,t){try{if(void 0!==e.groups.find(e=>e.id===t.id))return;const o={...T,...t};e.groups.unshift(o)}catch(e){s.A.error("Cannt create group",{error:e})}},renameGroup(e,{gid:t,displayName:o}){const i=e.groups.findIndex(e=>e.id===t);if(i>=0){const t=e.groups[i];t.name=o,e.groups.splice(i,1,t)}},removeGroup(e,t){const o=e.groups.findIndex(e=>e.id===t);o>=0&&e.groups.splice(o,1)},addUserGroup(e,{userid:t,gid:o}){const i=e.groups.find(e=>e.id===o),n=e.users.find(e=>e.id===t);i&&n.enabled&&e.userCount>0&&i.usercount++,n.groups.push(o)},removeUserGroup(e,{userid:t,gid:o}){const i=e.groups.find(e=>e.id===o),n=e.users.find(e=>e.id===t);i&&n.enabled&&e.userCount>0&&i.usercount--;const r=n.groups;r.splice(r.indexOf(o),1)},addUserSubAdmin(e,{userid:t,gid:o}){e.users.find(e=>e.id===t).subadmin.push(o)},removeUserSubAdmin(e,{userid:t,gid:o}){const i=e.users.find(e=>e.id===t).subadmin;i.splice(i.indexOf(o),1)},deleteUser(e,t){const o=e.users.findIndex(e=>e.id===t);this.commit("updateUserCounts",{user:e.users[o],actionType:"remove"}),e.users.splice(o,1)},addUserData(e,t){const o=t.data.ocs.data;e.users.unshift(o),this.commit("updateUserCounts",{user:o,actionType:"create"})},enableDisableUser(e,{userid:t,enabled:o}){const i=e.users.find(e=>e.id===t);i.enabled=o,this.commit("updateUserCounts",{user:i,actionType:o?"enable":"disable"})},updateUserCounts(e,{user:t,actionType:o}){if(0===e.userCount)return;const i=e.groups.find(e=>"__nc_internal_recent"===e.id),n=e.groups.find(e=>"disabled"===e.id);switch(o){case"enable":case"disable":n.usercount+=t.enabled?-1:1,i.usercount+=t.enabled?1:-1,e.userCount+=t.enabled?1:-1,t.groups.forEach(o=>{const i=e.groups.find(e=>e.id===o);i&&(i.disabled+=t.enabled?-1:1)});break;case"create":i.usercount++,e.userCount++,t.groups.forEach(t=>{const o=e.groups.find(e=>e.id===t);o&&o.usercount++});break;case"remove":t.enabled?(i.usercount--,e.userCount--,t.groups.forEach(t=>{const o=e.groups.find(e=>e.id===t);o?o.usercount--:s.A.warn("User group "+t+" does not exist during user removal")})):(n.usercount--,t.groups.forEach(t=>{const o=e.groups.find(e=>e.id===t);o&&o.disabled--}));break;default:s.A.error(`Unknown action type in updateUserCounts: '${o}'`)}},setUserData(e,{userid:t,key:o,value:i}){if("quota"===o){const n=(0,A.lT)(i,!0);e.users.find(e=>e.id===t)[o][o]=null!==n?n:i}else e.users.find(e=>e.id===t)[o]=i},resetUsers(e){e.users=[],e.usersOffset=0,e.disabledUsersOffset=0},resetGroups(e){e.groups=[...I.getSubAdminGroups??[],...I.systemGroups??[]]},setShowConfig(e,{key:t,value:o}){L.setItem(`account_settings__${t}`,JSON.stringify(o)),e.showConfig[t]=o},setGroupSorting(e,o){const i=e.orderBy;e.orderBy=o,a.Ay.post((0,p.Jv)("/settings/users/preferences/group.sortBy"),{value:String(o)}).catch(o=>{e.orderBy=i,(0,n.Qg)(t("settings","Could not set group sorting")),s.A.error(o)})}},S={getUsers:e=>e.users,getGroups:e=>e.groups,getSubAdminGroups:()=>I.subAdminGroups??[],getSortedGroups(e){const t=[...e.groups];return e.orderBy===O.q.UserCount?t.sort((e,t)=>{const o=e.usercount-e.disabled,i=t.usercount-t.disabled;return oC.compare(e.name,t.name))},getGroupSorting:e=>e.orderBy,getPasswordPolicyMinLength:e=>e.minPasswordLength,getUsersOffset:e=>e.usersOffset,getUsersLimit:e=>e.usersLimit,getDisabledUsersOffset:e=>e.disabledUsersOffset,getDisabledUsersLimit:e=>e.disabledUsersLimit,getUserCount:e=>e.userCount,getShowConfig:e=>e.showConfig},$=a.Ay.CancelToken;let k=null;const x={state:P,mutations:U,getters:S,actions:{searchUsers:(e,{offset:t,limit:o,search:i})=>(i="string"==typeof i?i:"",u.A.get((0,p.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:t,limit:o,search:i})).catch(t=>{a.Ay.isCancel(t)||e.commit("API_FAILURE",t)})),getUser:(e,t)=>u.A.get((0,p.KT)(`cloud/users/${t}`)).catch(t=>{a.Ay.isCancel(t)||e.commit("API_FAILURE",t)}),getUsers:(e,{offset:t,limit:o,search:i,group:n})=>(k&&k.cancel("Operation canceled by another search request."),k=$.source(),i=(i="string"==typeof i?i:"").replace(/in:[^\s]+/g,"").trim(),""!==(n="string"==typeof n?n:"")?u.A.get((0,p.KT)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(n),offset:t,limit:o,search:i}),{cancelToken:k.token}).then(t=>{const o=Object.keys(t.data.ocs.data.users).length;return o>0&&e.commit("appendUsers",t.data.ocs.data.users),o}).catch(t=>{a.Ay.isCancel(t)||e.commit("API_FAILURE",t)}):u.A.get((0,p.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:t,limit:o,search:i}),{cancelToken:k.token}).then(t=>{const o=Object.keys(t.data.ocs.data.users).length;return o>0&&e.commit("appendUsers",t.data.ocs.data.users),o}).catch(t=>{a.Ay.isCancel(t)||e.commit("API_FAILURE",t)})),async getRecentUsers(e,{offset:t,limit:o,search:i}){const n=(0,p.KT)("cloud/users/recent?offset={offset}&limit={limit}&search={search}",{offset:t,limit:o,search:i});try{const t=await u.A.get(n),o=Object.keys(t.data.ocs.data.users).length;return o>0&&e.commit("appendUsers",t.data.ocs.data.users),o}catch(t){e.commit("API_FAILURE",t)}},async getDisabledUsers(e,{offset:t,limit:o,search:i}){const n=(0,p.KT)("cloud/users/disabled?offset={offset}&limit={limit}&search={search}",{offset:t,limit:o,search:i});try{const t=await u.A.get(n),o=Object.keys(t.data.ocs.data.users).length;return o>0&&(e.commit("appendUsers",t.data.ocs.data.users),e.commit("updateDisabledUsers",t.data.ocs.data.users)),o}catch(t){e.commit("API_FAILURE",t)}},getGroups(e,{offset:t,limit:o,search:i}){i="string"==typeof i?i:"";const n=-1===o?"":`&limit=${o}`;return u.A.get((0,p.KT)("cloud/groups?offset={offset}&search={search}",{offset:t,search:i})+n).then(t=>Object.keys(t.data.ocs.data.groups).length>0&&(t.data.ocs.data.groups.forEach(function(t){e.commit("addGroup",{id:t,name:t})}),!0)).catch(t=>e.commit("API_FAILURE",t))},getUsersFromList:(e,{offset:t,limit:o,search:i})=>(i="string"==typeof i?i:"",u.A.get((0,p.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:t,limit:o,search:i})).then(t=>Object.keys(t.data.ocs.data.users).length>0&&(e.commit("appendUsers",t.data.ocs.data.users),!0)).catch(t=>e.commit("API_FAILURE",t))),getUsersFromGroup:(e,{groupid:t,offset:o,limit:i})=>u.A.get((0,p.KT)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(t),offset:o,limit:i})).then(t=>e.commit("getUsersFromList",t.data.ocs.data.users)).catch(t=>e.commit("API_FAILURE",t)),getPasswordPolicyMinLength:e=>!(!(0,w.F)().password_policy||!(0,w.F)().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",(0,w.F)().password_policy.minLength),(0,w.F)().password_policy.minLength),addGroup:(e,t)=>u.A.requireAdmin().then(()=>u.A.post((0,p.KT)("cloud/groups"),{groupid:t}).then(()=>(e.commit("addGroup",{id:t,name:t}),{gid:t,displayName:t})).catch(e=>{throw e})).catch(o=>{throw e.commit("API_FAILURE",{gid:t,error:o}),o}),renameGroup:(e,{groupid:t,displayName:o})=>u.A.requireAdmin().then(()=>u.A.put((0,p.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)}),{key:"displayname",value:o}).then(()=>(e.commit("renameGroup",{gid:t,displayName:o}),{groupid:t,displayName:o})).catch(e=>{throw e})).catch(o=>{throw e.commit("API_FAILURE",{groupid:t,error:o}),o}),removeGroup:(e,t)=>u.A.requireAdmin().then(()=>u.A.delete((0,p.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)})).then(()=>e.commit("removeGroup",t)).catch(e=>{throw e})).catch(o=>e.commit("API_FAILURE",{gid:t,error:o})),addUserGroup:(e,{userid:t,gid:o})=>u.A.requireAdmin().then(()=>u.A.post((0,p.KT)("cloud/users/{userid}/groups",{userid:t}),{groupid:o}).then(()=>e.commit("addUserGroup",{userid:t,gid:o})).catch(e=>{throw e})).catch(o=>e.commit("API_FAILURE",{userid:t,error:o})),removeUserGroup:(e,{userid:t,gid:o})=>u.A.requireAdmin().then(()=>u.A.delete((0,p.KT)("cloud/users/{userid}/groups",{userid:t}),{groupid:o}).then(()=>e.commit("removeUserGroup",{userid:t,gid:o})).catch(e=>{throw e})).catch(o=>{throw e.commit("API_FAILURE",{userid:t,error:o}),o}),addUserSubAdmin:(e,{userid:t,gid:o})=>u.A.requireAdmin().then(()=>u.A.post((0,p.KT)("cloud/users/{userid}/subadmins",{userid:t}),{groupid:o}).then(()=>e.commit("addUserSubAdmin",{userid:t,gid:o})).catch(e=>{throw e})).catch(o=>e.commit("API_FAILURE",{userid:t,error:o})),removeUserSubAdmin:(e,{userid:t,gid:o})=>u.A.requireAdmin().then(()=>u.A.delete((0,p.KT)("cloud/users/{userid}/subadmins",{userid:t}),{groupid:o}).then(()=>e.commit("removeUserSubAdmin",{userid:t,gid:o})).catch(e=>{throw e})).catch(o=>e.commit("API_FAILURE",{userid:t,error:o})),async wipeUserDevices(e,t){try{return await u.A.requireAdmin(),await u.A.post((0,p.KT)("cloud/users/{userid}/wipe",{userid:t}))}catch(o){return e.commit("API_FAILURE",{userid:t,error:o}),Promise.reject(new Error("Failed to wipe user devices"))}},deleteUser:(e,t)=>u.A.requireAdmin().then(()=>u.A.delete((0,p.KT)("cloud/users/{userid}",{userid:t})).then(()=>e.commit("deleteUser",t)).catch(e=>{throw e})).catch(o=>e.commit("API_FAILURE",{userid:t,error:o})),addUser:({commit:e,dispatch:t},{userid:o,password:i,displayName:n,email:r,groups:s,subadmin:a,quota:d,language:c,manager:l})=>u.A.requireAdmin().then(()=>u.A.post((0,p.KT)("cloud/users"),{userid:o,password:i,displayName:n,email:r,groups:s,subadmin:a,quota:d,language:c,manager:l}).then(e=>t("addUserData",o||e.data.ocs.data.id)).catch(e=>{throw e})).catch(t=>{throw e("API_FAILURE",{userid:o,error:t}),t}),addUserData:(e,t)=>u.A.requireAdmin().then(()=>u.A.get((0,p.KT)("cloud/users/{userid}",{userid:t})).then(t=>e.commit("addUserData",t)).catch(e=>{throw e})).catch(o=>e.commit("API_FAILURE",{userid:t,error:o})),enableDisableUser(e,{userid:t,enabled:o=!0}){const i=o?"enable":"disable";return u.A.requireAdmin().then(()=>u.A.put((0,p.KT)("cloud/users/{userid}/{userStatus}",{userid:t,userStatus:i})).then(()=>e.commit("enableDisableUser",{userid:t,enabled:o})).catch(e=>{throw e})).catch(o=>e.commit("API_FAILURE",{userid:t,error:o}))},async setUserData(e,{userid:t,key:o,value:i}){if(!["email","language","quota","displayname","password","manager"].includes(o))throw new Error("Invalid request data");if(""===i&&!["email","displayname","manager"].includes(o))throw new Error("Value cannot be empty for this field");try{return await u.A.requireAdmin(),await u.A.put((0,p.KT)("cloud/users/{userid}",{userid:t}),{key:o,value:i}),e.commit("setUserData",{userid:t,key:o,value:i})}catch(o){throw e.commit("API_FAILURE",{userid:t,error:o}),o}},sendWelcomeMail:(e,t)=>u.A.requireAdmin().then(()=>u.A.post((0,p.KT)("cloud/users/{userid}/welcome",{userid:t})).then(()=>!0).catch(e=>{throw e})).catch(o=>e.commit("API_FAILURE",{userid:t,error:o}))}},N={API_FAILURE(e,o){try{const e=o.error.response.data.ocs.meta.message;(0,n.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+e,{isHTML:!0})}catch{(0,n.Qg)(t("settings","An error occurred during the request. Unable to proceed."))}s.A.error("An error occurred during the request.",{state:e,error:o})}};let D=null;function j(){return null===D&&(D=new r.il({modules:{users:x,apps:m,settings:y,oc:v},strict:!1,mutations:N})),D}},14974:e=>{e.exports=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}},15340:()=>{},15916:(e,t,o)=>{"use strict";var i;o.d(t,{q:()=>i}),function(e){e[e.UserCount=1]="UserCount",e[e.GroupName=2]="GroupName"}(i||(i={}))},20999:(e,t,o)=>{var i=o(69302),n=o(36800);e.exports=function(e){return i(function(t,o){var i=-1,r=o.length,s=r>1?o[r-1]:void 0,a=r>2?o[2]:void 0;for(s=e.length>3&&"function"==typeof s?(r--,s):void 0,a&&n(o[0],o[1],a)&&(s=r<3?void 0:s,r=1),t=Object(t);++i{"use strict";var i=o(21777),n=o(53334),r=o(10810);function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function a(e){var t=function(e){if("object"!=s(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var o=t.call(e,"string");if("object"!=s(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==s(t)?t:t+""}function d(e,t,o){return(t=a(t))in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function p(e,t){for(var o=0;o=0)return 1;return 0}(),l=c&&window.Promise?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},u))}};function f(e){return e&&"[object Function]"==={}.toString.call(e)}function h(e,t){if(1!==e.nodeType)return[];var o=e.ownerDocument.defaultView.getComputedStyle(e,null);return t?o[t]:o}function m(e){return"HTML"===e.nodeName?e:e.parentNode||e.host}function v(e){if(!e)return document.body;switch(e.nodeName){case"HTML":case"BODY":return e.ownerDocument.body;case"#document":return e.body}var t=h(e),o=t.overflow,i=t.overflowX,n=t.overflowY;return/(auto|scroll|overlay)/.test(o+n+i)?e:v(m(e))}function g(e){return e&&e.referenceNode?e.referenceNode:e}var b=c&&!(!window.MSInputMethodContext||!document.documentMode),y=c&&/MSIE 10/.test(navigator.userAgent);function _(e){return 11===e?b:10===e?y:b||y}function w(e){if(!e)return document.documentElement;for(var t=_(10)?document.body:null,o=e.offsetParent||null;o===t&&e.nextElementSibling;)o=(e=e.nextElementSibling).offsetParent;var i=o&&o.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(o.nodeName)&&"static"===h(o,"position")?w(o):o:e?e.ownerDocument.documentElement:document.documentElement}function A(e){return null!==e.parentNode?A(e.parentNode):e}function O(e,t){if(!(e&&e.nodeType&&t&&t.nodeType))return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=o?e:t,n=o?t:e,r=document.createRange();r.setStart(i,0),r.setEnd(n,0);var s,a,d=r.commonAncestorContainer;if(e!==d&&t!==d||i.contains(n))return"BODY"===(a=(s=d).nodeName)||"HTML"!==a&&w(s.firstElementChild)!==s?w(d):d;var p=A(e);return p.host?O(p.host,t):O(e,A(t).host)}function E(e){var t="top"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",o=e.nodeName;if("BODY"===o||"HTML"===o){var i=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||i)[t]}return e[t]}function C(e,t){var o="x"===t?"Left":"Top",i="Left"===o?"Right":"Bottom";return parseFloat(e["border"+o+"Width"])+parseFloat(e["border"+i+"Width"])}function I(e,t,o,i){return Math.max(t["offset"+e],t["scroll"+e],o["client"+e],o["offset"+e],o["scroll"+e],_(10)?parseInt(o["offset"+e])+parseInt(i["margin"+("Height"===e?"Top":"Left")])+parseInt(i["margin"+("Height"===e?"Bottom":"Right")]):0)}function L(e){var t=e.body,o=e.documentElement,i=_(10)&&getComputedStyle(o);return{height:I("Height",t,o,i),width:I("Width",t,o,i)}}var T=function(){function e(e,t){for(var o=0;o2&&void 0!==arguments[2]&&arguments[2],i=_(10),n="HTML"===t.nodeName,r=$(e),s=$(t),a=v(e),d=h(t),p=parseFloat(d.borderTopWidth),c=parseFloat(d.borderLeftWidth);o&&n&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));var u=S({top:r.top-s.top-p,left:r.left-s.left-c,width:r.width,height:r.height});if(u.marginTop=0,u.marginLeft=0,!i&&n){var l=parseFloat(d.marginTop),f=parseFloat(d.marginLeft);u.top-=p-l,u.bottom-=p-l,u.left-=c-f,u.right-=c-f,u.marginTop=l,u.marginLeft=f}return(i&&!o?t.contains(a):t===a&&"BODY"!==a.nodeName)&&(u=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=E(t,"top"),n=E(t,"left"),r=o?-1:1;return e.top+=i*r,e.bottom+=i*r,e.left+=n*r,e.right+=n*r,e}(u,t)),u}function x(e){var t=e.nodeName;if("BODY"===t||"HTML"===t)return!1;if("fixed"===h(e,"position"))return!0;var o=m(e);return!!o&&x(o)}function N(e){if(!e||!e.parentElement||_())return document.documentElement;for(var t=e.parentElement;t&&"none"===h(t,"transform");)t=t.parentElement;return t||document.documentElement}function D(e,t,o,i){var n=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},s=n?N(e):O(e,g(t));if("viewport"===i)r=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=e.ownerDocument.documentElement,i=k(e,o),n=Math.max(o.clientWidth,window.innerWidth||0),r=Math.max(o.clientHeight,window.innerHeight||0),s=t?0:E(o),a=t?0:E(o,"left");return S({top:s-i.top+i.marginTop,left:a-i.left+i.marginLeft,width:n,height:r})}(s,n);else{var a=void 0;"scrollParent"===i?"BODY"===(a=v(m(t))).nodeName&&(a=e.ownerDocument.documentElement):a="window"===i?e.ownerDocument.documentElement:i;var d=k(a,s,n);if("HTML"!==a.nodeName||x(s))r=d;else{var p=L(e.ownerDocument),c=p.height,u=p.width;r.top+=d.top-d.marginTop,r.bottom=c+d.top,r.left+=d.left-d.marginLeft,r.right=u+d.left}}var l="number"==typeof(o=o||0);return r.left+=l?o:o.left||0,r.top+=l?o:o.top||0,r.right-=l?o:o.right||0,r.bottom-=l?o:o.bottom||0,r}function j(e,t,o,i,n){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf("auto"))return e;var s=D(o,i,r,n),a={top:{width:s.width,height:t.top-s.top},right:{width:s.right-t.right,height:s.height},bottom:{width:s.width,height:s.bottom-t.bottom},left:{width:t.left-s.left,height:s.height}},d=Object.keys(a).map(function(e){return U({key:e},a[e],{area:(t=a[e],t.width*t.height)});var t}).sort(function(e,t){return t.area-e.area}),p=d.filter(function(e){var t=e.width,i=e.height;return t>=o.clientWidth&&i>=o.clientHeight}),c=p.length>0?p[0].key:d[0].key,u=e.split("-")[1];return c+(u?"-"+u:"")}function F(e,t,o){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return k(o,i?N(t):O(t,g(o)),i)}function R(e){var t=e.ownerDocument.defaultView.getComputedStyle(e),o=parseFloat(t.marginTop||0)+parseFloat(t.marginBottom||0),i=parseFloat(t.marginLeft||0)+parseFloat(t.marginRight||0);return{width:e.offsetWidth+i,height:e.offsetHeight+o}}function H(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function M(e,t,o){o=o.split("-")[0];var i=R(e),n={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(o),s=r?"top":"left",a=r?"left":"top",d=r?"height":"width",p=r?"width":"height";return n[s]=t[s]+t[d]/2-i[d]/2,n[a]=o===a?t[a]-i[p]:t[H(a)],n}function B(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function q(e,t,o){return(void 0===o?e:e.slice(0,function(e,t,o){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===o});var i=B(e,function(e){return e[t]===o});return e.indexOf(i)}(e,"name",o))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var o=e.function||e.fn;e.enabled&&f(o)&&(t.offsets.popper=S(t.offsets.popper),t.offsets.reference=S(t.offsets.reference),t=o(t,e))}),t}function G(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=F(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=j(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=M(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",e=q(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function z(e,t){return e.some(function(e){var o=e.name;return e.enabled&&o===t})}function W(e){for(var t=[!1,"ms","Webkit","Moz","O"],o=e.charAt(0).toUpperCase()+e.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],o=ne.indexOf(e),i=ne.slice(o+1).concat(ne.slice(0,o));return t?i.reverse():i}var se={shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,o=t.split("-")[0],i=t.split("-")[1];if(i){var n=e.offsets,r=n.reference,s=n.popper,a=-1!==["bottom","top"].indexOf(o),d=a?"left":"top",p=a?"width":"height",c={start:P({},d,r[d]),end:P({},d,r[d]+r[p]-s[p])};e.offsets.popper=U({},s,c[i])}return e}},offset:{order:200,enabled:!0,fn:function(e,t){var o,i=t.offset,n=e.placement,r=e.offsets,s=r.popper,a=r.reference,d=n.split("-")[0];return o=Z(+i)?[+i,0]:function(e,t,o,i){var n=[0,0],r=-1!==["right","left"].indexOf(i),s=e.split(/(\+|\-)/).map(function(e){return e.trim()}),a=s.indexOf(B(s,function(e){return-1!==e.search(/,|\s/)}));s[a]&&-1===s[a].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var d=/\s*,\s*|\s+/,p=-1!==a?[s.slice(0,a).concat([s[a].split(d)[0]]),[s[a].split(d)[1]].concat(s.slice(a+1))]:[s];return(p=p.map(function(e,i){var n=(1===i?!r:r)?"height":"width",s=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,s=!0,e):s?(e[e.length-1]+=t,s=!1,e):e.concat(t)},[]).map(function(e){return function(e,t,o,i){var n=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+n[1],s=n[2];return r?0===s.indexOf("%")?S("%p"===s?o:i)[t]/100*r:"vh"===s||"vw"===s?("vh"===s?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r:r:e}(e,n,t,o)})})).forEach(function(e,t){e.forEach(function(o,i){Z(o)&&(n[t]+=o*("-"===e[i-1]?-1:1))})}),n}(i,s,a,d),"left"===d?(s.top+=o[0],s.left-=o[1]):"right"===d?(s.top+=o[0],s.left+=o[1]):"top"===d?(s.left+=o[0],s.top-=o[1]):"bottom"===d&&(s.left+=o[0],s.top+=o[1]),e.popper=s,e},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var o=t.boundariesElement||w(e.instance.popper);e.instance.reference===o&&(o=w(o));var i=W("transform"),n=e.instance.popper.style,r=n.top,s=n.left,a=n[i];n.top="",n.left="",n[i]="";var d=D(e.instance.popper,e.instance.reference,t.padding,o,e.positionFixed);n.top=r,n.left=s,n[i]=a,t.boundaries=d;var p=t.priority,c=e.offsets.popper,u={primary:function(e){var o=c[e];return c[e]d[e]&&!t.escapeWithReference&&(i=Math.min(c[o],d[e]-("right"===e?c.width:c.height))),P({},o,i)}};return p.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";c=U({},c,u[t](e))}),e.offsets.popper=c,e},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,i=t.reference,n=e.placement.split("-")[0],r=Math.floor,s=-1!==["top","bottom"].indexOf(n),a=s?"right":"bottom",d=s?"left":"top",p=s?"width":"height";return o[a]r(i[a])&&(e.offsets.popper[d]=r(i[a])),e}},arrow:{order:500,enabled:!0,fn:function(e,t){var o;if(!oe(e.instance.modifiers,"arrow","keepTogether"))return e;var i=t.element;if("string"==typeof i){if(!(i=e.instance.popper.querySelector(i)))return e}else if(!e.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),e;var n=e.placement.split("-")[0],r=e.offsets,s=r.popper,a=r.reference,d=-1!==["left","right"].indexOf(n),p=d?"height":"width",c=d?"Top":"Left",u=c.toLowerCase(),l=d?"left":"top",f=d?"bottom":"right",m=R(i)[p];a[f]-ms[f]&&(e.offsets.popper[u]+=a[u]+m-s[f]),e.offsets.popper=S(e.offsets.popper);var v=a[u]+a[p]/2-m/2,g=h(e.instance.popper),b=parseFloat(g["margin"+c]),y=parseFloat(g["border"+c+"Width"]),_=v-e.offsets.popper[u]-b-y;return _=Math.max(Math.min(s[p]-m,_),0),e.arrowElement=i,e.offsets.arrow=(P(o={},u,Math.round(_)),P(o,l,""),o),e},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(e,t){if(z(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=D(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),i=e.placement.split("-")[0],n=H(i),r=e.placement.split("-")[1]||"",s=[];switch(t.behavior){case"flip":s=[i,n];break;case"clockwise":s=re(i);break;case"counterclockwise":s=re(i,!0);break;default:s=t.behavior}return s.forEach(function(a,d){if(i!==a||s.length===d+1)return e;i=e.placement.split("-")[0],n=H(i);var p=e.offsets.popper,c=e.offsets.reference,u=Math.floor,l="left"===i&&u(p.right)>u(c.left)||"right"===i&&u(p.left)u(c.top)||"bottom"===i&&u(p.top)u(o.right),m=u(p.top)u(o.bottom),g="left"===i&&f||"right"===i&&h||"top"===i&&m||"bottom"===i&&v,b=-1!==["top","bottom"].indexOf(i),y=!!t.flipVariations&&(b&&"start"===r&&f||b&&"end"===r&&h||!b&&"start"===r&&m||!b&&"end"===r&&v),_=!!t.flipVariationsByContent&&(b&&"start"===r&&h||b&&"end"===r&&f||!b&&"start"===r&&v||!b&&"end"===r&&m),w=y||_;(l||g||w)&&(e.flipped=!0,(l||g)&&(i=s[d+1]),w&&(r=function(e){return"end"===e?"start":"start"===e?"end":e}(r)),e.placement=i+(r?"-"+r:""),e.offsets.popper=U({},e.offsets.popper,M(e.instance.popper,e.offsets.reference,e.placement)),e=q(e.instance.modifiers,e,"flip"))}),e},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split("-")[0],i=e.offsets,n=i.popper,r=i.reference,s=-1!==["left","right"].indexOf(o),a=-1===["top","left"].indexOf(o);return n[s?"left":"top"]=r[o]-(a?n[s?"width":"height"]:0),e.placement=H(t),e.offsets.popper=S(n),e}},hide:{order:800,enabled:!0,fn:function(e){if(!oe(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,o=B(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.right2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=l(this.update.bind(this)),this.options=U({},e.Defaults,n),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=o&&o.jquery?o[0]:o,this.options.modifiers={},Object.keys(U({},e.Defaults.modifiers,n.modifiers)).forEach(function(t){i.options.modifiers[t]=U({},e.Defaults.modifiers[t]||{},n.modifiers?n.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return U({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&f(e.onLoad)&&e.onLoad(i.reference,i.popper,i.options,e,i.state)}),this.update();var r=this.options.eventsEnabled;r&&this.enableEventListeners(),this.state.eventsEnabled=r}return T(e,[{key:"update",value:function(){return G.call(this)}},{key:"destroy",value:function(){return V.call(this)}},{key:"enableEventListeners",value:function(){return X.call(this)}},{key:"disableEventListeners",value:function(){return Q.call(this)}}]),e}();de.Utils=("undefined"!=typeof window?window:o.g).PopperUtils,de.placements=ie,de.Defaults=ae;const pe=de;var ce,ue=o(2404),le=o.n(ue);function fe(){fe.init||(fe.init=!0,ce=-1!==function(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);if(e.indexOf("Trident/")>0){var o=e.indexOf("rv:");return parseInt(e.substring(o+3,e.indexOf(".",o)),10)}var i=e.indexOf("Edge/");return i>0?parseInt(e.substring(i+5,e.indexOf(".",i)),10):-1}())}function he(e,t,o,i,n,r,s,a,d,p){"boolean"!=typeof s&&(d=a,a=s,s=!1);var c,u="function"==typeof o?o.options:o;if(e&&e.render&&(u.render=e.render,u.staticRenderFns=e.staticRenderFns,u._compiled=!0,n&&(u.functional=!0)),i&&(u._scopeId=i),r?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),t&&t.call(this,d(e)),e&&e._registeredComponents&&e._registeredComponents.add(r)},u._ssrRegister=c):t&&(c=s?function(e){t.call(this,p(e,this.$root.$options.shadowRoot))}:function(e){t.call(this,a(e))}),c)if(u.functional){var l=u.render;u.render=function(e,t){return c.call(t),l(e,t)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,c):[c]}return o}var me={name:"ResizeObserver",props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},mounted:function(){var e=this;fe(),this.$nextTick(function(){e._w=e.$el.offsetWidth,e._h=e.$el.offsetHeight,e.emitOnMount&&e.emitSize()});var t=document.createElement("object");this._resizeObject=t,t.setAttribute("aria-hidden","true"),t.setAttribute("tabindex",-1),t.onload=this.addResizeHandlers,t.type="text/html",ce&&this.$el.appendChild(t),t.data="about:blank",ce||this.$el.appendChild(t)},beforeDestroy:function(){this.removeResizeHandlers()},methods:{compareAndNotify:function(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize:function(){this.$emit("notify",{width:this._w,height:this._h})},addResizeHandlers:function(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers:function(){this._resizeObject&&this._resizeObject.onload&&(!ce&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}},ve=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"resize-observer",attrs:{tabindex:"-1"}})};ve._withStripped=!0;var ge=he({render:ve,staticRenderFns:[]},void 0,me,"data-v-8859cc6c",!1,void 0,!1,void 0,void 0,void 0),be={version:"1.0.1",install:function(e){e.component("resize-observer",ge),e.component("ResizeObserver",ge)}},ye=null;"undefined"!=typeof window?ye=window.Vue:void 0!==o.g&&(ye=o.g.Vue),ye&&ye.use(be);var _e=o(55364),we=o.n(_e),Ae=function(){};function Oe(e){return"string"==typeof e&&(e=e.split(" ")),e}function Ee(e,t){var o,i=Oe(t);o=e.className instanceof Ae?Oe(e.className.baseVal):Oe(e.className),i.forEach(function(e){-1===o.indexOf(e)&&o.push(e)}),e instanceof SVGElement?e.setAttribute("class",o.join(" ")):e.className=o.join(" ")}function Ce(e,t){var o,i=Oe(t);o=e.className instanceof Ae?Oe(e.className.baseVal):Oe(e.className),i.forEach(function(e){var t=o.indexOf(e);-1!==t&&o.splice(t,1)}),e instanceof SVGElement?e.setAttribute("class",o.join(" ")):e.className=o.join(" ")}"undefined"!=typeof window&&(Ae=window.SVGAnimatedString);var Ie=!1;if("undefined"!=typeof window){Ie=!1;try{var Le=Object.defineProperty({},"passive",{get:function(){Ie=!0}});window.addEventListener("test",null,Le)}catch(e){}}function Te(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,i)}return o}function Pe(e){for(var t=1;t
',trigger:"hover focus",offset:0},Se=[],$e=function(){function e(t,o){var i=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),d(this,"_events",[]),d(this,"_setTooltipNodeEvent",function(e,t,o,n){var r=e.relatedreference||e.toElement||e.relatedTarget;return!!i._tooltipNode.contains(r)&&(i._tooltipNode.addEventListener(e.type,function o(r){var s=r.relatedreference||r.toElement||r.relatedTarget;i._tooltipNode.removeEventListener(e.type,o),t.contains(s)||i._scheduleHide(t,n.delay,n,r)}),!0)}),o=Pe(Pe({},Ue),o),t.jquery&&(t=t[0]),this.show=this.show.bind(this),this.hide=this.hide.bind(this),this.reference=t,this.options=o,this._isOpen=!1,this._init()}return t=e,(o=[{key:"show",value:function(){this._show(this.reference,this.options)}},{key:"hide",value:function(){this._hide()}},{key:"dispose",value:function(){this._dispose()}},{key:"toggle",value:function(){return this._isOpen?this.hide():this.show()}},{key:"setClasses",value:function(e){this._classes=e}},{key:"setContent",value:function(e){this.options.title=e,this._tooltipNode&&this._setContent(e,this.options)}},{key:"setOptions",value:function(e){var t=!1,o=e&&e.classes||qe.options.defaultClass;le()(this._classes,o)||(this.setClasses(o),t=!0),e=Fe(e);var i=!1,n=!1;for(var r in this.options.offset===e.offset&&this.options.placement===e.placement||(i=!0),(this.options.template!==e.template||this.options.trigger!==e.trigger||this.options.container!==e.container||t)&&(n=!0),e)this.options[r]=e[r];if(this._tooltipNode)if(n){var s=this._isOpen;this.dispose(),this._init(),s&&this.show()}else i&&this.popperInstance.update()}},{key:"_init",value:function(){var e="string"==typeof this.options.trigger?this.options.trigger.split(" "):[];this._isDisposed=!1,this._enableDocumentTouch=-1===e.indexOf("manual"),e=e.filter(function(e){return-1!==["click","hover","focus"].indexOf(e)}),this._setEventListeners(this.reference,e,this.options),this.$_originalTitle=this.reference.getAttribute("title"),this.reference.removeAttribute("title"),this.reference.setAttribute("data-original-title",this.$_originalTitle)}},{key:"_create",value:function(e,t){var o=this,i=window.document.createElement("div");i.innerHTML=t.trim();var n=i.childNodes[0];return n.id=this.options.ariaId||"tooltip_".concat(Math.random().toString(36).substr(2,10)),n.setAttribute("aria-hidden","true"),this.options.autoHide&&-1!==this.options.trigger.indexOf("hover")&&(n.addEventListener("mouseenter",function(t){return o._scheduleHide(e,o.options.delay,o.options,t)}),n.addEventListener("click",function(t){return o._scheduleHide(e,o.options.delay,o.options,t)})),n}},{key:"_setContent",value:function(e,t){var o=this;this.asyncContent=!1,this._applyContent(e,t).then(function(){o.popperInstance&&o.popperInstance.update()})}},{key:"_applyContent",value:function(e,t){var o=this;return new Promise(function(i,n){var r=t.html,s=o._tooltipNode;if(s){var a=s.querySelector(o.options.innerSelector);if(1===e.nodeType){if(r){for(;a.firstChild;)a.removeChild(a.firstChild);a.appendChild(e)}}else{if("function"==typeof e){var d=e();return void(d&&"function"==typeof d.then?(o.asyncContent=!0,t.loadingClass&&Ee(s,t.loadingClass),t.loadingContent&&o._applyContent(t.loadingContent,t),d.then(function(e){return t.loadingClass&&Ce(s,t.loadingClass),o._applyContent(e,t)}).then(i).catch(n)):o._applyContent(d,t).then(i).catch(n))}r?a.innerHTML=e:a.innerText=e}i()}})}},{key:"_show",value:function(e,t){if(!t||"string"!=typeof t.container||document.querySelector(t.container)){clearTimeout(this._disposeTimer),delete(t=Object.assign({},t)).offset;var o=!0;this._tooltipNode&&(Ee(this._tooltipNode,this._classes),o=!1);var i=this._ensureShown(e,t);return o&&this._tooltipNode&&Ee(this._tooltipNode,this._classes),Ee(e,["v-tooltip-open"]),i}}},{key:"_ensureShown",value:function(e,t){var o=this;if(this._isOpen)return this;if(this._isOpen=!0,Se.push(this),this._tooltipNode)return this._tooltipNode.style.display="",this._tooltipNode.setAttribute("aria-hidden","false"),this.popperInstance.enableEventListeners(),this.popperInstance.update(),this.asyncContent&&this._setContent(t.title,t),this;var i=e.getAttribute("title")||t.title;if(!i)return this;var n=this._create(e,t.template);this._tooltipNode=n,e.setAttribute("aria-describedby",n.id);var r=this._findContainer(t.container,e);this._append(n,r);var s=Pe(Pe({},t.popperOptions),{},{placement:t.placement});return s.modifiers=Pe(Pe({},s.modifiers),{},{arrow:{element:this.options.arrowSelector}}),t.boundariesElement&&(s.modifiers.preventOverflow={boundariesElement:t.boundariesElement}),this.popperInstance=new pe(e,n,s),this._setContent(i,t),requestAnimationFrame(function(){!o._isDisposed&&o.popperInstance?(o.popperInstance.update(),requestAnimationFrame(function(){o._isDisposed?o.dispose():o._isOpen&&n.setAttribute("aria-hidden","false")})):o.dispose()}),this}},{key:"_noLongerOpen",value:function(){var e=Se.indexOf(this);-1!==e&&Se.splice(e,1)}},{key:"_hide",value:function(){var e=this;if(!this._isOpen)return this;this._isOpen=!1,this._noLongerOpen(),this._tooltipNode.style.display="none",this._tooltipNode.setAttribute("aria-hidden","true"),this.popperInstance&&this.popperInstance.disableEventListeners(),clearTimeout(this._disposeTimer);var t=qe.options.disposeTimeout;return null!==t&&(this._disposeTimer=setTimeout(function(){e._tooltipNode&&(e._tooltipNode.removeEventListener("mouseenter",e.hide),e._tooltipNode.removeEventListener("click",e.hide),e._removeTooltipNode())},t)),Ce(this.reference,["v-tooltip-open"]),this}},{key:"_removeTooltipNode",value:function(){if(this._tooltipNode){var e=this._tooltipNode.parentNode;e&&(e.removeChild(this._tooltipNode),this.reference.removeAttribute("aria-describedby")),this._tooltipNode=null}}},{key:"_dispose",value:function(){var e=this;return this._isDisposed=!0,this.reference.removeAttribute("data-original-title"),this.$_originalTitle&&this.reference.setAttribute("title",this.$_originalTitle),this._events.forEach(function(t){var o=t.func,i=t.event;e.reference.removeEventListener(i,o)}),this._events=[],this._tooltipNode?(this._hide(),this._tooltipNode.removeEventListener("mouseenter",this.hide),this._tooltipNode.removeEventListener("click",this.hide),this.popperInstance.destroy(),this.popperInstance.options.removeOnDestroy||this._removeTooltipNode()):this._noLongerOpen(),this}},{key:"_findContainer",value:function(e,t){return"string"==typeof e?e=window.document.querySelector(e):!1===e&&(e=t.parentNode),e}},{key:"_append",value:function(e,t){t.appendChild(e)}},{key:"_setEventListeners",value:function(e,t,o){var i=this,n=[],r=[];t.forEach(function(e){switch(e){case"hover":n.push("mouseenter"),r.push("mouseleave"),i.options.hideOnTargetClick&&r.push("click");break;case"focus":n.push("focus"),r.push("blur"),i.options.hideOnTargetClick&&r.push("click");break;case"click":n.push("click"),r.push("click")}}),n.forEach(function(t){var n=function(t){!0!==i._isOpen&&(t.usedByTooltip=!0,i._scheduleShow(e,o.delay,o,t))};i._events.push({event:t,func:n}),e.addEventListener(t,n)}),r.forEach(function(t){var n=function(t){!0!==t.usedByTooltip&&i._scheduleHide(e,o.delay,o,t)};i._events.push({event:t,func:n}),e.addEventListener(t,n)})}},{key:"_onDocumentTouch",value:function(e){this._enableDocumentTouch&&this._scheduleHide(this.reference,this.options.delay,this.options,e)}},{key:"_scheduleShow",value:function(e,t,o){var i=this,n=t&&t.show||t||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout(function(){return i._show(e,o)},n)}},{key:"_scheduleHide",value:function(e,t,o,i){var n=this,r=t&&t.hide||t||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout(function(){if(!1!==n._isOpen&&n._tooltipNode.ownerDocument.body.contains(n._tooltipNode)){if("mouseleave"===i.type&&n._setTooltipNodeEvent(i,e,t,o))return;n._hide(e,o)}},r)}}])&&p(t.prototype,o),Object.defineProperty(t,"prototype",{writable:!1}),e;var t,o}();function ke(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,i)}return o}function xe(e){for(var t=1;t
',defaultArrowSelector:".tooltip-arrow, .tooltip__arrow",defaultInnerSelector:".tooltip-inner, .tooltip__inner",defaultDelay:0,defaultTrigger:"hover focus",defaultOffset:0,defaultContainer:"body",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultLoadingClass:"tooltip-loading",defaultLoadingContent:"...",autoHide:!0,defaultHideOnTargetClick:!0,disposeTimeout:5e3,popover:{defaultPlacement:"bottom",defaultClass:"vue-popover-theme",defaultBaseClass:"tooltip popover",defaultWrapperClass:"wrapper",defaultInnerClass:"tooltip-inner popover-inner",defaultArrowClass:"tooltip-arrow popover-arrow",defaultOpenClass:"open",defaultDelay:0,defaultTrigger:"click",defaultOffset:0,defaultContainer:"body",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultAutoHide:!0,defaultHandleResize:!0}};function Fe(e){var t={placement:void 0!==e.placement?e.placement:qe.options.defaultPlacement,delay:void 0!==e.delay?e.delay:qe.options.defaultDelay,html:void 0!==e.html?e.html:qe.options.defaultHtml,template:void 0!==e.template?e.template:qe.options.defaultTemplate,arrowSelector:void 0!==e.arrowSelector?e.arrowSelector:qe.options.defaultArrowSelector,innerSelector:void 0!==e.innerSelector?e.innerSelector:qe.options.defaultInnerSelector,trigger:void 0!==e.trigger?e.trigger:qe.options.defaultTrigger,offset:void 0!==e.offset?e.offset:qe.options.defaultOffset,container:void 0!==e.container?e.container:qe.options.defaultContainer,boundariesElement:void 0!==e.boundariesElement?e.boundariesElement:qe.options.defaultBoundariesElement,autoHide:void 0!==e.autoHide?e.autoHide:qe.options.autoHide,hideOnTargetClick:void 0!==e.hideOnTargetClick?e.hideOnTargetClick:qe.options.defaultHideOnTargetClick,loadingClass:void 0!==e.loadingClass?e.loadingClass:qe.options.defaultLoadingClass,loadingContent:void 0!==e.loadingContent?e.loadingContent:qe.options.defaultLoadingContent,popperOptions:xe({},void 0!==e.popperOptions?e.popperOptions:qe.options.defaultPopperOptions)};if(t.offset){var o=s(t.offset),i=t.offset;("number"===o||"string"===o&&-1===i.indexOf(","))&&(i="0, ".concat(i)),t.popperOptions.modifiers||(t.popperOptions.modifiers={}),t.popperOptions.modifiers.offset={offset:i}}return t.trigger&&-1!==t.trigger.indexOf("click")&&(t.hideOnTargetClick=!1),t}function Re(e,t){for(var o=e.placement,i=0;i2&&void 0!==arguments[2]?arguments[2]:{},i=He(t),n=void 0!==t.classes?t.classes:qe.options.defaultClass,r=xe({title:i},Fe(xe(xe({},"object"===s(t)?t:{}),{},{placement:Re(t,o)}))),a=e._tooltip=new $e(e,r);a.setClasses(n),a._vueEl=e;var d=void 0!==t.targetClasses?t.targetClasses:qe.options.defaultTargetClass;return e._tooltipTargetClasses=d,Ee(e,d),a}(e,o,n),void 0!==o.show&&o.show!==e._tooltipOldShow&&(e._tooltipOldShow=o.show,o.show?i.show():i.hide())):Me(e)}var qe={options:je,bind:Be,update:Be,unbind:function(e){Me(e)}};function Ge(e){e.addEventListener("click",We),e.addEventListener("touchstart",Ve,!!Ie&&{passive:!0})}function ze(e){e.removeEventListener("click",We),e.removeEventListener("touchstart",Ve),e.removeEventListener("touchend",Ke),e.removeEventListener("touchcancel",Ye)}function We(e){var t=e.currentTarget;e.closePopover=!t.$_vclosepopover_touch,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}function Ve(e){if(1===e.changedTouches.length){var t=e.currentTarget;t.$_vclosepopover_touch=!0;var o=e.changedTouches[0];t.$_vclosepopover_touchPoint=o,t.addEventListener("touchend",Ke),t.addEventListener("touchcancel",Ye)}}function Ke(e){var t=e.currentTarget;if(t.$_vclosepopover_touch=!1,1===e.changedTouches.length){var o=e.changedTouches[0],i=t.$_vclosepopover_touchPoint;e.closePopover=Math.abs(o.screenY-i.screenY)<20&&Math.abs(o.screenX-i.screenX)<20,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}}function Ye(e){e.currentTarget.$_vclosepopover_touch=!1}var Je={bind:function(e,t){var o=t.value,i=t.modifiers;e.$_closePopoverModifiers=i,(void 0===o||o)&&Ge(e)},update:function(e,t){var o=t.value,i=t.oldValue,n=t.modifiers;e.$_closePopoverModifiers=n,o!==i&&(void 0===o||o?Ge(e):ze(e))},unbind:function(e){ze(e)}};function Xe(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,i)}return o}function Qe(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},o=t.event;t.skipDelay;var i=t.force;!(void 0!==i&&i)&&this.disabled||(this.$_scheduleShow(o),this.$emit("show")),this.$emit("update:open",!0),this.$_beingShowed=!0,requestAnimationFrame(function(){e.$_beingShowed=!1})},hide:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.event;e.skipDelay,this.$_scheduleHide(t),this.$emit("hide"),this.$emit("update:open",!1)},dispose:function(){if(this.$_isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.popperInstance&&(this.popperInstance.destroy(),!this.popperInstance.options.removeOnDestroy)){var e=this.$refs.popover;e.parentNode&&e.parentNode.removeChild(e)}this.$_mounted=!1,this.popperInstance=null,this.isOpen=!1,this.$emit("dispose")},$_init:function(){-1===this.trigger.indexOf("manual")&&this.$_addEventListeners()},$_show:function(){var e=this,t=this.$refs.trigger,o=this.$refs.popover;if(clearTimeout(this.$_disposeTimer),!this.isOpen){if(this.popperInstance&&(this.isOpen=!0,this.popperInstance.enableEventListeners(),this.popperInstance.scheduleUpdate()),!this.$_mounted){var i=this.$_findContainer(this.container,t);if(!i)return void console.warn("No container for popover",this);i.appendChild(o),this.$_mounted=!0,this.isOpen=!1,this.popperInstance&&requestAnimationFrame(function(){e.hidden||(e.isOpen=!0)})}if(!this.popperInstance){var n=Qe(Qe({},this.popperOptions),{},{placement:this.placement});if(n.modifiers=Qe(Qe({},n.modifiers),{},{arrow:Qe(Qe({},n.modifiers&&n.modifiers.arrow),{},{element:this.$refs.arrow})}),this.offset){var r=this.$_getOffset();n.modifiers.offset=Qe(Qe({},n.modifiers&&n.modifiers.offset),{},{offset:r})}this.boundariesElement&&(n.modifiers.preventOverflow=Qe(Qe({},n.modifiers&&n.modifiers.preventOverflow),{},{boundariesElement:this.boundariesElement})),this.popperInstance=new pe(t,o,n),requestAnimationFrame(function(){if(e.hidden)return e.hidden=!1,void e.$_hide();!e.$_isDisposed&&e.popperInstance?(e.popperInstance.scheduleUpdate(),requestAnimationFrame(function(){if(e.hidden)return e.hidden=!1,void e.$_hide();e.$_isDisposed?e.dispose():e.isOpen=!0})):e.dispose()})}var s=this.openGroup;if(s)for(var a,d=0;d1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),e)this.$_show();else{var t=parseInt(this.delay&&this.delay.show||this.delay||0);this.$_scheduleTimer=setTimeout(this.$_show.bind(this),t)}},$_scheduleHide:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),o)this.$_hide();else{var i=parseInt(this.delay&&this.delay.hide||this.delay||0);this.$_scheduleTimer=setTimeout(function(){if(e.isOpen){if(t&&"mouseleave"===t.type&&e.$_setTooltipNodeEvent(t))return;e.$_hide()}},i)}},$_setTooltipNodeEvent:function(e){var t=this,o=this.$refs.trigger,i=this.$refs.popover,n=e.relatedreference||e.toElement||e.relatedTarget;return!!i.contains(n)&&(i.addEventListener(e.type,function n(r){var s=r.relatedreference||r.toElement||r.relatedTarget;i.removeEventListener(e.type,n),o.contains(s)||t.hide({event:r})}),!0)},$_removeEventListeners:function(){var e=this.$refs.trigger;this.$_events.forEach(function(t){var o=t.func,i=t.event;e.removeEventListener(i,o)}),this.$_events=[]},$_updatePopper:function(e){this.popperInstance&&(e(),this.isOpen&&this.popperInstance.scheduleUpdate())},$_restartPopper:function(){if(this.popperInstance){var e=this.isOpen;this.dispose(),this.$_isDisposed=!1,this.$_init(),e&&this.show({skipDelay:!0,force:!0})}},$_handleGlobalClose:function(e){var t=this,o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.$_beingShowed||(this.hide({event:e}),e.closePopover?this.$emit("close-directive"):this.$emit("auto-hide"),o&&(this.$_preventOpen=!0,setTimeout(function(){t.$_preventOpen=!1},300)))},$_handleResize:function(){this.isOpen&&this.popperInstance&&(this.popperInstance.scheduleUpdate(),this.$emit("resize"))}}};function nt(e){for(var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=function(o){var i=tt[o];if(i.$refs.popover){var n=i.$refs.popover.contains(e.target);requestAnimationFrame(function(){(e.closeAllPopover||e.closePopover&&n||i.autoHide&&!n)&&i.$_handleGlobalClose(e,t)})}},i=0;i1&&void 0!==arguments[1]?arguments[1]:{};if(!e.installed){e.installed=!0;var i={};we()(i,je,o),pt.options=i,qe.options=i,t.directive("tooltip",qe),t.directive("close-popover",Je),t.component("VPopover",dt)}},get enabled(){return Ne.enabled},set enabled(e){Ne.enabled=e}},ct=null;"undefined"!=typeof window?ct=window.Vue:void 0!==o.g&&(ct=o.g.Vue),ct&&ct.use(pt);const ut=pt;var lt=o(85471),ft=o(95353),ht=o(58723),mt=o(22378);const vt=(0,lt.pM)({__name:"SettingsApp",setup:e=>({__sfc:!0,NcContent:mt.A})}),gt=(0,o(14486).A)(vt,function(){var e=this,t=e._self._c;return t(e._self._setupProxy.NcContent,{attrs:{"app-name":"settings"}},[t("router-view",{attrs:{name:"navigation"}}),e._v(" "),t("router-view"),e._v(" "),t("router-view",{attrs:{name:"sidebar"}})],1)},[],!1,null,null,null).exports;var bt=o(63814),yt=o(40173);const _t=[{name:"users",path:"/:index(index.php/)?settings/users",components:{default:()=>Promise.all([o.e(4208),o.e(23),o.e(3239)]).then(o.bind(o,77472)),navigation:()=>Promise.all([o.e(4208),o.e(23),o.e(3239)]).then(o.bind(o,5765))},props:!0,children:[{path:":selectedGroup",name:"group"}]},{path:"/:index(index.php/)?settings/apps",name:"apps",redirect:{name:"apps-category",params:{category:(0,o(81222).C)("settings","appstoreEnabled",!0)?"discover":"installed"}},components:{default:()=>Promise.all([o.e(4208),o.e(23),o.e(4529)]).then(o.bind(o,55689)),navigation:()=>Promise.all([o.e(4208),o.e(23),o.e(4529)]).then(o.bind(o,31437)),sidebar:()=>Promise.all([o.e(4208),o.e(23),o.e(4529)]).then(o.bind(o,9128))},children:[{path:":category",name:"apps-category",children:[{path:":id",name:"apps-details"}]}]}];lt.Ay.use(yt.Ay);const wt=new yt.Ay({mode:"history",base:(0,bt.Jv)(""),linkActiveClass:"active",routes:_t});var At=o(14744);o.nc=(0,i.aV)(),lt.Ay.prototype.t=n.t,lt.Ay.prototype.n=n.n,lt.Ay.use(r.R2),lt.Ay.use(ut,{defaultHtml:!1}),lt.Ay.use(ft.Ay);const Ot=(0,At.P)();(0,ht.O)(Ot,wt);const Et=(0,r.Ey)();new lt.Ay({router:wt,store:Ot,pinia:Et,render:e=>e(gt),el:"#content"})},36620:(e,t,o)=>{"use strict";o.d(t,{A:()=>i});const i=(0,o(35947).YK)().setApp("settings").detectUser().build()},42824:(e,t,o)=>{var i=o(87805),n=o(93290),r=o(71961),s=o(23007),a=o(35529),d=o(72428),p=o(56449),c=o(83693),u=o(3656),l=o(1882),f=o(23805),h=o(11331),m=o(37167),v=o(14974),g=o(69884);e.exports=function(e,t,o,b,y,_,w){var A=v(e,o),O=v(t,o),E=w.get(O);if(E)i(e,o,E);else{var C=_?_(A,O,o+"",e,t,w):void 0,I=void 0===C;if(I){var L=p(O),T=!L&&u(O),P=!L&&!T&&m(O);C=O,L||T||P?p(A)?C=A:c(A)?C=s(A):T?(I=!1,C=n(O,!0)):P?(I=!1,C=r(O,!0)):C=[]:h(O)||d(O)?(C=A,d(A)?C=g(A):f(A)&&!l(A)||(C=a(O))):I=!1}I&&(w.set(O,C),y(C,O,b,_,w),w.delete(O)),i(e,o,C)}}},47790:()=>{},51069:()=>{},55364:(e,t,o)=>{var i=o(85250),n=o(20999)(function(e,t,o){i(e,t,o)});e.exports=n},58723:(e,t)=>{function o(e,t){var i={name:e.name,path:e.path,hash:e.hash,query:e.query,params:e.params,fullPath:e.fullPath,meta:e.meta};return t&&(i.from=o(t)),Object.freeze(i)}t.O=function(e,t,i){var n=(i||{}).moduleName||"route";e.registerModule(n,{namespaced:!0,state:o(t.currentRoute),mutations:{ROUTE_CHANGED:function(t,i){e.state[n]=o(i.to,i.from)}}});var r,s=!1,a=e.watch(function(e){return e[n]},function(e){var o=e.fullPath;o!==r&&(null!=r&&(s=!0,t.push(e)),r=o)},{sync:!0}),d=t.afterEach(function(t,o){s?s=!1:(r=t.fullPath,e.commit(n+"/ROUTE_CHANGED",{to:t,from:o}))});return function(){null!=d&&d(),null!=a&&a(),e.unregisterModule(n)}}},63779:()=>{},64688:()=>{},66089:()=>{},69884:(e,t,o)=>{var i=o(21791),n=o(37241);e.exports=function(e){return i(e,n(e))}},73776:()=>{},77199:()=>{},77965:()=>{},78982:()=>{},79368:()=>{},79838:()=>{},83693:(e,t,o)=>{var i=o(64894),n=o(40346);e.exports=function(e){return n(e)&&i(e)}},85250:(e,t,o)=>{var i=o(37217),n=o(87805),r=o(86649),s=o(42824),a=o(23805),d=o(37241),p=o(14974);e.exports=function e(t,o,c,u,l){t!==o&&r(o,function(r,d){if(l||(l=new i),a(r))s(t,o,d,c,e,u,l);else{var f=u?u(p(t,d),r,d+"",t,o,l):void 0;void 0===f&&(f=r),n(t,d,f)}},d)}},87805:(e,t,o)=>{var i=o(43360),n=o(75288);e.exports=function(e,t,o){(void 0!==o&&!n(e[t],o)||void 0===o&&!(t in e))&&i(e,t,o)}}},r={};function s(e){var t=r[e];if(void 0!==t)return t.exports;var o=r[e]={id:e,loaded:!1,exports:{}};return n[e].call(o.exports,o,o.exports,s),o.loaded=!0,o.exports}s.m=n,e=[],s.O=(t,o,i,n)=>{if(!o){var r=1/0;for(c=0;c=n)&&Object.keys(s.O).every(e=>s.O[e](o[d]))?o.splice(d--,1):(a=!1,n0&&e[c-1][2]>n;c--)e[c]=e[c-1];e[c]=[o,i,n]},s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var o in t)s.o(t,o)&&!s.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},s.f={},s.e=e=>Promise.all(Object.keys(s.f).reduce((t,o)=>(s.f[o](e,t),t),[])),s.u=e=>(({3239:"settings-users",4529:"settings-apps-view"}[e]||e)+"-"+e+".js?v="+{23:"de5d76438bc8be7b2828",249:"2e3ea1454441bc8ad0ca",594:"42559babdb08cd8462d3",620:"9afba54f1bb9c5700ce0",2391:"583add71333f4a7828d7",2880:"e173b56d1e35791ae43e",3239:"eb98239f2d18a34d52cd",4325:"6b1845748e1acf68c63b",4529:"ef8cdc3030bbaec722df",5862:"89bf17a66ae45dcd0971",7145:"8a0ec35632f81f53660b",7471:"e4533847625f31a740b2",7591:"2406514b7ce03d6c7ca8",8339:"fa979d926218e7f6f617",9381:"1e5cd6afa2665f6a78fe"}[e]),s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o={},i="nextcloud-ui-legacy:",s.l=(e,t,n,r)=>{if(o[e])o[e].push(t);else{var a,d;if(void 0!==n)for(var p=document.getElementsByTagName("script"),c=0;c{a.onerror=a.onload=null,clearTimeout(f);var n=o[e];if(delete o[e],a.parentNode&&a.parentNode.removeChild(a),n&&n.forEach(e=>e(i)),t)return t(i)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=l.bind(null,a.onerror),a.onload=l.bind(null,a.onload),d&&document.head.appendChild(a)}},s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),s.j=2689,(()=>{var e;s.g.importScripts&&(e=s.g.location+"");var t=s.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var o=t.getElementsByTagName("script");if(o.length)for(var i=o.length-1;i>-1&&(!e||!/^http(s?):/.test(e));)e=o[i--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=e})(),(()=>{s.b="undefined"!=typeof document&&document.baseURI||self.location.href;var e={2689:0};s.f.j=(t,o)=>{var i=s.o(e,t)?e[t]:void 0;if(0!==i)if(i)o.push(i[2]);else{var n=new Promise((o,n)=>i=e[t]=[o,n]);o.push(i[2]=n);var r=s.p+s.u(t),a=new Error;s.l(r,o=>{if(s.o(e,t)&&(0!==(i=e[t])&&(e[t]=void 0),i)){var n=o&&("load"===o.type?"missing":o.type),r=o&&o.target&&o.target.src;a.message="Loading chunk "+t+" failed.\n("+n+": "+r+")",a.name="ChunkLoadError",a.type=n,a.request=r,i[1](a)}},"chunk-"+t,t)}},s.O.j=t=>0===e[t];var t=(t,o)=>{var i,n,[r,a,d]=o,p=0;if(r.some(t=>0!==e[t])){for(i in a)s.o(a,i)&&(s.m[i]=a[i]);if(d)var c=d(s)}for(t&&t(o);ps(31960));a=s.O(a)})(); +//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=c1b68dfd2fedae9023b1 \ No newline at end of file diff --git a/dist/settings-vue-settings-apps-users-management.js.map b/dist/settings-vue-settings-apps-users-management.js.map index a95bde891515b..f04f9042ac27c 100644 --- a/dist/settings-vue-settings-apps-users-management.js.map +++ b/dist/settings-vue-settings-apps-users-management.js.map @@ -1 +1 @@ -{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=f38da2dda037543969ac","mappings":"UAAIA,ECAAC,EACAC,E,kBCDJ,IAAIC,EAAc,EAAQ,OAkC1BC,EAAOC,QAJP,SAAiBC,EAAOC,GACtB,OAAOJ,EAAYG,EAAOC,EAC5B,C,yECrBA,SAASC,EAASC,GACjB,OAAOA,EAAIC,QAAQ,MAAO,GAC3B,CAEA,SAiCCC,aAAYA,KACJC,EAAAA,EAAAA,MAERC,IAAGA,CAACJ,EAAKK,IACDC,EAAAA,GAAMF,IAAIL,EAASC,GAAMK,GAEjCE,KAAIA,CAACP,EAAKQ,IACFF,EAAAA,GAAMC,KAAKR,EAASC,GAAMQ,GAElCC,MAAKA,CAACT,EAAKQ,IACHF,EAAAA,GAAMG,MAAMV,EAASC,GAAMQ,GAEnCE,IAAGA,CAACV,EAAKQ,IACDF,EAAAA,GAAMI,IAAIX,EAASC,GAAMQ,GAEjCG,OAAMA,CAACX,EAAKQ,IACJF,EAAAA,GAAMK,OAAOZ,EAASC,GAAM,CAAEY,OAAQJ,I,2ICnD/C,MAAMK,EAAQ,CACbC,KAAM,GACNC,SAASC,EAAAA,EAAAA,GAAU,WAAY,kBAAmB,IAClDC,WAAY,GACZC,aAAaF,EAAAA,EAAAA,GAAU,WAAY,sBAAuB,GAC1DG,QAAS,CAAC,EACVC,yBAA0B,KAC1BC,eAAeL,EAAAA,EAAAA,GAAU,WAAY,iBAAiB,IAGjDM,EAAY,CAEjBC,gBAAAA,CAAiBV,EAAOW,IACvBC,EAAAA,EAAAA,IAAUC,EAAE,WAAY,4DAA8D,OAASF,EAAMA,MAAMG,SAASnB,KAAKA,KAAKoB,QAAS,CAAEC,QAAQ,IACjJC,EAAAA,EAAON,MAAM,2DAA4D,CAAEX,QAAOW,SACnF,EAEAO,cAAAA,CAAelB,GAAO,WAAEI,EAAU,YAAEC,IACnCL,EAAMI,WAAaA,EACnBJ,EAAMK,YAAcA,CACrB,EAEAc,gBAAAA,CAAiBnB,EAAOoB,GACvBpB,EAAMO,yBAA2Ba,CAClC,EAEAC,cAAAA,CAAerB,EAAOK,GACrBL,EAAMK,YAAcA,CACrB,EAEAiB,WAAAA,CAAYtB,EAAOuB,GAClBvB,EAAMI,WAAWoB,KAAKD,EACvB,EAEAE,gBAAAA,CAAiBzB,EAAO0B,GAEvB1B,EAAMI,WAAasB,CACpB,EAEAC,UAAAA,CAAW3B,EAAOC,GACjBD,EAAMC,KAAOA,CACd,EAEA2B,QAAAA,CAAS5B,GAAO,MAAE6B,EAAK,MAAElB,IACnBmB,MAAMC,QAAQF,KAClBA,EAAQ,CAACA,IAEVA,EAAMG,QAASC,IACFjC,EAAMC,KAAKiC,KAAMC,GAAQA,EAAIC,KAAOH,GAC5CtB,MAAQA,GAEd,EAEA0B,UAAAA,CAAWrC,GAAO,MAAE6B,IACP7B,EAAMC,KAAKiC,KAAMC,GAAQA,EAAIC,KAAOP,GAC5ClB,MAAQ,IACb,EAEA2B,SAAAA,CAAUtC,GAAO,MAAE6B,EAAK,OAAEU,IACzB,MAAMJ,EAAMnC,EAAMC,KAAKiC,KAAMC,GAAQA,EAAIC,KAAOP,GAChDM,EAAIK,QAAS,EACbL,EAAII,OAASA,EACE,YAAXJ,EAAIC,KACPpC,EAAMQ,eAAgB,EAExB,EAEAiC,eAAAA,CAAgBzC,GAAO,MAAE6B,EAAK,WAAEa,IAC/B,MAAMP,EAAMnC,EAAMC,KAAKiC,KAAMC,GAAQA,EAAIC,KAAOP,GAC5CM,IACHA,EAAIO,YAA4B,IAAfA,EAEnB,EAEAC,UAAAA,CAAW3C,EAAO6B,GACjB,MAAMM,EAAMnC,EAAMC,KAAKiC,KAAMC,GAAQA,EAAIC,KAAOP,GAChDM,EAAIK,QAAS,EACbL,EAAII,OAAS,GACTJ,EAAIS,YACPT,EAAIU,cAAe,GAEL,YAAXV,EAAIC,KACPpC,EAAMQ,eAAgB,EAExB,EAEAsC,YAAAA,CAAa9C,EAAO6B,GACnB7B,EAAMC,KAAKiC,KAAMC,GAAQA,EAAIC,KAAOP,GAAOW,QAAS,EACpDxC,EAAMC,KAAKiC,KAAMC,GAAQA,EAAIC,KAAOP,GAAOU,OAAS,GACpDvC,EAAMC,KAAKiC,KAAMC,GAAQA,EAAIC,KAAOP,GAAOkB,eAAgB,EAC3D/C,EAAMC,KAAKiC,KAAMC,GAAQA,EAAIC,KAAOP,GAAOmB,WAAY,EACvDhD,EAAMC,KAAKiC,KAAMC,GAAQA,EAAIC,KAAOP,GAAOgB,cAAe,EAC1D7C,EAAMC,KAAKiC,KAAMC,GAAQA,EAAIC,KAAOP,GAAOa,YAAa,EAC1C,YAAVb,IACH7B,EAAMQ,eAAgB,EAExB,EAEAyC,SAAAA,CAAUjD,EAAO6B,GAChB,MAAMM,EAAMnC,EAAMC,KAAKiC,KAAMC,GAAQA,EAAIC,KAAOP,GAC1CqB,EAAUf,EAAIgB,OACpBhB,EAAIgB,OAAS,KACbhB,EAAIe,QAAUA,EACdlD,EAAMK,aACP,EAEA+C,SAAAA,CAAUpD,GACTA,EAAMC,KAAO,EACd,EACAoD,KAAAA,CAAMrD,GACLA,EAAMC,KAAO,GACbD,EAAMI,WAAa,GACnBJ,EAAMK,YAAc,CACrB,EACAiD,YAAAA,CAAatD,EAAOoC,GACfN,MAAMC,QAAQK,GACjBA,EAAGJ,QAASC,IACXsB,EAAAA,GAAAA,IAAQvD,EAAMM,QAAS2B,GAAK,KAG7BsB,EAAAA,GAAAA,IAAQvD,EAAMM,QAAS8B,GAAI,EAE7B,EACAoB,WAAAA,CAAYxD,EAAOoC,GACdN,MAAMC,QAAQK,GACjBA,EAAGJ,QAASC,IACXsB,EAAAA,GAAAA,IAAQvD,EAAMM,QAAS2B,GAAK,KAG7BsB,EAAAA,GAAAA,IAAQvD,EAAMM,QAAS8B,GAAI,EAE7B,GA6BKqB,EAAU,CAEfnB,SAAAA,CAAUoB,GAAS,MAAE7B,EAAK,OAAEU,IAC3B,IAAItC,EAMJ,OAJCA,EADG6B,MAAMC,QAAQF,GACVA,EAEA,CAACA,GAEF8B,EAAAA,EAAItE,eAAeuE,KAAK,KAC9BF,EAAQG,OAAO,eAAgB5D,GAC/ByD,EAAQG,OAAO,eAAgB,WACxBF,EAAAA,EAAIjE,MAAKoE,EAAAA,EAAAA,IAAY,wBAAyB,CAAEC,OAAQ9D,EAAMsC,WACnEqB,KAAM9C,IACN4C,EAAQG,OAAO,cAAe5D,GAC9ByD,EAAQG,OAAO,cAAe,WAC9B5D,EAAK+B,QAASgC,IACbN,EAAQG,OAAO,YAAa,CAAEhC,MAAOmC,EAAQzB,aAIvC9C,EAAAA,GAAMF,KAAIuE,EAAAA,EAAAA,IAAY,gBAC3BF,KAAK,KACD9C,EAASnB,KAAKsE,mBACjBC,EAAAA,EAAAA,IACCrD,EACC,WACA,6GAED,CACCsD,QAASA,IAAMC,OAAOC,SAASC,SAC/BC,OAAO,IAITC,WAAW,WACVH,SAASC,QACV,EAAG,QAGJG,MAAM,KACD3C,MAAMC,QAAQF,MAClBjB,EAAAA,EAAAA,IAAUC,EAAE,WAAY,2EACxB6C,EAAQG,OAAO,WAAY,CAC1BhC,MAAO5B,EACPU,MAAOE,EAAE,WAAY,4EAEtB6C,EAAQgB,SAAS,aAAc,CAAE7C,eAIpC4C,MAAO9D,IACP+C,EAAQG,OAAO,cAAe5D,GAC9ByD,EAAQG,OAAO,cAAe,WAC9BH,EAAQG,OAAO,WAAY,CAC1BhC,MAAO5B,EACPU,MAAOA,EAAMG,SAASnB,KAAKA,KAAKoB,UAEjC2C,EAAQG,OAAO,mBAAoB,CAAEhC,QAAOlB,cAE5C8D,MAAO9D,GAAU+C,EAAQG,OAAO,cAAe,CAAEhC,QAAOlB,UAC5D,EACAgE,cAAAA,CAAejB,GAAS,MAAE7B,IACzB,IAAI5B,EAMJ,OAJCA,EADG6B,MAAMC,QAAQF,GACVA,EAEA,CAACA,GAEF8B,EAAAA,EAAItE,eAAeuE,KAAK,KAC9BF,EAAQG,OAAO,eAAgB5D,GAC/ByD,EAAQG,OAAO,eAAgB,WACxBF,EAAAA,EAAIjE,MAAKoE,EAAAA,EAAAA,IAAY,uBAAwB,CAAEjC,UACpD+B,KAAK,KACLF,EAAQG,OAAO,kBAAmB,CAAEhC,QAAOa,YAAY,MAEvD+B,MAAO9D,IACP+C,EAAQG,OAAO,cAAe5D,GAC9ByD,EAAQG,OAAO,cAAe,WAC9BH,EAAQG,OAAO,WAAY,CAC1BhC,MAAO5B,EACPU,MAAOA,EAAMG,SAASnB,KAAKA,KAAKoB,UAEjC2C,EAAQG,OAAO,mBAAoB,CAAEhC,QAAOlB,YAE5CiE,QAAQ,KACRlB,EAAQG,OAAO,cAAe5D,GAC9ByD,EAAQG,OAAO,cAAe,eAE9BY,MAAO9D,GAAU+C,EAAQG,OAAO,cAAe,CAAEhC,QAAOlB,UAC5D,EACAgC,UAAAA,CAAWe,GAAS,MAAE7B,IACrB,IAAI5B,EAMJ,OAJCA,EADG6B,MAAMC,QAAQF,GACVA,EAEA,CAACA,GAEF8B,EAAAA,EAAItE,eAAeuE,KAAK,KAC9BF,EAAQG,OAAO,eAAgB5D,GACxB0D,EAAAA,EAAIjE,MAAKoE,EAAAA,EAAAA,IAAY,yBAA0B,CAAEC,OAAQ9D,IAC9D2D,KAAK,KACLF,EAAQG,OAAO,cAAe5D,GAC9BA,EAAK+B,QAASgC,IACbN,EAAQG,OAAO,aAAcG,MAEvB,IAEPS,MAAO9D,IACP+C,EAAQG,OAAO,cAAe5D,GAC9ByD,EAAQG,OAAO,mBAAoB,CAAEhC,QAAOlB,cAE5C8D,MAAO9D,GAAU+C,EAAQG,OAAO,cAAe,CAAEhC,QAAOlB,UAC5D,EACAmC,aAAYA,CAACY,GAAS,MAAE7B,KAChB8B,EAAAA,EAAItE,eAAeuE,KAAK,KAC9BF,EAAQG,OAAO,eAAgBhC,GACxB8B,EAAAA,EAAIpE,KAAIuE,EAAAA,EAAAA,IAAY,2BAA2BjC,MACpD+B,KAAK,KACLF,EAAQG,OAAO,cAAehC,GAC9B6B,EAAQG,OAAO,eAAgBhC,IACxB,IAEP4C,MAAO9D,IACP+C,EAAQG,OAAO,cAAehC,GAC9B6B,EAAQG,OAAO,mBAAoB,CAAEhC,QAAOlB,cAE5C8D,MAAO9D,GAAU+C,EAAQG,OAAO,cAAe,CAAEhC,QAAOlB,WAG5DsC,UAASA,CAACS,GAAS,MAAE7B,KACb8B,EAAAA,EAAItE,eAAeuE,KAAK,KAC9BF,EAAQG,OAAO,eAAgBhC,GAC/B6B,EAAQG,OAAO,eAAgB,WACxBF,EAAAA,EAAIpE,KAAIuE,EAAAA,EAAAA,IAAY,wBAAwBjC,MACjD+B,KAAK,KACLF,EAAQG,OAAO,cAAe,WAC9BH,EAAQG,OAAO,cAAehC,GAC9B6B,EAAQG,OAAO,YAAahC,IACrB,IAEP4C,MAAO9D,IACP+C,EAAQG,OAAO,cAAehC,GAC9B6B,EAAQG,OAAO,cAAe,WAC9BH,EAAQG,OAAO,mBAAoB,CAAEhC,QAAOlB,cAE5C8D,MAAO9D,GAAU+C,EAAQG,OAAO,cAAe,CAAEhC,QAAOlB,WAG5DkE,WAAWnB,IACVA,EAAQG,OAAO,eAAgB,QACxBF,EAAAA,EAAIpE,KAAIuE,EAAAA,EAAAA,IAAY,uBACzBF,KAAM9C,IACN4C,EAAQG,OAAO,aAAc/C,EAASnB,KAAKM,MAC3CyD,EAAQG,OAAO,cAAe,SACvB,IAEPY,MAAO9D,GAAU+C,EAAQG,OAAO,cAAelD,KAGlD,mBAAMmE,CAAcpB,GAAS,wBAAEqB,GAA0B,GAAU,CAAC,GACnE,GAAIA,IAA4BrB,EAAQ1D,MAAMO,yBAA0B,CACvEmD,EAAQG,OAAO,eAAgB,cAC/B,IACC,MAAMzC,EAAoBuC,EAAAA,EAAIpE,KAAIuE,EAAAA,EAAAA,IAAY,6BAC9CJ,EAAQG,OAAO,mBAAoBzC,GACnC,MAAM4D,QAAkC5D,EACxC,OAAI4D,EAA0BrF,KAAKsF,OAAS,GAC3CvB,EAAQG,OAAO,mBAAoBmB,EAA0BrF,MAC7D+D,EAAQG,OAAO,cAAe,eACvB,IAERH,EAAQG,OAAO,cAAe,eACvB,EACR,CAAE,MAAOlD,GACR+C,EAAQG,OAAO,cAAelD,EAC/B,CACD,CACA,OAAO+C,EAAQ1D,MAAMO,wBACtB,GAID,GAAiBP,QAAOS,YAAWyE,QAjNnB,CACfC,gBAAgBnF,GACRA,EAAMQ,cAEdF,QAAQN,GACA,SAASoC,GACf,OAAOpC,EAAMM,QAAQ8B,EACtB,EAED0C,cAAc9E,GACNA,EAAMI,WAEdyE,WAAW7E,GACHA,EAAMC,KAEdmF,cAAcpF,GACNA,EAAME,QAEdmF,eAAerF,GACPA,EAAMK,YAEdiF,gBAAkBtF,GAAWuF,GACrBvF,EAAMI,WAAW8B,KAAMX,GAAaA,EAASa,KAAOmD,IA2LjB9B,WCtU5C,GAAiBzD,MAtBH,CAAC,EAsBSS,UArBN,CAAC,EAqBgByE,QApBnB,CAAC,EAoB2BzB,QAnB5B,CAWf+B,aAAYA,CAAC9B,GAAS,IAAEvB,EAAG,IAAEsD,EAAG,MAAEzG,KAC1B2E,EAAAA,EAAItE,eAAeuE,KAAK,IACvBD,EAAAA,EAAIjE,MAAKgG,EAAAA,EAAAA,IAAe,uDAAwD,CAAEvD,MAAKsD,QAAQ,CAAEzG,UACtGyF,MAAO9D,IAAY,MAAMA,KACzB8D,MAAO9D,GAAU+C,EAAQG,OAAO,cAAe,CAAE1B,MAAKsD,MAAKzG,QAAO2B,aCnBjEX,EAAQ,CACb2F,YAAYxF,EAAAA,EAAAA,GAAU,WAAY,gBAAiB,CAAC,IAE/CM,EAAY,CACjBmF,aAAAA,CAAc5F,EAAOL,GACpBK,EAAM2F,WAAahG,CACpB,GASD,GAAiBK,MAAK,EAAES,UAAS,EAAEyE,QAPnB,CACfW,cAAc7F,GACNA,EAAM2F,YAK6BlC,QAF5B,CAAC,G,2DCfV,MAAMqC,EAAkBC,KAAKC,SAAS,EAACC,EAAAA,EAAAA,OAAeC,EAAAA,EAAAA,OAAuB,CAChFC,SAAS,EACTC,MAAO,SCULC,GAAgBlG,EAAAA,EAAAA,GAAU,WAAY,gBAAiB,CAAC,GAExDmG,GAAeC,EAAAA,EAAAA,IAAW,YAAYC,SAAQ,GAAMC,QAEpDC,EAIE,CACNtE,GAAI,GACJuE,KAAM,GACNC,UAAW,EACXC,SAAU,EACVC,QAAQ,EACRC,WAAW,GAIP/G,EAAQ,CACbgH,MAAO,GACPzE,OAAQ,IACH8D,EAAcY,mBAAqB,MACnCZ,EAAca,cAAgB,IAEnCC,QAASd,EAAce,YAAcC,EAAAA,EAAaC,UAClDC,kBAAmB,EACnBC,YAAa,EACbC,WAAY,GACZC,oBAAqB,EACrBC,mBAAoB,GACpBC,UAAWvB,EAAcuB,WAAa,EACtCC,WAAY,CACXC,gBAA+E,SAA9DxB,EAAayB,QAAQ,qCACtCC,gBAA+E,SAA9D1B,EAAayB,QAAQ,qCACtCE,eAA6E,SAA7D3B,EAAayB,QAAQ,oCACrCG,cAA2E,SAA5D5B,EAAayB,QAAQ,mCACpCI,gBAA+E,SAA9D7B,EAAayB,QAAQ,qCACtCK,cAA2E,SAA5D9B,EAAayB,QAAQ,qCAIhCtH,EAAY,CACjB4H,WAAAA,CAAYrI,EAAOsI,GAClB,MAAMC,EAAgBvI,EAAMgH,MAAMwB,IAAI,EAAGpG,QAASA,GAC5CqG,EAAWC,OAAOC,OAAOL,GAC7BM,OAAO,EAAGxG,SAAUmG,EAAcM,SAASzG,IAEvC4E,EAAQhH,EAAMgH,MAAM8B,OAAOL,GACjCzI,EAAMwH,aAAexH,EAAMyH,WAC3BzH,EAAMgH,MAAQA,CACf,EACA+B,mBAAAA,CAAoB/I,GACnBA,EAAM0H,qBAAuB1H,EAAM2H,kBACpC,EACAqB,0BAAAA,CAA2BhJ,EAAOiF,GACjCjF,EAAMuH,kBAA+B,KAAXtC,EAAgBA,EAAS,CACpD,EAKAgE,QAAAA,CAASjJ,EAAOkJ,GACf,IACC,QAAsE,IAA3DlJ,EAAMuC,OAAOL,KAAMiH,GAAUA,EAAM/G,KAAO8G,EAAS9G,IAC7D,OAGD,MAAM+G,EAAQ,IAAKzC,KAAmBwC,GACtClJ,EAAMuC,OAAO6G,QAAQD,EACtB,CAAE,MAAOxI,GACRM,EAAAA,EAAON,MAAM,qBAAsB,CAAEA,SACtC,CACD,EACA0I,WAAAA,CAAYrJ,GAAO,IAAEsJ,EAAG,YAAEC,IACzB,MAAMC,EAAaxJ,EAAMuC,OAAOkH,UAAWC,GAAgBA,EAAYtH,KAAOkH,GAC9E,GAAIE,GAAc,EAAG,CACpB,MAAMG,EAAe3J,EAAMuC,OAAOiH,GAClCG,EAAahD,KAAO4C,EACpBvJ,EAAMuC,OAAOqH,OAAOJ,EAAY,EAAGG,EACpC,CACD,EACAE,WAAAA,CAAY7J,EAAOsJ,GAClB,MAAME,EAAaxJ,EAAMuC,OAAOkH,UAAWC,GAAgBA,EAAYtH,KAAOkH,GAC1EE,GAAc,GACjBxJ,EAAMuC,OAAOqH,OAAOJ,EAAY,EAElC,EACAM,YAAAA,CAAa9J,GAAO,OAAE+J,EAAM,IAAET,IAC7B,MAAMH,EAAQnJ,EAAMuC,OAAOL,KAAMwH,GAAgBA,EAAYtH,KAAOkH,GAC9DU,EAAOhK,EAAMgH,MAAM9E,KAAM8H,GAASA,EAAK5H,KAAO2H,GAEhDZ,GAASa,EAAKC,SAAWjK,EAAM4H,UAAY,GAC9CuB,EAAMvC,YAEQoD,EAAKzH,OACbf,KAAK8H,EACb,EACAY,eAAAA,CAAgBlK,GAAO,OAAE+J,EAAM,IAAET,IAChC,MAAMH,EAAQnJ,EAAMuC,OAAOL,KAAMwH,GAAgBA,EAAYtH,KAAOkH,GAC9DU,EAAOhK,EAAMgH,MAAM9E,KAAM8H,GAASA,EAAK5H,KAAO2H,GAEhDZ,GAASa,EAAKC,SAAWjK,EAAM4H,UAAY,GAC9CuB,EAAMvC,YAEP,MAAMrE,EAASyH,EAAKzH,OACpBA,EAAOqH,OAAOrH,EAAO4H,QAAQb,GAAM,EACpC,EACAc,eAAAA,CAAgBpK,GAAO,OAAE+J,EAAM,IAAET,IACjBtJ,EAAMgH,MAAM9E,KAAM8H,GAASA,EAAK5H,KAAO2H,GAAQM,SACvD7I,KAAK8H,EACb,EACAgB,kBAAAA,CAAmBtK,GAAO,OAAE+J,EAAM,IAAET,IACnC,MAAM/G,EAASvC,EAAMgH,MAAM9E,KAAM8H,GAASA,EAAK5H,KAAO2H,GAAQM,SAC9D9H,EAAOqH,OAAOrH,EAAO4H,QAAQb,GAAM,EACpC,EACAiB,UAAAA,CAAWvK,EAAO+J,GACjB,MAAMS,EAAYxK,EAAMgH,MAAMyC,UAAWO,GAASA,EAAK5H,KAAO2H,GAC9DU,KAAK5G,OAAO,mBAAoB,CAAEmG,KAAMhK,EAAMgH,MAAMwD,GAAYE,WAAY,WAC5E1K,EAAMgH,MAAM4C,OAAOY,EAAW,EAC/B,EACAG,WAAAA,CAAY3K,EAAOc,GAClB,MAAMkJ,EAAOlJ,EAASnB,KAAKiL,IAAIjL,KAC/BK,EAAMgH,MAAMoC,QAAQY,GACpBS,KAAK5G,OAAO,mBAAoB,CAAEmG,OAAMU,WAAY,UACrD,EACAG,iBAAAA,CAAkB7K,GAAO,OAAE+J,EAAM,QAAEE,IAClC,MAAMD,EAAOhK,EAAMgH,MAAM9E,KAAM8H,GAASA,EAAK5H,KAAO2H,GACpDC,EAAKC,QAAUA,EACfQ,KAAK5G,OAAO,mBAAoB,CAAEmG,OAAMU,WAAYT,EAAU,SAAW,WAC1E,EAEAa,gBAAAA,CAAiB9K,GAAO,KAAEgK,EAAI,WAAEU,IAE/B,GAAwB,IAApB1K,EAAM4H,UACT,OAGD,MAAMmD,EAAc/K,EAAMuC,OAAOL,KAAMiH,GAAuB,yBAAbA,EAAM/G,IACjD4I,EAAgBhL,EAAMuC,OAAOL,KAAMiH,GAAuB,aAAbA,EAAM/G,IACzD,OAAQsI,GACP,IAAK,SACL,IAAK,UACJM,EAAcpE,WAAaoD,EAAKC,SAAW,EAAI,EAC/Cc,EAAYnE,WAAaoD,EAAKC,QAAU,GAAK,EAC7CjK,EAAM4H,WAAaoC,EAAKC,QAAU,GAAK,EACvCD,EAAKzH,OAAOP,QAASiJ,IACpB,MAAM9B,EAAQnJ,EAAMuC,OAAOL,KAAMwH,GAAgBA,EAAYtH,KAAO6I,GAC/D9B,IAGLA,EAAMtC,UAAYmD,EAAKC,SAAW,EAAI,KAEvC,MACD,IAAK,SACJc,EAAYnE,YACZ5G,EAAM4H,YAENoC,EAAKzH,OAAOP,QAASiJ,IACpB,MAAM9B,EAAQnJ,EAAMuC,OAAOL,KAAMwH,GAAgBA,EAAYtH,KAAO6I,GAC/D9B,GAGLA,EAAMvC,cAEP,MACD,IAAK,SACAoD,EAAKC,SACRc,EAAYnE,YACZ5G,EAAM4H,YACNoC,EAAKzH,OAAOP,QAASiJ,IACpB,MAAM9B,EAAQnJ,EAAMuC,OAAOL,KAAMwH,GAAgBA,EAAYtH,KAAO6I,GAC/D9B,EAILA,EAAMvC,YAHL3F,EAAAA,EAAOiK,KAAK,cAAgBD,EAAY,2CAM1CD,EAAcpE,YACdoD,EAAKzH,OAAOP,QAASiJ,IACpB,MAAM9B,EAAQnJ,EAAMuC,OAAOL,KAAMwH,GAAgBA,EAAYtH,KAAO6I,GAC/D9B,GAGLA,EAAMtC,cAGR,MACD,QACC5F,EAAAA,EAAON,MAAM,6CAA6C+J,MAG7D,EACAS,WAAAA,CAAYnL,GAAO,OAAE+J,EAAM,IAAEtE,EAAG,MAAEzG,IACjC,GAAY,UAARyG,EAAiB,CACpB,MAAM2F,GAAaC,EAAAA,EAAAA,IAAcrM,GAAO,GACxCgB,EAAMgH,MAAM9E,KAAM8H,GAASA,EAAK5H,KAAO2H,GAAQtE,GAAKA,GAAsB,OAAf2F,EAAsBA,EAAapM,CAC/F,MACCgB,EAAMgH,MAAM9E,KAAM8H,GAASA,EAAK5H,KAAO2H,GAAQtE,GAAOzG,CAExD,EAOAsM,UAAAA,CAAWtL,GACVA,EAAMgH,MAAQ,GACdhH,EAAMwH,YAAc,EACpBxH,EAAM0H,oBAAsB,CAC7B,EAOA6D,WAAAA,CAAYvL,GACXA,EAAMuC,OAAS,IACV8D,EAAcY,mBAAqB,MACnCZ,EAAca,cAAgB,GAEpC,EAEAsE,aAAAA,CAAcxL,GAAO,IAAEyF,EAAG,MAAEzG,IAC3BsH,EAAamF,QAAQ,qBAAqBhG,IAAOiG,KAAKC,UAAU3M,IAChEgB,EAAM6H,WAAWpC,GAAOzG,CACzB,EAEA4M,eAAAA,CAAgB5L,EAAO6L,GACtB,MAAMC,EAAW9L,EAAMmH,QACvBnH,EAAMmH,QAAU0E,EAGhBpM,EAAAA,GAAMC,MACLoE,EAAAA,EAAAA,IAAY,4CACZ,CACC9E,MAAO+M,OAAOF,KAEdpH,MAAO9D,IACRX,EAAMmH,QAAU2E,GAChBlL,EAAAA,EAAAA,IAAUC,EAAE,WAAY,gCACxBI,EAAAA,EAAON,MAAMA,IAEf,GAGKuE,EAAU,CACf8G,SAAShM,GACDA,EAAMgH,MAEdiF,UAAUjM,GACFA,EAAMuC,OAEd0E,kBAAiBA,IACTZ,EAAc6F,gBAAkB,GAGxCC,eAAAA,CAAgBnM,GACf,MAAMuC,EAAS,IAAIvC,EAAMuC,QACzB,OAAIvC,EAAMmH,UAAYE,EAAAA,EAAaC,UAC3B/E,EAAO6J,KAAK,CAACC,EAAGC,KACtB,MAAMC,EAAOF,EAAEzF,UAAYyF,EAAExF,SACvB2F,EAAOF,EAAE1F,UAAY0F,EAAEzF,SAC7B,OAAQ0F,EAAOC,EAAQ,EAAKA,EAAOD,GAAQ,EAAIzG,EAAgB2G,QAAQJ,EAAE1F,KAAM2F,EAAE3F,QAG3EpE,EAAO6J,KAAK,CAACC,EAAGC,IAAMxG,EAAgB2G,QAAQJ,EAAE1F,KAAM2F,EAAE3F,MAEjE,EACA+F,gBAAgB1M,GACRA,EAAMmH,QAEdwF,2BAA2B3M,GACnBA,EAAMuH,kBAEdqF,eAAe5M,GACPA,EAAMwH,YAEdqF,cAAc7M,GACNA,EAAMyH,WAEdqF,uBAAuB9M,GACfA,EAAM0H,oBAEdqF,sBAAsB/M,GACdA,EAAM2H,mBAEdqF,aAAahN,GACLA,EAAM4H,UAEdqF,cAAcjN,GACNA,EAAM6H,YAITqF,EAAczN,EAAAA,GAAMyN,YAC1B,IAAIC,EAA4B,KAEhC,MAweA,GAAiBnN,MAAK,EAAES,UAAS,EAAEyE,QAAO,EAAEzB,QAxe5B,CAYf2J,YAAWA,CAAC1J,GAAS,OAAE2J,EAAM,MAAEC,EAAK,OAAEC,MACrCA,EAA2B,iBAAXA,EAAsBA,EAAS,GAExC5J,EAAAA,EAAIpE,KAAImG,EAAAA,EAAAA,IAAe,oEAAqE,CAAE2H,SAAQC,QAAOC,YAAW9I,MAAO9D,IAChIlB,EAAAA,GAAAA,SAAekB,IACnB+C,EAAQG,OAAO,cAAelD,MAYjC6M,QAAOA,CAAC9J,EAAS+J,IACT9J,EAAAA,EAAIpE,KAAImG,EAAAA,EAAAA,IAAe,eAAe+H,MAAWhJ,MAAO9D,IACzDlB,EAAAA,GAAAA,SAAekB,IACnB+C,EAAQG,OAAO,cAAelD,KAgBjCqL,SAAQA,CAACtI,GAAS,OAAE2J,EAAM,MAAEC,EAAK,OAAEC,EAAM,MAAEpE,MACtCgE,GACHA,EAA0BO,OAAO,iDAElCP,EAA4BD,EAAYS,SAQxCJ,GAPAA,EAA2B,iBAAXA,EAAsBA,EAAS,IAO/BnO,QAAQ,aAAc,IAAIwO,OAG5B,MADdzE,EAAyB,iBAAVA,EAAqBA,EAAQ,IAEpCxF,EAAAA,EAAIpE,KAAImG,EAAAA,EAAAA,IAAe,mFAAoF,CAAEyD,MAAO0E,mBAAmB1E,GAAQkE,SAAQC,QAAOC,WAAW,CAC/KO,YAAaX,EAA0BY,QAEtCnK,KAAM9C,IACN,MAAMkN,EAAatF,OAAOuF,KAAKnN,EAASnB,KAAKiL,IAAIjL,KAAKqH,OAAO/B,OAI7D,OAHI+I,EAAa,GAChBtK,EAAQG,OAAO,cAAe/C,EAASnB,KAAKiL,IAAIjL,KAAKqH,OAE/CgH,IAEPvJ,MAAO9D,IACFlB,EAAAA,GAAAA,SAAekB,IACnB+C,EAAQG,OAAO,cAAelD,KAK3BgD,EAAAA,EAAIpE,KAAImG,EAAAA,EAAAA,IAAe,oEAAqE,CAAE2H,SAAQC,QAAOC,WAAW,CAC9HO,YAAaX,EAA0BY,QAEtCnK,KAAM9C,IACN,MAAMkN,EAAatF,OAAOuF,KAAKnN,EAASnB,KAAKiL,IAAIjL,KAAKqH,OAAO/B,OAI7D,OAHI+I,EAAa,GAChBtK,EAAQG,OAAO,cAAe/C,EAASnB,KAAKiL,IAAIjL,KAAKqH,OAE/CgH,IAEPvJ,MAAO9D,IACFlB,EAAAA,GAAAA,SAAekB,IACnB+C,EAAQG,OAAO,cAAelD,MAelC,oBAAMuN,CAAexK,GAAS,OAAE2J,EAAM,MAAEC,EAAK,OAAEC,IAC9C,MAAMpO,GAAMuG,EAAAA,EAAAA,IAAe,mEAAoE,CAAE2H,SAAQC,QAAOC,WAChH,IACC,MAAMzM,QAAiB6C,EAAAA,EAAIpE,IAAIJ,GACzB6O,EAAatF,OAAOuF,KAAKnN,EAASnB,KAAKiL,IAAIjL,KAAKqH,OAAO/B,OAI7D,OAHI+I,EAAa,GAChBtK,EAAQG,OAAO,cAAe/C,EAASnB,KAAKiL,IAAIjL,KAAKqH,OAE/CgH,CACR,CAAE,MAAOrN,GACR+C,EAAQG,OAAO,cAAelD,EAC/B,CACD,EAYA,sBAAMwN,CAAiBzK,GAAS,OAAE2J,EAAM,MAAEC,EAAK,OAAEC,IAChD,MAAMpO,GAAMuG,EAAAA,EAAAA,IAAe,qEAAsE,CAAE2H,SAAQC,QAAOC,WAClH,IACC,MAAMzM,QAAiB6C,EAAAA,EAAIpE,IAAIJ,GACzB6O,EAAatF,OAAOuF,KAAKnN,EAASnB,KAAKiL,IAAIjL,KAAKqH,OAAO/B,OAK7D,OAJI+I,EAAa,IAChBtK,EAAQG,OAAO,cAAe/C,EAASnB,KAAKiL,IAAIjL,KAAKqH,OACrDtD,EAAQG,OAAO,sBAAuB/C,EAASnB,KAAKiL,IAAIjL,KAAKqH,QAEvDgH,CACR,CAAE,MAAOrN,GACR+C,EAAQG,OAAO,cAAelD,EAC/B,CACD,EAEAsL,SAAAA,CAAUvI,GAAS,OAAE2J,EAAM,MAAEC,EAAK,OAAEC,IACnCA,EAA2B,iBAAXA,EAAsBA,EAAS,GAC/C,MAAMa,GAAwB,IAAXd,EAAe,GAAK,UAAUA,IACjD,OAAO3J,EAAAA,EAAIpE,KAAImG,EAAAA,EAAAA,IAAe,+CAAgD,CAAE2H,SAAQE,WAAYa,GAClGxK,KAAM9C,GACF4H,OAAOuF,KAAKnN,EAASnB,KAAKiL,IAAIjL,KAAK4C,QAAQ0C,OAAS,IACvDnE,EAASnB,KAAKiL,IAAIjL,KAAK4C,OAAOP,QAAQ,SAASmH,GAC9CzF,EAAQG,OAAO,WAAY,CAAEzB,GAAI+G,EAAOxC,KAAMwC,GAC/C,IACO,IAIR1E,MAAO9D,GAAU+C,EAAQG,OAAO,cAAelD,GAClD,EAYA0N,iBAAgBA,CAAC3K,GAAS,OAAE2J,EAAM,MAAEC,EAAK,OAAEC,MAC1CA,EAA2B,iBAAXA,EAAsBA,EAAS,GACxC5J,EAAAA,EAAIpE,KAAImG,EAAAA,EAAAA,IAAe,oEAAqE,CAAE2H,SAAQC,QAAOC,YAClH3J,KAAM9C,GACF4H,OAAOuF,KAAKnN,EAASnB,KAAKiL,IAAIjL,KAAKqH,OAAO/B,OAAS,IACtDvB,EAAQG,OAAO,cAAe/C,EAASnB,KAAKiL,IAAIjL,KAAKqH,QAC9C,IAIRvC,MAAO9D,GAAU+C,EAAQG,OAAO,cAAelD,KAalD2N,kBAAiBA,CAAC5K,GAAS,QAAE6K,EAAO,OAAElB,EAAM,MAAEC,KACtC3J,EAAAA,EAAIpE,KAAImG,EAAAA,EAAAA,IAAe,8DAA+D,CAAE8I,QAASX,mBAAmBU,GAAUlB,SAAQC,WAC3I1J,KAAM9C,GAAa4C,EAAQG,OAAO,mBAAoB/C,EAASnB,KAAKiL,IAAIjL,KAAKqH,QAC7EvC,MAAO9D,GAAU+C,EAAQG,OAAO,cAAelD,IAGlDgM,2BAA2BjJ,OACtB+K,EAAAA,EAAAA,KAAkBC,mBAAmBD,EAAAA,EAAAA,KAAkBC,gBAAgBC,aAC1EjL,EAAQG,OAAO,8BAA8B4K,EAAAA,EAAAA,KAAkBC,gBAAgBC,YACxEF,EAAAA,EAAAA,KAAkBC,gBAAgBC,WAY3C1F,SAAQA,CAACvF,EAAS4F,IACV3F,EAAAA,EAAItE,eAAeuE,KAAK,IACvBD,EAAAA,EAAIjE,MAAKgG,EAAAA,EAAAA,IAAe,gBAAiB,CAAE6I,QAASjF,IACzD1F,KAAK,KACLF,EAAQG,OAAO,WAAY,CAAEzB,GAAIkH,EAAK3C,KAAM2C,IACrC,CAAEA,MAAKC,YAAaD,KAE3B7E,MAAO9D,IAAY,MAAMA,KACzB8D,MAAO9D,IAIT,MAHA+C,EAAQG,OAAO,cAAe,CAAEyF,MAAK3I,UAG/BA,IAYR0I,YAAWA,CAAC3F,GAAS,QAAE6K,EAAO,YAAEhF,KACxB5F,EAAAA,EAAItE,eAAeuE,KAAK,IACvBD,EAAAA,EAAI9D,KAAI6F,EAAAA,EAAAA,IAAe,yBAA0B,CAAE8I,QAASX,mBAAmBU,KAAa,CAAE9I,IAAK,cAAezG,MAAOuK,IAC9H3F,KAAK,KACLF,EAAQG,OAAO,cAAe,CAAEyF,IAAKiF,EAAShF,gBACvC,CAAEgF,UAAShF,iBAElB9E,MAAO9D,IAAY,MAAMA,KACzB8D,MAAO9D,IAIT,MAHA+C,EAAQG,OAAO,cAAe,CAAE0K,UAAS5N,UAGnCA,IAWRkJ,YAAWA,CAACnG,EAAS4F,IACb3F,EAAAA,EAAItE,eAAeuE,KAAK,IACvBD,EAAAA,EAAI7D,QAAO4F,EAAAA,EAAAA,IAAe,yBAA0B,CAAE8I,QAASX,mBAAmBvE,MACvF1F,KAAK,IAAMF,EAAQG,OAAO,cAAeyF,IACzC7E,MAAO9D,IAAY,MAAMA,KACzB8D,MAAO9D,GAAU+C,EAAQG,OAAO,cAAe,CAAEyF,MAAK3I,WAY1DmJ,aAAYA,CAACpG,GAAS,OAAEqG,EAAM,IAAET,KACxB3F,EAAAA,EAAItE,eAAeuE,KAAK,IACvBD,EAAAA,EAAIjE,MAAKgG,EAAAA,EAAAA,IAAe,8BAA+B,CAAEqE,WAAW,CAAEwE,QAASjF,IACpF1F,KAAK,IAAMF,EAAQG,OAAO,eAAgB,CAAEkG,SAAQT,SACpD7E,MAAO9D,IAAY,MAAMA,KACzB8D,MAAO9D,GAAU+C,EAAQG,OAAO,cAAe,CAAEkG,SAAQpJ,WAY7DuJ,gBAAeA,CAACxG,GAAS,OAAEqG,EAAM,IAAET,KAC3B3F,EAAAA,EAAItE,eAAeuE,KAAK,IACvBD,EAAAA,EAAI7D,QAAO4F,EAAAA,EAAAA,IAAe,8BAA+B,CAAEqE,WAAW,CAAEwE,QAASjF,IACtF1F,KAAK,IAAMF,EAAQG,OAAO,kBAAmB,CAAEkG,SAAQT,SACvD7E,MAAO9D,IAAY,MAAMA,KACzB8D,MAAO9D,IAIT,MAHA+C,EAAQG,OAAO,cAAe,CAAEkG,SAAQpJ,UAGlCA,IAaRyJ,gBAAeA,CAAC1G,GAAS,OAAEqG,EAAM,IAAET,KAC3B3F,EAAAA,EAAItE,eAAeuE,KAAK,IACvBD,EAAAA,EAAIjE,MAAKgG,EAAAA,EAAAA,IAAe,iCAAkC,CAAEqE,WAAW,CAAEwE,QAASjF,IACvF1F,KAAK,IAAMF,EAAQG,OAAO,kBAAmB,CAAEkG,SAAQT,SACvD7E,MAAO9D,IAAY,MAAMA,KACzB8D,MAAO9D,GAAU+C,EAAQG,OAAO,cAAe,CAAEkG,SAAQpJ,WAY7D2J,mBAAkBA,CAAC5G,GAAS,OAAEqG,EAAM,IAAET,KAC9B3F,EAAAA,EAAItE,eAAeuE,KAAK,IACvBD,EAAAA,EAAI7D,QAAO4F,EAAAA,EAAAA,IAAe,iCAAkC,CAAEqE,WAAW,CAAEwE,QAASjF,IACzF1F,KAAK,IAAMF,EAAQG,OAAO,qBAAsB,CAAEkG,SAAQT,SAC1D7E,MAAO9D,IAAY,MAAMA,KACzB8D,MAAO9D,GAAU+C,EAAQG,OAAO,cAAe,CAAEkG,SAAQpJ,WAU7D,qBAAMiO,CAAgBlL,EAASqG,GAC9B,IAEC,aADMpG,EAAAA,EAAItE,qBACGsE,EAAAA,EAAIjE,MAAKgG,EAAAA,EAAAA,IAAe,4BAA6B,CAAEqE,WACrE,CAAE,MAAOpJ,GAER,OADA+C,EAAQG,OAAO,cAAe,CAAEkG,SAAQpJ,UACjCkO,QAAQC,OAAO,IAAIC,MAAM,+BACjC,CACD,EASAxE,WAAUA,CAAC7G,EAASqG,IACZpG,EAAAA,EAAItE,eAAeuE,KAAK,IACvBD,EAAAA,EAAI7D,QAAO4F,EAAAA,EAAAA,IAAe,uBAAwB,CAAEqE,YACzDnG,KAAK,IAAMF,EAAQG,OAAO,aAAckG,IACxCtF,MAAO9D,IAAY,MAAMA,KACzB8D,MAAO9D,GAAU+C,EAAQG,OAAO,cAAe,CAAEkG,SAAQpJ,WAqB7DqO,QAAOA,EAAC,OAAEnL,EAAM,SAAEa,IAAY,OAAEqF,EAAM,SAAEkF,EAAQ,YAAE1F,EAAW,MAAE2F,EAAK,OAAE3M,EAAM,SAAE8H,EAAQ,MAAE8E,EAAK,SAAEC,EAAQ,QAAEC,KACjG1L,EAAAA,EAAItE,eAAeuE,KAAK,IACvBD,EAAAA,EAAIjE,MAAKgG,EAAAA,EAAAA,IAAe,eAAgB,CAAEqE,SAAQkF,WAAU1F,cAAa2F,QAAO3M,SAAQ8H,WAAU8E,QAAOC,WAAUC,YACxHzL,KAAM9C,GAAa4D,EAAS,cAAeqF,GAAUjJ,EAASnB,KAAKiL,IAAIjL,KAAKyC,KAC5EqC,MAAO9D,IAAY,MAAMA,KACzB8D,MAAO9D,IAET,MADAkD,EAAO,cAAe,CAAEkG,SAAQpJ,UAC1BA,IAWRgK,YAAWA,CAACjH,EAASqG,IACbpG,EAAAA,EAAItE,eAAeuE,KAAK,IACvBD,EAAAA,EAAIpE,KAAImG,EAAAA,EAAAA,IAAe,uBAAwB,CAAEqE,YACtDnG,KAAM9C,GAAa4C,EAAQG,OAAO,cAAe/C,IACjD2D,MAAO9D,IAAY,MAAMA,KACzB8D,MAAO9D,GAAU+C,EAAQG,OAAO,cAAe,CAAEkG,SAAQpJ,WAY7DkK,iBAAAA,CAAkBnH,GAAS,OAAEqG,EAAM,QAAEE,GAAU,IAC9C,MAAMqF,EAAarF,EAAU,SAAW,UACxC,OAAOtG,EAAAA,EAAItE,eAAeuE,KAAK,IACvBD,EAAAA,EAAI9D,KAAI6F,EAAAA,EAAAA,IAAe,oCAAqC,CAAEqE,SAAQuF,gBAC3E1L,KAAK,IAAMF,EAAQG,OAAO,oBAAqB,CAAEkG,SAAQE,aACzDxF,MAAO9D,IAAY,MAAMA,KACzB8D,MAAO9D,GAAU+C,EAAQG,OAAO,cAAe,CAAEkG,SAAQpJ,UAC7D,EAYA,iBAAMwK,CAAYzH,GAAS,OAAEqG,EAAM,IAAEtE,EAAG,MAAEzG,IAIzC,IAFkB,CAAC,QAAS,WAAY,QAAS,cAAe,WAAY,WAE7D6J,SAASpD,GACvB,MAAM,IAAIsJ,MAAM,wBAIjB,GAAc,KAAV/P,IARiB,CAAC,QAAS,cAAe,WAQZ6J,SAASpD,GAC1C,MAAM,IAAIsJ,MAAM,wCAGjB,IAGC,aAFMpL,EAAAA,EAAItE,qBACJsE,EAAAA,EAAI9D,KAAI6F,EAAAA,EAAAA,IAAe,uBAAwB,CAAEqE,WAAW,CAAEtE,MAAKzG,UAClE0E,EAAQG,OAAO,cAAe,CAAEkG,SAAQtE,MAAKzG,SACrD,CAAE,MAAO2B,GAER,MADA+C,EAAQG,OAAO,cAAe,CAAEkG,SAAQpJ,UAClCA,CACP,CACD,EASA4O,gBAAeA,CAAC7L,EAASqG,IACjBpG,EAAAA,EAAItE,eAAeuE,KAAK,IACvBD,EAAAA,EAAIjE,MAAKgG,EAAAA,EAAAA,IAAe,+BAAgC,CAAEqE,YAC/DnG,KAAK,KAAM,GACXa,MAAO9D,IAAY,MAAMA,KACzB8D,MAAO9D,GAAU+C,EAAQG,OAAO,cAAe,CAAEkG,SAAQpJ,aCpxBxDF,EAAY,CACjB+O,WAAAA,CAAYxP,EAAOW,GAClB,IACC,MAAMI,EAAUJ,EAAMA,MAAMG,SAASnB,KAAKiL,IAAI6E,KAAK1O,SACnDH,EAAAA,EAAAA,IAAUC,EAAE,WAAY,4DAA8D,OAASE,EAAS,CAAEC,QAAQ,GACnH,CAAE,OACDJ,EAAAA,EAAAA,IAAUC,EAAE,WAAY,4DACzB,CACAI,EAAAA,EAAON,MAAM,wCAAyC,CAAEX,QAAOW,SAChE,GAGD,IAAI+O,EAAQ,KAKL,SAASC,IAaf,OAZc,OAAVD,IACHA,EAAQ,IAAIE,EAAAA,GAAM,CACjBC,QAAS,CACR7I,MAAK,EACL/G,KAAI,EACJ6P,SAAQ,EACRC,GAAEA,GAEHC,QAAQ,EACRvP,UAASA,KAGJiP,CACR,C,YCxBA5Q,EAAOC,QAZP,SAAiBkR,EAAQxK,GACvB,IAAY,gBAARA,GAAgD,mBAAhBwK,EAAOxK,KAIhC,aAAPA,EAIJ,OAAOwK,EAAOxK,EAChB,C,4CCXO,IAAI4B,E,iBACX,SAAWA,GACPA,EAAaA,EAAwB,UAAI,GAAK,YAC9CA,EAAaA,EAAwB,UAAI,GAAK,WACjD,CAHD,CAGGA,IAAiBA,EAAe,CAAC,G,kBCXpC,IAAI6I,EAAW,EAAQ,OACnBC,EAAiB,EAAQ,OAmC7BrR,EAAOC,QA1BP,SAAwBqR,GACtB,OAAOF,EAAS,SAASD,EAAQI,GAC/B,IAAIC,GAAS,EACTrL,EAASoL,EAAQpL,OACjBsL,EAAatL,EAAS,EAAIoL,EAAQpL,EAAS,QAAKuL,EAChDC,EAAQxL,EAAS,EAAIoL,EAAQ,QAAKG,EAWtC,IATAD,EAAcH,EAASnL,OAAS,GAA0B,mBAAdsL,GACvCtL,IAAUsL,QACXC,EAEAC,GAASN,EAAeE,EAAQ,GAAIA,EAAQ,GAAII,KAClDF,EAAatL,EAAS,OAAIuL,EAAYD,EACtCtL,EAAS,GAEXgL,EAASvH,OAAOuH,KACPK,EAAQrL,GAAQ,CACvB,IAAI0I,EAAS0C,EAAQC,GACjB3C,GACFyC,EAASH,EAAQtC,EAAQ2C,EAAOC,EAEpC,CACA,OAAON,CACT,EACF,C,oEClCA,SAASS,EAAQC,GAGf,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqBC,QAAUD,EAAEG,cAAgBF,QAAUD,IAAMC,OAAOG,UAAY,gBAAkBJ,CACpH,EAAGD,EAAQC,EACb,CCNA,SAASK,EAAcnQ,GACrB,IAAIoQ,ECFN,SAAqBpQ,GACnB,GAAI,UAAY6P,EAAQ7P,KAAOA,EAAG,OAAOA,EACzC,IAAIqQ,EAAIrQ,EAAE+P,OAAOO,aACjB,QAAI,IAAWD,EAAG,CAChB,IAAID,EAAIC,EAAEE,KAAKvQ,EAAGwQ,UAClB,GAAI,UAAYX,EAAQO,GAAI,OAAOA,EACnC,MAAM,IAAIK,UAAU,+CACtB,CACA,OAAyBvF,OAAiBlL,EAC5C,CDPUsQ,CAAYtQ,GACpB,MAAO,UAAY6P,EAAQO,GAAKA,EAAIA,EAAI,EAC1C,CEJA,SAASM,EAAgBL,EAAGG,EAAGxQ,GAC7B,OAAQwQ,EAAIL,EAAcK,MAAOH,EAAIxI,OAAO8I,eAAeN,EAAGG,EAAG,CAC/DrS,MAAO6B,EACP4Q,YAAY,EACZC,cAAc,EACdC,UAAU,IACPT,EAAEG,GAAKxQ,EAAGqQ,CACjB,CCPA,SAASU,EAAkBV,EAAGG,GAC5B,IAAK,IAAIxQ,EAAI,EAAGA,EAAIwQ,EAAEpM,OAAQpE,IAAK,CACjC,IAAI8P,EAAIU,EAAExQ,GACV8P,EAAEc,WAAad,EAAEc,aAAc,EAAId,EAAEe,cAAe,EAAI,UAAWf,IAAMA,EAAEgB,UAAW,GAAKjJ,OAAO8I,eAAeN,EAAGF,EAAcL,EAAElL,KAAMkL,EAC5I,CACF,CCkBA,IAAIkB,EAA8B,oBAAXzN,QAA8C,oBAAb0N,UAAiD,oBAAdC,UAEvFC,EAAkB,WAEpB,IADA,IAAIC,EAAwB,CAAC,OAAQ,UAAW,WACvChB,EAAI,EAAGA,EAAIgB,EAAsBhN,OAAQgM,GAAK,EACrD,GAAIY,GAAaE,UAAUG,UAAU/H,QAAQ8H,EAAsBhB,KAAO,EACxE,OAAO,EAGX,OAAO,CACT,CARsB,GAgDlBkB,EAXqBN,GAAazN,OAAOyK,QA3B7C,SAA2BuD,GACzB,IAAIC,GAAS,EACb,OAAO,WACDA,IAGJA,GAAS,EACTjO,OAAOyK,QAAQyD,UAAU1O,KAAK,WAC5ByO,GAAS,EACTD,GACF,GACF,CACF,EAEA,SAAsBA,GACpB,IAAIG,GAAY,EAChB,OAAO,WACAA,IACHA,GAAY,EACZ/N,WAAW,WACT+N,GAAY,EACZH,GACF,EAAGJ,GAEP,CACF,EAsBA,SAASQ,EAAWC,GAElB,OAAOA,GAA8D,sBADvD,CAAC,EACmBC,SAAStB,KAAKqB,EAClD,CASA,SAASE,EAAyBC,EAASC,GACzC,GAAyB,IAArBD,EAAQE,SACV,MAAO,GAGT,IACIC,EADSH,EAAQI,cAAcC,YAClBC,iBAAiBN,EAAS,MAC3C,OAAOC,EAAWE,EAAIF,GAAYE,CACpC,CASA,SAASI,EAAcP,GACrB,MAAyB,SAArBA,EAAQQ,SACHR,EAEFA,EAAQS,YAAcT,EAAQU,IACvC,CASA,SAASC,EAAgBX,GAEvB,IAAKA,EACH,OAAOd,SAAS0B,KAGlB,OAAQZ,EAAQQ,UACd,IAAK,OACL,IAAK,OACH,OAAOR,EAAQI,cAAcQ,KAC/B,IAAK,YACH,OAAOZ,EAAQY,KAKnB,IAAIC,EAAwBd,EAAyBC,GACjDc,EAAWD,EAAsBC,SACjCC,EAAYF,EAAsBE,UAClCC,EAAYH,EAAsBG,UAEtC,MAAI,wBAAwBC,KAAKH,EAAWE,EAAYD,GAC/Cf,EAGFW,EAAgBJ,EAAcP,GACvC,CASA,SAASkB,EAAiBC,GACxB,OAAOA,GAAaA,EAAUC,cAAgBD,EAAUC,cAAgBD,CAC1E,CAEA,IAAIE,EAASpC,MAAgBzN,OAAO8P,uBAAwBpC,SAASqC,cACjEC,EAASvC,GAAa,UAAUgC,KAAK9B,UAAUG,WASnD,SAASmC,EAAKnR,GACZ,OAAgB,KAAZA,EACK+Q,EAEO,KAAZ/Q,EACKkR,EAEFH,GAAUG,CACnB,CASA,SAASE,EAAgB1B,GACvB,IAAKA,EACH,OAAOd,SAASyC,gBAQlB,IALA,IAAIC,EAAiBH,EAAK,IAAMvC,SAAS0B,KAAO,KAG5CiB,EAAe7B,EAAQ6B,cAAgB,KAEpCA,IAAiBD,GAAkB5B,EAAQ8B,oBAChDD,GAAgB7B,EAAUA,EAAQ8B,oBAAoBD,aAGxD,IAAIrB,EAAWqB,GAAgBA,EAAarB,SAE5C,OAAKA,GAAyB,SAAbA,GAAoC,SAAbA,GAMsB,IAA1D,CAAC,KAAM,KAAM,SAASjJ,QAAQsK,EAAarB,WAA2E,WAAvDT,EAAyB8B,EAAc,YACjGH,EAAgBG,GAGlBA,EATE7B,EAAUA,EAAQI,cAAcuB,gBAAkBzC,SAASyC,eAUtE,CAkBA,SAASI,EAAQC,GACf,OAAwB,OAApBA,EAAKvB,WACAsB,EAAQC,EAAKvB,YAGfuB,CACT,CAUA,SAASC,EAAuBC,EAAUC,GAExC,KAAKD,GAAaA,EAAShC,UAAaiC,GAAaA,EAASjC,UAC5D,OAAOhB,SAASyC,gBAIlB,IAAIS,EAAQF,EAASG,wBAAwBF,GAAYG,KAAKC,4BAC1DC,EAAQJ,EAAQF,EAAWC,EAC3BM,EAAML,EAAQD,EAAWD,EAGzBQ,EAAQxD,SAASyD,cACrBD,EAAME,SAASJ,EAAO,GACtBE,EAAMG,OAAOJ,EAAK,GAClB,IA/CyBzC,EACrBQ,EA8CAsC,EAA0BJ,EAAMI,wBAIpC,GAAIZ,IAAaY,GAA2BX,IAAaW,GAA2BN,EAAMO,SAASN,GACjG,MAjDe,UAFbjC,GADqBR,EAoDD8C,GAnDDtC,WAKH,SAAbA,GAAuBkB,EAAgB1B,EAAQgD,qBAAuBhD,EAkDpE0B,EAAgBoB,GAHdA,EAOX,IAAIG,EAAelB,EAAQG,GAC3B,OAAIe,EAAavC,KACRuB,EAAuBgB,EAAavC,KAAMyB,GAE1CF,EAAuBC,EAAUH,EAAQI,GAAUzB,KAE9D,CAUA,SAASwC,EAAUlD,GACjB,IAEImD,EAAqB,SAFdC,UAAU/Q,OAAS,QAAsBuL,IAAjBwF,UAAU,GAAmBA,UAAU,GAAK,OAE9C,YAAc,aAC3C5C,EAAWR,EAAQQ,SAEvB,GAAiB,SAAbA,GAAoC,SAAbA,EAAqB,CAC9C,IAAI6C,EAAOrD,EAAQI,cAAcuB,gBAEjC,OADuB3B,EAAQI,cAAckD,kBAAoBD,GACzCF,EAC1B,CAEA,OAAOnD,EAAQmD,EACjB,CAkCA,SAASI,EAAeC,EAAQC,GAC9B,IAAIC,EAAiB,MAATD,EAAe,OAAS,MAChCE,EAAkB,SAAVD,EAAmB,QAAU,SAEzC,OAAOE,WAAWJ,EAAO,SAAWE,EAAQ,UAAYE,WAAWJ,EAAO,SAAWG,EAAQ,SAC/F,CAEA,SAASE,EAAQJ,EAAM7C,EAAMyC,EAAMS,GACjC,OAAOC,KAAKC,IAAIpD,EAAK,SAAW6C,GAAO7C,EAAK,SAAW6C,GAAOJ,EAAK,SAAWI,GAAOJ,EAAK,SAAWI,GAAOJ,EAAK,SAAWI,GAAOhC,EAAK,IAAMwC,SAASZ,EAAK,SAAWI,IAASQ,SAASH,EAAc,UAAqB,WAATL,EAAoB,MAAQ,UAAYQ,SAASH,EAAc,UAAqB,WAATL,EAAoB,SAAW,WAAa,EAC5U,CAEA,SAASS,EAAehF,GACtB,IAAI0B,EAAO1B,EAAS0B,KAChByC,EAAOnE,EAASyC,gBAChBmC,EAAgBrC,EAAK,KAAOnB,iBAAiB+C,GAEjD,MAAO,CACLc,OAAQN,EAAQ,SAAUjD,EAAMyC,EAAMS,GACtCM,MAAOP,EAAQ,QAASjD,EAAMyC,EAAMS,GAExC,CAEA,IAMIO,EAAc,WAChB,SAASC,EAAiBC,EAAQC,GAChC,IAAK,IAAInG,EAAI,EAAGA,EAAImG,EAAMnS,OAAQgM,IAAK,CACrC,IAAIoG,EAAaD,EAAMnG,GACvBoG,EAAW5F,WAAa4F,EAAW5F,aAAc,EACjD4F,EAAW3F,cAAe,EACtB,UAAW2F,IAAYA,EAAW1F,UAAW,GACjDjJ,OAAO8I,eAAe2F,EAAQE,EAAW5R,IAAK4R,EAChD,CACF,CAEA,OAAO,SAAUC,EAAaC,EAAYC,GAGxC,OAFID,GAAYL,EAAiBI,EAAYvG,UAAWwG,GACpDC,GAAaN,EAAiBI,EAAaE,GACxCF,CACT,CACF,CAhBkB,GAsBd9F,EAAiB,SAAUiG,EAAKhS,EAAKzG,GAYvC,OAXIyG,KAAOgS,EACT/O,OAAO8I,eAAeiG,EAAKhS,EAAK,CAC9BzG,MAAOA,EACPyS,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZ8F,EAAIhS,GAAOzG,EAGNyY,CACT,EAEIC,EAAWhP,OAAOiP,QAAU,SAAUR,GACxC,IAAK,IAAIlG,EAAI,EAAGA,EAAI+E,UAAU/Q,OAAQgM,IAAK,CACzC,IAAItD,EAASqI,UAAU/E,GAEvB,IAAK,IAAIxL,KAAOkI,EACVjF,OAAOqI,UAAU6G,eAAexG,KAAKzD,EAAQlI,KAC/C0R,EAAO1R,GAAOkI,EAAOlI,GAG3B,CAEA,OAAO0R,CACT,EASA,SAASU,EAAcC,GACrB,OAAOJ,EAAS,CAAC,EAAGI,EAAS,CAC3BC,MAAOD,EAAQE,KAAOF,EAAQd,MAC9BiB,OAAQH,EAAQI,IAAMJ,EAAQf,QAElC,CASA,SAASoB,EAAsBvF,GAC7B,IAAIwF,EAAO,CAAC,EAKZ,IACE,GAAI/D,EAAK,IAAK,CACZ+D,EAAOxF,EAAQuF,wBACf,IAAIE,EAAYvC,EAAUlD,EAAS,OAC/B0F,EAAaxC,EAAUlD,EAAS,QACpCwF,EAAKF,KAAOG,EACZD,EAAKJ,MAAQM,EACbF,EAAKH,QAAUI,EACfD,EAAKL,OAASO,CAChB,MACEF,EAAOxF,EAAQuF,uBAEnB,CAAE,MAAOjH,GAAI,CAEb,IAAIqH,EAAS,CACXP,KAAMI,EAAKJ,KACXE,IAAKE,EAAKF,IACVlB,MAAOoB,EAAKL,MAAQK,EAAKJ,KACzBjB,OAAQqB,EAAKH,OAASG,EAAKF,KAIzBM,EAA6B,SAArB5F,EAAQQ,SAAsB0D,EAAelE,EAAQI,eAAiB,CAAC,EAC/EgE,EAAQwB,EAAMxB,OAASpE,EAAQ6F,aAAeF,EAAOvB,MACrDD,EAASyB,EAAMzB,QAAUnE,EAAQ8F,cAAgBH,EAAOxB,OAExD4B,EAAiB/F,EAAQgG,YAAc5B,EACvC6B,EAAgBjG,EAAQkG,aAAe/B,EAI3C,GAAI4B,GAAkBE,EAAe,CACnC,IAAIzC,EAASzD,EAAyBC,GACtC+F,GAAkBxC,EAAeC,EAAQ,KACzCyC,GAAiB1C,EAAeC,EAAQ,KAExCmC,EAAOvB,OAAS2B,EAChBJ,EAAOxB,QAAU8B,CACnB,CAEA,OAAOhB,EAAcU,EACvB,CAEA,SAASQ,EAAqCC,EAAUC,GACtD,IAAIC,EAAgBlD,UAAU/Q,OAAS,QAAsBuL,IAAjBwF,UAAU,IAAmBA,UAAU,GAE/E5B,EAASC,EAAK,IACdrT,EAA6B,SAApBiY,EAAO7F,SAChB+F,EAAehB,EAAsBa,GACrCI,EAAajB,EAAsBc,GACnCI,EAAe9F,EAAgByF,GAE/B5C,EAASzD,EAAyBsG,GAClCK,EAAiB9C,WAAWJ,EAAOkD,gBACnCC,EAAkB/C,WAAWJ,EAAOmD,iBAGpCL,GAAiBlY,IACnBoY,EAAWlB,IAAMvB,KAAKC,IAAIwC,EAAWlB,IAAK,GAC1CkB,EAAWpB,KAAOrB,KAAKC,IAAIwC,EAAWpB,KAAM,IAE9C,IAAIF,EAAUD,EAAc,CAC1BK,IAAKiB,EAAajB,IAAMkB,EAAWlB,IAAMoB,EACzCtB,KAAMmB,EAAanB,KAAOoB,EAAWpB,KAAOuB,EAC5CvC,MAAOmC,EAAanC,MACpBD,OAAQoC,EAAapC,SASvB,GAPAe,EAAQ0B,UAAY,EACpB1B,EAAQ2B,WAAa,GAMhBrF,GAAUpT,EAAQ,CACrB,IAAIwY,EAAYhD,WAAWJ,EAAOoD,WAC9BC,EAAajD,WAAWJ,EAAOqD,YAEnC3B,EAAQI,KAAOoB,EAAiBE,EAChC1B,EAAQG,QAAUqB,EAAiBE,EACnC1B,EAAQE,MAAQuB,EAAkBE,EAClC3B,EAAQC,OAASwB,EAAkBE,EAGnC3B,EAAQ0B,UAAYA,EACpB1B,EAAQ2B,WAAaA,CACvB,CAMA,OAJIrF,IAAW8E,EAAgBD,EAAOtD,SAAS0D,GAAgBJ,IAAWI,GAA0C,SAA1BA,EAAajG,YACrG0E,EA1NJ,SAAuBM,EAAMxF,GAC3B,IAAI8G,EAAW1D,UAAU/Q,OAAS,QAAsBuL,IAAjBwF,UAAU,IAAmBA,UAAU,GAE1EqC,EAAYvC,EAAUlD,EAAS,OAC/B0F,EAAaxC,EAAUlD,EAAS,QAChC+G,EAAWD,GAAY,EAAI,EAK/B,OAJAtB,EAAKF,KAAOG,EAAYsB,EACxBvB,EAAKH,QAAUI,EAAYsB,EAC3BvB,EAAKJ,MAAQM,EAAaqB,EAC1BvB,EAAKL,OAASO,EAAaqB,EACpBvB,CACT,CA+McwB,CAAc9B,EAASmB,IAG5BnB,CACT,CA+BA,SAAS+B,EAAQjH,GACf,IAAIQ,EAAWR,EAAQQ,SACvB,GAAiB,SAAbA,GAAoC,SAAbA,EACzB,OAAO,EAET,GAAsD,UAAlDT,EAAyBC,EAAS,YACpC,OAAO,EAET,IAAIS,EAAaF,EAAcP,GAC/B,QAAKS,GAGEwG,EAAQxG,EACjB,CAUA,SAASyG,EAA6BlH,GAEpC,IAAKA,IAAYA,EAAQmH,eAAiB1F,IACxC,OAAOvC,SAASyC,gBAGlB,IADA,IAAIyF,EAAKpH,EAAQmH,cACVC,GAAoD,SAA9CrH,EAAyBqH,EAAI,cACxCA,EAAKA,EAAGD,cAEV,OAAOC,GAAMlI,SAASyC,eACxB,CAaA,SAAS0F,EAAcC,EAAQnG,EAAWoG,EAASC,GACjD,IAAIlB,EAAgBlD,UAAU/Q,OAAS,QAAsBuL,IAAjBwF,UAAU,IAAmBA,UAAU,GAI/EqE,EAAa,CAAEnC,IAAK,EAAGF,KAAM,GAC7BvD,EAAeyE,EAAgBY,EAA6BI,GAAUrF,EAAuBqF,EAAQpG,EAAiBC,IAG1H,GAA0B,aAAtBqG,EACFC,EArFJ,SAAuDzH,GACrD,IAAI0H,EAAgBtE,UAAU/Q,OAAS,QAAsBuL,IAAjBwF,UAAU,IAAmBA,UAAU,GAE/EC,EAAOrD,EAAQI,cAAcuB,gBAC7BgG,EAAiBxB,EAAqCnG,EAASqD,GAC/De,EAAQL,KAAKC,IAAIX,EAAKwC,YAAarU,OAAOoW,YAAc,GACxDzD,EAASJ,KAAKC,IAAIX,EAAKyC,aAActU,OAAOqW,aAAe,GAE3DpC,EAAaiC,EAAkC,EAAlBxE,EAAUG,GACvCqC,EAAcgC,EAA0C,EAA1BxE,EAAUG,EAAM,QASlD,OAAO4B,EAPM,CACXK,IAAKG,EAAYkC,EAAerC,IAAMqC,EAAef,UACrDxB,KAAMM,EAAaiC,EAAevC,KAAOuC,EAAed,WACxDzC,MAAOA,EACPD,OAAQA,GAIZ,CAkEiB2D,CAA8CjG,EAAcyE,OACpE,CAEL,IAAIyB,OAAiB,EACK,iBAAtBP,EAE8B,UADhCO,EAAiBpH,EAAgBJ,EAAcY,KAC5BX,WACjBuH,EAAiBT,EAAOlH,cAAcuB,iBAGxCoG,EAD+B,WAAtBP,EACQF,EAAOlH,cAAcuB,gBAErB6F,EAGnB,IAAItC,EAAUiB,EAAqC4B,EAAgBlG,EAAcyE,GAGjF,GAAgC,SAA5ByB,EAAevH,UAAwByG,EAAQpF,GAWjD4F,EAAavC,MAXmD,CAChE,IAAI8C,EAAkB9D,EAAeoD,EAAOlH,eACxC+D,EAAS6D,EAAgB7D,OACzBC,EAAQ4D,EAAgB5D,MAE5BqD,EAAWnC,KAAOJ,EAAQI,IAAMJ,EAAQ0B,UACxCa,EAAWpC,OAASlB,EAASe,EAAQI,IACrCmC,EAAWrC,MAAQF,EAAQE,KAAOF,EAAQ2B,WAC1CY,EAAWtC,MAAQf,EAAQc,EAAQE,IACrC,CAIF,CAIA,IAAI6C,EAAqC,iBADzCV,EAAUA,GAAW,GAOrB,OALAE,EAAWrC,MAAQ6C,EAAkBV,EAAUA,EAAQnC,MAAQ,EAC/DqC,EAAWnC,KAAO2C,EAAkBV,EAAUA,EAAQjC,KAAO,EAC7DmC,EAAWtC,OAAS8C,EAAkBV,EAAUA,EAAQpC,OAAS,EACjEsC,EAAWpC,QAAU4C,EAAkBV,EAAUA,EAAQlC,QAAU,EAE5DoC,CACT,CAkBA,SAASS,EAAqBC,EAAWC,EAASd,EAAQnG,EAAWqG,GACnE,IAAID,EAAUnE,UAAU/Q,OAAS,QAAsBuL,IAAjBwF,UAAU,GAAmBA,UAAU,GAAK,EAElF,IAAmC,IAA/B+E,EAAU5Q,QAAQ,QACpB,OAAO4Q,EAGT,IAAIV,EAAaJ,EAAcC,EAAQnG,EAAWoG,EAASC,GAEvDa,EAAQ,CACV/C,IAAK,CACHlB,MAAOqD,EAAWrD,MAClBD,OAAQiE,EAAQ9C,IAAMmC,EAAWnC,KAEnCH,MAAO,CACLf,MAAOqD,EAAWtC,MAAQiD,EAAQjD,MAClChB,OAAQsD,EAAWtD,QAErBkB,OAAQ,CACNjB,MAAOqD,EAAWrD,MAClBD,OAAQsD,EAAWpC,OAAS+C,EAAQ/C,QAEtCD,KAAM,CACJhB,MAAOgE,EAAQhD,KAAOqC,EAAWrC,KACjCjB,OAAQsD,EAAWtD,SAInBmE,EAAcxS,OAAOuF,KAAKgN,GAAOzS,IAAI,SAAU/C,GACjD,OAAOiS,EAAS,CACdjS,IAAKA,GACJwV,EAAMxV,GAAM,CACb0V,MAhDWC,EAgDGH,EAAMxV,GA/CZ2V,EAAKpE,MACJoE,EAAKrE,UAFpB,IAAiBqE,CAkDf,GAAGhP,KAAK,SAAUC,EAAGC,GACnB,OAAOA,EAAE6O,KAAO9O,EAAE8O,IACpB,GAEIE,EAAgBH,EAAYtS,OAAO,SAAU0S,GAC/C,IAAItE,EAAQsE,EAAMtE,MACdD,EAASuE,EAAMvE,OACnB,OAAOC,GAASkD,EAAOzB,aAAe1B,GAAUmD,EAAOxB,YACzD,GAEI6C,EAAoBF,EAAcpW,OAAS,EAAIoW,EAAc,GAAG5V,IAAMyV,EAAY,GAAGzV,IAErF+V,EAAYT,EAAUU,MAAM,KAAK,GAErC,OAAOF,GAAqBC,EAAY,IAAMA,EAAY,GAC5D,CAYA,SAASE,EAAoB1b,EAAOka,EAAQnG,GAC1C,IAAImF,EAAgBlD,UAAU/Q,OAAS,QAAsBuL,IAAjBwF,UAAU,GAAmBA,UAAU,GAAK,KAGxF,OAAO+C,EAAqChF,EADnBmF,EAAgBY,EAA6BI,GAAUrF,EAAuBqF,EAAQpG,EAAiBC,IACrDmF,EAC7E,CASA,SAASyC,EAAc/I,GACrB,IACIwD,EADSxD,EAAQI,cAAcC,YACfC,iBAAiBN,GACjCgJ,EAAIpF,WAAWJ,EAAOoD,WAAa,GAAKhD,WAAWJ,EAAOyF,cAAgB,GAC1EC,EAAItF,WAAWJ,EAAOqD,YAAc,GAAKjD,WAAWJ,EAAO2F,aAAe,GAK9E,MAJa,CACX/E,MAAOpE,EAAQgG,YAAckD,EAC7B/E,OAAQnE,EAAQkG,aAAe8C,EAGnC,CASA,SAASI,EAAqBjB,GAC5B,IAAIkB,EAAO,CAAEjE,KAAM,QAASD,MAAO,OAAQE,OAAQ,MAAOC,IAAK,UAC/D,OAAO6C,EAAU3b,QAAQ,yBAA0B,SAAU8c,GAC3D,OAAOD,EAAKC,EACd,EACF,CAYA,SAASC,EAAiBjC,EAAQkC,EAAkBrB,GAClDA,EAAYA,EAAUU,MAAM,KAAK,GAGjC,IAAIY,EAAaV,EAAczB,GAG3BoC,EAAgB,CAClBtF,MAAOqF,EAAWrF,MAClBD,OAAQsF,EAAWtF,QAIjBwF,GAAoD,IAA1C,CAAC,QAAS,QAAQpS,QAAQ4Q,GACpCyB,EAAWD,EAAU,MAAQ,OAC7BE,EAAgBF,EAAU,OAAS,MACnCG,EAAcH,EAAU,SAAW,QACnCI,EAAwBJ,EAAqB,QAAX,SAStC,OAPAD,EAAcE,GAAYJ,EAAiBI,GAAYJ,EAAiBM,GAAe,EAAIL,EAAWK,GAAe,EAEnHJ,EAAcG,GADZ1B,IAAc0B,EACeL,EAAiBK,GAAiBJ,EAAWM,GAE7CP,EAAiBJ,EAAqBS,IAGhEH,CACT,CAWA,SAASpa,EAAK0a,EAAKC,GAEjB,OAAI/a,MAAMiP,UAAU7O,KACX0a,EAAI1a,KAAK2a,GAIXD,EAAIhU,OAAOiU,GAAO,EAC3B,CAoCA,SAASC,EAAaC,EAAWpd,EAAMqd,GAoBrC,YAnB8BxM,IAATwM,EAAqBD,EAAYA,EAAUE,MAAM,EA1BxE,SAAmBL,EAAKM,EAAMle,GAE5B,GAAI8C,MAAMiP,UAAUtH,UAClB,OAAOmT,EAAInT,UAAU,SAAU0T,GAC7B,OAAOA,EAAID,KAAUle,CACvB,GAIF,IAAIoe,EAAQlb,EAAK0a,EAAK,SAAUnF,GAC9B,OAAOA,EAAIyF,KAAUle,CACvB,GACA,OAAO4d,EAAIzS,QAAQiT,EACrB,CAa2E3T,CAAUsT,EAAW,OAAQC,KAEvFhb,QAAQ,SAAU2X,GAC3BA,EAAmB,UAErB0D,QAAQnS,KAAK,yDAEf,IAAIkH,EAAKuH,EAAmB,UAAKA,EAASvH,GACtCuH,EAAS1P,SAAWuI,EAAWJ,KAIjCzS,EAAKmY,QAAQoC,OAASrC,EAAclY,EAAKmY,QAAQoC,QACjDva,EAAKmY,QAAQ/D,UAAY8D,EAAclY,EAAKmY,QAAQ/D,WAEpDpU,EAAOyS,EAAGzS,EAAMga,GAEpB,GAEOha,CACT,CASA,SAASwD,IAEP,IAAIsH,KAAKzK,MAAMsd,YAAf,CAIA,IAAI3d,EAAO,CACT4d,SAAU9S,KACV2L,OAAQ,CAAC,EACToH,YAAa,CAAC,EACdC,WAAY,CAAC,EACbC,SAAS,EACT5F,QAAS,CAAC,GAIZnY,EAAKmY,QAAQ/D,UAAY2H,EAAoBjR,KAAKzK,MAAOyK,KAAKyP,OAAQzP,KAAKsJ,UAAWtJ,KAAKjL,QAAQme,eAKnGhe,EAAKob,UAAYD,EAAqBrQ,KAAKjL,QAAQub,UAAWpb,EAAKmY,QAAQ/D,UAAWtJ,KAAKyP,OAAQzP,KAAKsJ,UAAWtJ,KAAKjL,QAAQud,UAAUa,KAAKxD,kBAAmB3P,KAAKjL,QAAQud,UAAUa,KAAKzD,SAG9Lxa,EAAKke,kBAAoBle,EAAKob,UAE9Bpb,EAAKge,cAAgBlT,KAAKjL,QAAQme,cAGlChe,EAAKmY,QAAQoC,OAASiC,EAAiB1R,KAAKyP,OAAQva,EAAKmY,QAAQ/D,UAAWpU,EAAKob,WAEjFpb,EAAKmY,QAAQoC,OAAO4D,SAAWrT,KAAKjL,QAAQme,cAAgB,QAAU,WAGtEhe,EAAOmd,EAAarS,KAAKsS,UAAWpd,GAI/B8K,KAAKzK,MAAM+d,UAIdtT,KAAKjL,QAAQwe,SAASre,IAHtB8K,KAAKzK,MAAM+d,WAAY,EACvBtT,KAAKjL,QAAQye,SAASte,GApCxB,CAwCF,CAQA,SAASue,EAAkBnB,EAAWoB,GACpC,OAAOpB,EAAUqB,KAAK,SAAUhD,GAC9B,IAAIzU,EAAOyU,EAAKzU,KAEhB,OADcyU,EAAKnR,SACDtD,IAASwX,CAC7B,EACF,CASA,SAASE,EAAyBxL,GAIhC,IAHA,IAAIyL,EAAW,EAAC,EAAO,KAAM,SAAU,MAAO,KAC1CC,EAAY1L,EAAS2L,OAAO,GAAGC,cAAgB5L,EAASoK,MAAM,GAEzDhM,EAAI,EAAGA,EAAIqN,EAASrZ,OAAQgM,IAAK,CACxC,IAAIyN,EAASJ,EAASrN,GAClB0N,EAAUD,EAAS,GAAKA,EAASH,EAAY1L,EACjD,QAA4C,IAAjCf,SAAS0B,KAAKoL,MAAMD,GAC7B,OAAOA,CAEX,CACA,OAAO,IACT,CAOA,SAASE,IAsBP,OArBApU,KAAKzK,MAAMsd,aAAc,EAGrBY,EAAkBzT,KAAKsS,UAAW,gBACpCtS,KAAKyP,OAAO4E,gBAAgB,eAC5BrU,KAAKyP,OAAO0E,MAAMd,SAAW,GAC7BrT,KAAKyP,OAAO0E,MAAM1G,IAAM,GACxBzN,KAAKyP,OAAO0E,MAAM5G,KAAO,GACzBvN,KAAKyP,OAAO0E,MAAM7G,MAAQ,GAC1BtN,KAAKyP,OAAO0E,MAAM3G,OAAS,GAC3BxN,KAAKyP,OAAO0E,MAAMG,WAAa,GAC/BtU,KAAKyP,OAAO0E,MAAMP,EAAyB,cAAgB,IAG7D5T,KAAKuU,wBAIDvU,KAAKjL,QAAQyf,iBACfxU,KAAKyP,OAAO7G,WAAW6L,YAAYzU,KAAKyP,QAEnCzP,IACT,CAOA,SAAS0U,EAAUvM,GACjB,IAAII,EAAgBJ,EAAQI,cAC5B,OAAOA,EAAgBA,EAAcC,YAAc7O,MACrD,CAEA,SAASgb,EAAsB/F,EAAcgG,EAAOC,EAAUC,GAC5D,IAAIC,EAAmC,SAA1BnG,EAAajG,SACtB+D,EAASqI,EAASnG,EAAarG,cAAcC,YAAcoG,EAC/DlC,EAAOsI,iBAAiBJ,EAAOC,EAAU,CAAEI,SAAS,IAE/CF,GACHJ,EAAsB7L,EAAgB4D,EAAO9D,YAAagM,EAAOC,EAAUC,GAE7EA,EAAc/d,KAAK2V,EACrB,CAQA,SAASwI,EAAoB5L,EAAWvU,EAASQ,EAAO4f,GAEtD5f,EAAM4f,YAAcA,EACpBT,EAAUpL,GAAW0L,iBAAiB,SAAUzf,EAAM4f,YAAa,CAAEF,SAAS,IAG9E,IAAIG,EAAgBtM,EAAgBQ,GAKpC,OAJAqL,EAAsBS,EAAe,SAAU7f,EAAM4f,YAAa5f,EAAMuf,eACxEvf,EAAM6f,cAAgBA,EACtB7f,EAAM8f,eAAgB,EAEf9f,CACT,CAQA,SAAS+f,IACFtV,KAAKzK,MAAM8f,gBACdrV,KAAKzK,MAAQ2f,EAAoBlV,KAAKsJ,UAAWtJ,KAAKjL,QAASiL,KAAKzK,MAAOyK,KAAKuV,gBAEpF,CAgCA,SAAShB,IACHvU,KAAKzK,MAAM8f,gBACbG,qBAAqBxV,KAAKuV,gBAC1BvV,KAAKzK,MA3BT,SAA8B+T,EAAW/T,GAcvC,OAZAmf,EAAUpL,GAAWmM,oBAAoB,SAAUlgB,EAAM4f,aAGzD5f,EAAMuf,cAAcvd,QAAQ,SAAUmV,GACpCA,EAAO+I,oBAAoB,SAAUlgB,EAAM4f,YAC7C,GAGA5f,EAAM4f,YAAc,KACpB5f,EAAMuf,cAAgB,GACtBvf,EAAM6f,cAAgB,KACtB7f,EAAM8f,eAAgB,EACf9f,CACT,CAYiBmgB,CAAqB1V,KAAKsJ,UAAWtJ,KAAKzK,OAE3D,CASA,SAASogB,EAAUC,GACjB,MAAa,KAANA,IAAaC,MAAM9J,WAAW6J,KAAOE,SAASF,EACvD,CAUA,SAASG,GAAU5N,EAASwD,GAC1B1N,OAAOuF,KAAKmI,GAAQpU,QAAQ,SAAUkb,GACpC,IAAIuD,EAAO,IAEkE,IAAzE,CAAC,QAAS,SAAU,MAAO,QAAS,SAAU,QAAQtW,QAAQ+S,IAAgBkD,EAAUhK,EAAO8G,MACjGuD,EAAO,MAET7N,EAAQgM,MAAM1B,GAAQ9G,EAAO8G,GAAQuD,CACvC,EACF,CA8HA,IAAIC,GAAY7O,GAAa,WAAWgC,KAAK9B,UAAUG,WA8GvD,SAASyO,GAAmB5D,EAAW6D,EAAgBC,GACrD,IAAIC,EAAa5e,EAAK6a,EAAW,SAAU3B,GAEzC,OADWA,EAAKzU,OACAia,CAClB,GAEIG,IAAeD,GAAc/D,EAAUqB,KAAK,SAAUzE,GACxD,OAAOA,EAAShT,OAASka,GAAiBlH,EAAS1P,SAAW0P,EAAS3E,MAAQ8L,EAAW9L,KAC5F,GAEA,IAAK+L,EAAY,CACf,IAAIC,EAAc,IAAMJ,EAAiB,IACrCK,EAAY,IAAMJ,EAAgB,IACtCxD,QAAQnS,KAAK+V,EAAY,4BAA8BD,EAAc,4DAA8DA,EAAc,IACnJ,CACA,OAAOD,CACT,CAmIA,IAAIG,GAAa,CAAC,aAAc,OAAQ,WAAY,YAAa,MAAO,UAAW,cAAe,QAAS,YAAa,aAAc,SAAU,eAAgB,WAAY,OAAQ,cAGhLC,GAAkBD,GAAWjE,MAAM,GAYvC,SAASmE,GAAUrG,GACjB,IAAIsG,EAAUrL,UAAU/Q,OAAS,QAAsBuL,IAAjBwF,UAAU,IAAmBA,UAAU,GAEzE1F,EAAQ6Q,GAAgBhX,QAAQ4Q,GAChC6B,EAAMuE,GAAgBlE,MAAM3M,EAAQ,GAAGxH,OAAOqY,GAAgBlE,MAAM,EAAG3M,IAC3E,OAAO+Q,EAAUzE,EAAI0E,UAAY1E,CACnC,CAifA,IAAIG,GAAY,CASdwE,MAAO,CAELvM,MAAO,IAEP/K,SAAS,EAETmI,GA9HJ,SAAezS,GACb,IAAIob,EAAYpb,EAAKob,UACjByG,EAAgBzG,EAAUU,MAAM,KAAK,GACrCgG,EAAiB1G,EAAUU,MAAM,KAAK,GAG1C,GAAIgG,EAAgB,CAClB,IAAIC,EAAgB/hB,EAAKmY,QACrB/D,EAAY2N,EAAc3N,UAC1BmG,EAASwH,EAAcxH,OAEvByH,GAA2D,IAA9C,CAAC,SAAU,OAAOxX,QAAQqX,GACvCI,EAAOD,EAAa,OAAS,MAC7BjF,EAAciF,EAAa,QAAU,SAErCE,EAAe,CACjBzM,MAAO5D,EAAe,CAAC,EAAGoQ,EAAM7N,EAAU6N,IAC1CvM,IAAK7D,EAAe,CAAC,EAAGoQ,EAAM7N,EAAU6N,GAAQ7N,EAAU2I,GAAexC,EAAOwC,KAGlF/c,EAAKmY,QAAQoC,OAASxC,EAAS,CAAC,EAAGwC,EAAQ2H,EAAaJ,GAC1D,CAEA,OAAO9hB,CACT,GA+IE0N,OAAQ,CAEN2H,MAAO,IAEP/K,SAAS,EAETmI,GA7RJ,SAAgBzS,EAAMyb,GACpB,IAQItD,EARAzK,EAAS+N,EAAK/N,OACd0N,EAAYpb,EAAKob,UACjB2G,EAAgB/hB,EAAKmY,QACrBoC,EAASwH,EAAcxH,OACvBnG,EAAY2N,EAAc3N,UAE1ByN,EAAgBzG,EAAUU,MAAM,KAAK,GAwBzC,OApBE3D,EADEsI,GAAW/S,GACH,EAAEA,EAAQ,GAvFxB,SAAqBA,EAAQiP,EAAeF,EAAkBoF,GAC5D,IAAI1J,EAAU,CAAC,EAAG,GAKdgK,GAA0D,IAA9C,CAAC,QAAS,QAAQ3X,QAAQqX,GAItCO,EAAY1U,EAAOoO,MAAM,WAAWjT,IAAI,SAAUwZ,GACpD,OAAOA,EAAKpU,MACd,GAIIqU,EAAUF,EAAU5X,QAAQjI,EAAK6f,EAAW,SAAUC,GACxD,OAAgC,IAAzBA,EAAKzU,OAAO,OACrB,IAEIwU,EAAUE,KAAiD,IAArCF,EAAUE,GAAS9X,QAAQ,MACnDkT,QAAQnS,KAAK,gFAKf,IAAIgX,EAAa,cACbC,GAAmB,IAAbF,EAAiB,CAACF,EAAU9E,MAAM,EAAGgF,GAASnZ,OAAO,CAACiZ,EAAUE,GAASxG,MAAMyG,GAAY,KAAM,CAACH,EAAUE,GAASxG,MAAMyG,GAAY,IAAIpZ,OAAOiZ,EAAU9E,MAAMgF,EAAU,KAAO,CAACF,GAqC9L,OAlCAI,EAAMA,EAAI3Z,IAAI,SAAU4Z,EAAI9R,GAE1B,IAAIoM,GAAyB,IAAVpM,GAAewR,EAAYA,GAAa,SAAW,QAClEO,GAAoB,EACxB,OAAOD,EAGNE,OAAO,SAAUjW,EAAGC,GACnB,MAAwB,KAApBD,EAAEA,EAAEpH,OAAS,KAAwC,IAA3B,CAAC,IAAK,KAAKkF,QAAQmC,IAC/CD,EAAEA,EAAEpH,OAAS,GAAKqH,EAClB+V,GAAoB,EACbhW,GACEgW,GACThW,EAAEA,EAAEpH,OAAS,IAAMqH,EACnB+V,GAAoB,EACbhW,GAEAA,EAAEvD,OAAOwD,EAEpB,EAAG,IAEF9D,IAAI,SAAU+Z,GACb,OAxGN,SAAiBA,EAAK7F,EAAaJ,EAAeF,GAEhD,IAAIX,EAAQ8G,EAAInF,MAAM,6BAClBpe,GAASyc,EAAM,GACfgF,EAAOhF,EAAM,GAGjB,OAAKzc,EAIqB,IAAtByhB,EAAKtW,QAAQ,KAYJ0N,EATJ,OADC4I,EAEMnE,EAKAF,GAIFM,GAAe,IAAM1d,EACf,OAATyhB,GAA0B,OAATA,GAGb,OAATA,EACK9J,KAAKC,IAAI9E,SAASyC,gBAAgBmE,aAActU,OAAOqW,aAAe,GAEtE9D,KAAKC,IAAI9E,SAASyC,gBAAgBkE,YAAarU,OAAOoW,YAAc,IAE/D,IAAMxb,EAIbA,EA7BAujB,CA+BX,CAiEaC,CAAQD,EAAK7F,EAAaJ,EAAeF,EAClD,EACF,IAGIpa,QAAQ,SAAUogB,EAAI9R,GACxB8R,EAAGpgB,QAAQ,SAAUggB,EAAMS,GACrBrC,EAAU4B,KACZlK,EAAQxH,IAAU0R,GAA2B,MAAnBI,EAAGK,EAAS,IAAc,EAAI,GAE5D,EACF,GACO3K,CACT,CAwBc4K,CAAYrV,EAAQ6M,EAAQnG,EAAWyN,GAG7B,SAAlBA,GACFtH,EAAOhC,KAAOJ,EAAQ,GACtBoC,EAAOlC,MAAQF,EAAQ,IACI,UAAlB0J,GACTtH,EAAOhC,KAAOJ,EAAQ,GACtBoC,EAAOlC,MAAQF,EAAQ,IACI,QAAlB0J,GACTtH,EAAOlC,MAAQF,EAAQ,GACvBoC,EAAOhC,KAAOJ,EAAQ,IACK,WAAlB0J,IACTtH,EAAOlC,MAAQF,EAAQ,GACvBoC,EAAOhC,KAAOJ,EAAQ,IAGxBnY,EAAKua,OAASA,EACPva,CACT,EAiQI0N,OAAQ,GAoBVsV,gBAAiB,CAEf3N,MAAO,IAEP/K,SAAS,EAETmI,GAlRJ,SAAyBzS,EAAMH,GAC7B,IAAI4a,EAAoB5a,EAAQ4a,mBAAqB9F,EAAgB3U,EAAK4d,SAASrD,QAK/Eva,EAAK4d,SAASxJ,YAAcqG,IAC9BA,EAAoB9F,EAAgB8F,IAMtC,IAAIwI,EAAgBvE,EAAyB,aACzCwE,EAAeljB,EAAK4d,SAASrD,OAAO0E,MACpC1G,EAAM2K,EAAa3K,IACnBF,EAAO6K,EAAa7K,KACpB8K,EAAYD,EAAaD,GAE7BC,EAAa3K,IAAM,GACnB2K,EAAa7K,KAAO,GACpB6K,EAAaD,GAAiB,GAE9B,IAAIvI,EAAaJ,EAActa,EAAK4d,SAASrD,OAAQva,EAAK4d,SAASxJ,UAAWvU,EAAQ2a,QAASC,EAAmBza,EAAKge,eAIvHkF,EAAa3K,IAAMA,EACnB2K,EAAa7K,KAAOA,EACpB6K,EAAaD,GAAiBE,EAE9BtjB,EAAQ6a,WAAaA,EAErB,IAAIrF,EAAQxV,EAAQujB,SAChB7I,EAASva,EAAKmY,QAAQoC,OAEtB2C,EAAQ,CACVmG,QAAS,SAAiBjI,GACxB,IAAI/b,EAAQkb,EAAOa,GAInB,OAHIb,EAAOa,GAAaV,EAAWU,KAAevb,EAAQyjB,sBACxDjkB,EAAQ2X,KAAKC,IAAIsD,EAAOa,GAAYV,EAAWU,KAE1CvJ,EAAe,CAAC,EAAGuJ,EAAW/b,EACvC,EACAkkB,UAAW,SAAmBnI,GAC5B,IAAIyB,EAAyB,UAAdzB,EAAwB,OAAS,MAC5C/b,EAAQkb,EAAOsC,GAInB,OAHItC,EAAOa,GAAaV,EAAWU,KAAevb,EAAQyjB,sBACxDjkB,EAAQ2X,KAAKwM,IAAIjJ,EAAOsC,GAAWnC,EAAWU,IAA4B,UAAdA,EAAwBb,EAAOlD,MAAQkD,EAAOnD,UAErGvF,EAAe,CAAC,EAAGgL,EAAUxd,EACtC,GAUF,OAPAgW,EAAMhT,QAAQ,SAAU+Y,GACtB,IAAI6G,GAA+C,IAAxC,CAAC,OAAQ,OAAOzX,QAAQ4Q,GAAoB,UAAY,YACnEb,EAASxC,EAAS,CAAC,EAAGwC,EAAQ2C,EAAM+E,GAAM7G,GAC5C,GAEApb,EAAKmY,QAAQoC,OAASA,EAEfva,CACT,EA0NIojB,SAAU,CAAC,OAAQ,QAAS,MAAO,UAOnC5I,QAAS,EAMTC,kBAAmB,gBAYrBgJ,aAAc,CAEZpO,MAAO,IAEP/K,SAAS,EAETmI,GAlgBJ,SAAsBzS,GACpB,IAAI+hB,EAAgB/hB,EAAKmY,QACrBoC,EAASwH,EAAcxH,OACvBnG,EAAY2N,EAAc3N,UAE1BgH,EAAYpb,EAAKob,UAAUU,MAAM,KAAK,GACtC4H,EAAQ1M,KAAK0M,MACb1B,GAAuD,IAA1C,CAAC,MAAO,UAAUxX,QAAQ4Q,GACvC6G,EAAOD,EAAa,QAAU,SAC9B2B,EAAS3B,EAAa,OAAS,MAC/BjF,EAAciF,EAAa,QAAU,SASzC,OAPIzH,EAAO0H,GAAQyB,EAAMtP,EAAUuP,MACjC3jB,EAAKmY,QAAQoC,OAAOoJ,GAAUD,EAAMtP,EAAUuP,IAAWpJ,EAAOwC,IAE9DxC,EAAOoJ,GAAUD,EAAMtP,EAAU6N,MACnCjiB,EAAKmY,QAAQoC,OAAOoJ,GAAUD,EAAMtP,EAAU6N,KAGzCjiB,CACT,GA2fE4jB,MAAO,CAELvO,MAAO,IAEP/K,SAAS,EAETmI,GApxBJ,SAAezS,EAAMH,GACnB,IAAIgkB,EAGJ,IAAK7C,GAAmBhhB,EAAK4d,SAASR,UAAW,QAAS,gBACxD,OAAOpd,EAGT,IAAI8jB,EAAejkB,EAAQoT,QAG3B,GAA4B,iBAAjB6Q,GAIT,KAHAA,EAAe9jB,EAAK4d,SAASrD,OAAOwJ,cAAcD,IAIhD,OAAO9jB,OAKT,IAAKA,EAAK4d,SAASrD,OAAOvE,SAAS8N,GAEjC,OADApG,QAAQnS,KAAK,iEACNvL,EAIX,IAAIob,EAAYpb,EAAKob,UAAUU,MAAM,KAAK,GACtCiG,EAAgB/hB,EAAKmY,QACrBoC,EAASwH,EAAcxH,OACvBnG,EAAY2N,EAAc3N,UAE1B4N,GAAuD,IAA1C,CAAC,OAAQ,SAASxX,QAAQ4Q,GAEvC4I,EAAMhC,EAAa,SAAW,QAC9BiC,EAAkBjC,EAAa,MAAQ,OACvCC,EAAOgC,EAAgBC,cACvBC,EAAUnC,EAAa,OAAS,MAChC2B,EAAS3B,EAAa,SAAW,QACjCoC,EAAmBpI,EAAc8H,GAAcE,GAQ/C5P,EAAUuP,GAAUS,EAAmB7J,EAAO0H,KAChDjiB,EAAKmY,QAAQoC,OAAO0H,IAAS1H,EAAO0H,IAAS7N,EAAUuP,GAAUS,IAG/DhQ,EAAU6N,GAAQmC,EAAmB7J,EAAOoJ,KAC9C3jB,EAAKmY,QAAQoC,OAAO0H,IAAS7N,EAAU6N,GAAQmC,EAAmB7J,EAAOoJ,IAE3E3jB,EAAKmY,QAAQoC,OAASrC,EAAclY,EAAKmY,QAAQoC,QAGjD,IAAI8J,EAASjQ,EAAU6N,GAAQ7N,EAAU4P,GAAO,EAAII,EAAmB,EAInEhR,EAAMJ,EAAyBhT,EAAK4d,SAASrD,QAC7C+J,EAAmBzN,WAAWzD,EAAI,SAAW6Q,IAC7CM,EAAmB1N,WAAWzD,EAAI,SAAW6Q,EAAkB,UAC/DO,EAAYH,EAASrkB,EAAKmY,QAAQoC,OAAO0H,GAAQqC,EAAmBC,EAQxE,OALAC,EAAYxN,KAAKC,IAAID,KAAKwM,IAAIjJ,EAAOyJ,GAAOI,EAAkBI,GAAY,GAE1ExkB,EAAK8jB,aAAeA,EACpB9jB,EAAKmY,QAAQyL,OAAmC/R,EAA1BgS,EAAsB,CAAC,EAAuC5B,EAAMjL,KAAKyN,MAAMD,IAAa3S,EAAegS,EAAqBM,EAAS,IAAKN,GAE7J7jB,CACT,EA6sBIiT,QAAS,aAcXgL,KAAM,CAEJ5I,MAAO,IAEP/K,SAAS,EAETmI,GA5oBJ,SAAczS,EAAMH,GAElB,GAAI0e,EAAkBve,EAAK4d,SAASR,UAAW,SAC7C,OAAOpd,EAGT,GAAIA,EAAK+d,SAAW/d,EAAKob,YAAcpb,EAAKke,kBAE1C,OAAOle,EAGT,IAAI0a,EAAaJ,EAActa,EAAK4d,SAASrD,OAAQva,EAAK4d,SAASxJ,UAAWvU,EAAQ2a,QAAS3a,EAAQ4a,kBAAmBza,EAAKge,eAE3H5C,EAAYpb,EAAKob,UAAUU,MAAM,KAAK,GACtC4I,EAAoBrI,EAAqBjB,GACzCS,EAAY7b,EAAKob,UAAUU,MAAM,KAAK,IAAM,GAE5C6I,EAAY,GAEhB,OAAQ9kB,EAAQ+kB,UACd,IAhCI,OAiCFD,EAAY,CAACvJ,EAAWsJ,GACxB,MACF,IAlCS,YAmCPC,EAAYlD,GAAUrG,GACtB,MACF,IApCgB,mBAqCduJ,EAAYlD,GAAUrG,GAAW,GACjC,MACF,QACEuJ,EAAY9kB,EAAQ+kB,SAyDxB,OAtDAD,EAAUtiB,QAAQ,SAAUwiB,EAAMlU,GAChC,GAAIyK,IAAcyJ,GAAQF,EAAUrf,SAAWqL,EAAQ,EACrD,OAAO3Q,EAGTob,EAAYpb,EAAKob,UAAUU,MAAM,KAAK,GACtC4I,EAAoBrI,EAAqBjB,GAEzC,IAAIuB,EAAgB3c,EAAKmY,QAAQoC,OAC7BuK,EAAa9kB,EAAKmY,QAAQ/D,UAG1BsP,EAAQ1M,KAAK0M,MACbqB,EAA4B,SAAd3J,GAAwBsI,EAAM/G,EAAcvE,OAASsL,EAAMoB,EAAWzM,OAAuB,UAAd+C,GAAyBsI,EAAM/G,EAActE,MAAQqL,EAAMoB,EAAW1M,QAAwB,QAAdgD,GAAuBsI,EAAM/G,EAAcrE,QAAUoL,EAAMoB,EAAWvM,MAAsB,WAAd6C,GAA0BsI,EAAM/G,EAAcpE,KAAOmL,EAAMoB,EAAWxM,QAEjU0M,EAAgBtB,EAAM/G,EAActE,MAAQqL,EAAMhJ,EAAWrC,MAC7D4M,EAAiBvB,EAAM/G,EAAcvE,OAASsL,EAAMhJ,EAAWtC,OAC/D8M,EAAexB,EAAM/G,EAAcpE,KAAOmL,EAAMhJ,EAAWnC,KAC3D4M,EAAkBzB,EAAM/G,EAAcrE,QAAUoL,EAAMhJ,EAAWpC,QAEjE8M,EAAoC,SAAdhK,GAAwB4J,GAA+B,UAAd5J,GAAyB6J,GAAgC,QAAd7J,GAAuB8J,GAA8B,WAAd9J,GAA0B+J,EAG3KnD,GAAuD,IAA1C,CAAC,MAAO,UAAUxX,QAAQ4Q,GAGvCiK,IAA0BxlB,EAAQylB,iBAAmBtD,GAA4B,UAAdnG,GAAyBmJ,GAAiBhD,GAA4B,QAAdnG,GAAuBoJ,IAAmBjD,GAA4B,UAAdnG,GAAyBqJ,IAAiBlD,GAA4B,QAAdnG,GAAuBsJ,GAGlQI,IAA8B1lB,EAAQ2lB,0BAA4BxD,GAA4B,UAAdnG,GAAyBoJ,GAAkBjD,GAA4B,QAAdnG,GAAuBmJ,IAAkBhD,GAA4B,UAAdnG,GAAyBsJ,IAAoBnD,GAA4B,QAAdnG,GAAuBqJ,GAElRO,EAAmBJ,GAAyBE,GAE5CR,GAAeK,GAAuBK,KAExCzlB,EAAK+d,SAAU,GAEXgH,GAAeK,KACjBhK,EAAYuJ,EAAUhU,EAAQ,IAG5B8U,IACF5J,EAvJR,SAA8BA,GAC5B,MAAkB,QAAdA,EACK,QACgB,UAAdA,EACF,MAEFA,CACT,CAgJoB6J,CAAqB7J,IAGnC7b,EAAKob,UAAYA,GAAaS,EAAY,IAAMA,EAAY,IAI5D7b,EAAKmY,QAAQoC,OAASxC,EAAS,CAAC,EAAG/X,EAAKmY,QAAQoC,OAAQiC,EAAiBxc,EAAK4d,SAASrD,OAAQva,EAAKmY,QAAQ/D,UAAWpU,EAAKob,YAE5Hpb,EAAOmd,EAAand,EAAK4d,SAASR,UAAWpd,EAAM,QAEvD,GACOA,CACT,EA2jBI4kB,SAAU,OAKVpK,QAAS,EAOTC,kBAAmB,WAQnB6K,gBAAgB,EAQhBE,yBAAyB,GAU3BG,MAAO,CAELtQ,MAAO,IAEP/K,SAAS,EAETmI,GArQJ,SAAezS,GACb,IAAIob,EAAYpb,EAAKob,UACjByG,EAAgBzG,EAAUU,MAAM,KAAK,GACrCiG,EAAgB/hB,EAAKmY,QACrBoC,EAASwH,EAAcxH,OACvBnG,EAAY2N,EAAc3N,UAE1BwI,GAAwD,IAA9C,CAAC,OAAQ,SAASpS,QAAQqX,GAEpC+D,GAA6D,IAA5C,CAAC,MAAO,QAAQpb,QAAQqX,GAO7C,OALAtH,EAAOqC,EAAU,OAAS,OAASxI,EAAUyN,IAAkB+D,EAAiBrL,EAAOqC,EAAU,QAAU,UAAY,GAEvH5c,EAAKob,UAAYiB,EAAqBjB,GACtCpb,EAAKmY,QAAQoC,OAASrC,EAAcqC,GAE7Bva,CACT,GAiQE6lB,KAAM,CAEJxQ,MAAO,IAEP/K,SAAS,EAETmI,GA9TJ,SAAczS,GACZ,IAAKghB,GAAmBhhB,EAAK4d,SAASR,UAAW,OAAQ,mBACvD,OAAOpd,EAGT,IAAIqb,EAAUrb,EAAKmY,QAAQ/D,UACvB0R,EAAQvjB,EAAKvC,EAAK4d,SAASR,UAAW,SAAUpD,GAClD,MAAyB,oBAAlBA,EAAShT,IAClB,GAAG0T,WAEH,GAAIW,EAAQ/C,OAASwN,EAAMvN,KAAO8C,EAAQhD,KAAOyN,EAAM1N,OAASiD,EAAQ9C,IAAMuN,EAAMxN,QAAU+C,EAAQjD,MAAQ0N,EAAMzN,KAAM,CAExH,IAAkB,IAAdrY,EAAK6lB,KACP,OAAO7lB,EAGTA,EAAK6lB,MAAO,EACZ7lB,EAAK8d,WAAW,uBAAyB,EAC3C,KAAO,CAEL,IAAkB,IAAd9d,EAAK6lB,KACP,OAAO7lB,EAGTA,EAAK6lB,MAAO,EACZ7lB,EAAK8d,WAAW,wBAAyB,CAC3C,CAEA,OAAO9d,CACT,GAmTE+lB,aAAc,CAEZ1Q,MAAO,IAEP/K,SAAS,EAETmI,GAtgCJ,SAAsBzS,EAAMH,GAC1B,IAAIoc,EAAIpc,EAAQoc,EACZE,EAAItc,EAAQsc,EACZ5B,EAASva,EAAKmY,QAAQoC,OAItByL,EAA8BzjB,EAAKvC,EAAK4d,SAASR,UAAW,SAAUpD,GACxE,MAAyB,eAAlBA,EAAShT,IAClB,GAAGif,qBACiCpV,IAAhCmV,GACFtI,QAAQnS,KAAK,iIAEf,IA6BI8M,EACAE,EA9BA0N,OAAkDpV,IAAhCmV,EAA4CA,EAA8BnmB,EAAQomB,gBAEpGnR,EAAeH,EAAgB3U,EAAK4d,SAASrD,QAC7C2L,EAAmB1N,EAAsB1D,GAGzC2B,EAAS,CACX0H,SAAU5D,EAAO4D,UAGfhG,EA9DN,SAA2BnY,EAAMmmB,GAC/B,IAAIpE,EAAgB/hB,EAAKmY,QACrBoC,EAASwH,EAAcxH,OACvBnG,EAAY2N,EAAc3N,UAC1BqQ,EAAQzN,KAAKyN,MACbf,EAAQ1M,KAAK0M,MAEb0C,EAAU,SAAiBC,GAC7B,OAAOA,CACT,EAEIC,EAAiB7B,EAAMrQ,EAAUiD,OACjCkP,EAAc9B,EAAMlK,EAAOlD,OAE3B2K,GAA4D,IAA/C,CAAC,OAAQ,SAASxX,QAAQxK,EAAKob,WAC5CoL,GAA+C,IAAjCxmB,EAAKob,UAAU5Q,QAAQ,KAIrCic,EAAuBN,EAAwBnE,GAAcwE,GAH3CF,EAAiB,GAAMC,EAAc,EAGuC9B,EAAQf,EAAjE0C,EACrCM,EAAqBP,EAAwB1B,EAAV2B,EAEvC,MAAO,CACL/N,KAAMoO,EANWH,EAAiB,GAAM,GAAKC,EAAc,GAAM,IAMtBC,GAAeL,EAAc5L,EAAOlC,KAAO,EAAIkC,EAAOlC,MACjGE,IAAKmO,EAAkBnM,EAAOhC,KAC9BD,OAAQoO,EAAkBnM,EAAOjC,QACjCF,MAAOqO,EAAoBlM,EAAOnC,OAEtC,CAkCgBuO,CAAkB3mB,EAAMyE,OAAOmiB,iBAAmB,IAAM7F,IAElEpK,EAAc,WAANsF,EAAiB,MAAQ,SACjCrF,EAAc,UAANuF,EAAgB,OAAS,QAKjC0K,EAAmBnI,EAAyB,aAiChD,GAhBInG,EAJU,WAAV5B,EAG4B,SAA1B7B,EAAarB,UACRqB,EAAaiE,aAAeZ,EAAQG,QAEpC4N,EAAiB9O,OAASe,EAAQG,OAGrCH,EAAQI,IAIZF,EAFU,UAAVzB,EAC4B,SAA1B9B,EAAarB,UACPqB,EAAagE,YAAcX,EAAQC,OAEnC8N,EAAiB7O,MAAQc,EAAQC,MAGpCD,EAAQE,KAEb4N,GAAmBY,EACrBpQ,EAAOoQ,GAAoB,eAAiBxO,EAAO,OAASE,EAAM,SAClE9B,EAAOE,GAAS,EAChBF,EAAOG,GAAS,EAChBH,EAAO2I,WAAa,gBACf,CAEL,IAAI0H,EAAsB,WAAVnQ,GAAsB,EAAI,EACtCoQ,EAAuB,UAAVnQ,GAAqB,EAAI,EAC1CH,EAAOE,GAAS4B,EAAMuO,EACtBrQ,EAAOG,GAASyB,EAAO0O,EACvBtQ,EAAO2I,WAAazI,EAAQ,KAAOC,CACrC,CAGA,IAAIkH,EAAa,CACf,cAAe9d,EAAKob,WAQtB,OAJApb,EAAK8d,WAAa/F,EAAS,CAAC,EAAG+F,EAAY9d,EAAK8d,YAChD9d,EAAKyW,OAASsB,EAAS,CAAC,EAAGtB,EAAQzW,EAAKyW,QACxCzW,EAAK6d,YAAc9F,EAAS,CAAC,EAAG/X,EAAKmY,QAAQyL,MAAO5jB,EAAK6d,aAElD7d,CACT,EAm7BIimB,iBAAiB,EAMjBhK,EAAG,SAMHE,EAAG,SAkBL6K,WAAY,CAEV3R,MAAO,IAEP/K,SAAS,EAETmI,GAzpCJ,SAAoBzS,GApBpB,IAAuBiT,EAAS6K,EAoC9B,OAXA+C,GAAU7gB,EAAK4d,SAASrD,OAAQva,EAAKyW,QAzBhBxD,EA6BPjT,EAAK4d,SAASrD,OA7BEuD,EA6BM9d,EAAK8d,WA5BzC/U,OAAOuF,KAAKwP,GAAYzb,QAAQ,SAAUkb,IAE1B,IADFO,EAAWP,GAErBtK,EAAQgU,aAAa1J,EAAMO,EAAWP,IAEtCtK,EAAQkM,gBAAgB5B,EAE5B,GAwBIvd,EAAK8jB,cAAgB/a,OAAOuF,KAAKtO,EAAK6d,aAAavY,QACrDub,GAAU7gB,EAAK8jB,aAAc9jB,EAAK6d,aAG7B7d,CACT,EA0oCIknB,OA9nCJ,SAA0B9S,EAAWmG,EAAQ1a,EAASsnB,EAAiB9mB,GAErE,IAAIoc,EAAmBV,EAAoB1b,EAAOka,EAAQnG,EAAWvU,EAAQme,eAKzE5C,EAAYD,EAAqBtb,EAAQub,UAAWqB,EAAkBlC,EAAQnG,EAAWvU,EAAQud,UAAUa,KAAKxD,kBAAmB5a,EAAQud,UAAUa,KAAKzD,SAQ9J,OANAD,EAAO0M,aAAa,cAAe7L,GAInCyF,GAAUtG,EAAQ,CAAE4D,SAAUte,EAAQme,cAAgB,QAAU,aAEzDne,CACT,EAqnCIomB,qBAAiBpV,IAuCjBuW,GAAW,CAKbhM,UAAW,SAMX4C,eAAe,EAMfmC,eAAe,EAOfb,iBAAiB,EAQjBhB,SAAU,WAAqB,EAU/BD,SAAU,WAAqB,EAO/BjB,UAAWA,IAeTiK,GAAS,WASX,SAASA,EAAOjT,EAAWmG,GACzB,IAAI+M,EAAQxc,KAERjL,EAAUwW,UAAU/Q,OAAS,QAAsBuL,IAAjBwF,UAAU,GAAmBA,UAAU,GAAK,CAAC,GA3jElE,SAAUuH,EAAUjG,GACvC,KAAMiG,aAAoBjG,GACxB,MAAM,IAAIhG,UAAU,oCAExB,CAwjEI4V,CAAezc,KAAMuc,GAErBvc,KAAKuV,eAAiB,WACpB,OAAOmH,sBAAsBF,EAAM9jB,OACrC,EAGAsH,KAAKtH,OAASgP,EAAS1H,KAAKtH,OAAOikB,KAAK3c,OAGxCA,KAAKjL,QAAUkY,EAAS,CAAC,EAAGsP,EAAOD,SAAUvnB,GAG7CiL,KAAKzK,MAAQ,CACXsd,aAAa,EACbS,WAAW,EACXwB,cAAe,IAIjB9U,KAAKsJ,UAAYA,GAAaA,EAAUsT,OAAStT,EAAU,GAAKA,EAChEtJ,KAAKyP,OAASA,GAAUA,EAAOmN,OAASnN,EAAO,GAAKA,EAGpDzP,KAAKjL,QAAQud,UAAY,CAAC,EAC1BrU,OAAOuF,KAAKyJ,EAAS,CAAC,EAAGsP,EAAOD,SAAShK,UAAWvd,EAAQud,YAAY/a,QAAQ,SAAU2E,GACxFsgB,EAAMznB,QAAQud,UAAUpW,GAAQ+Q,EAAS,CAAC,EAAGsP,EAAOD,SAAShK,UAAUpW,IAAS,CAAC,EAAGnH,EAAQud,UAAYvd,EAAQud,UAAUpW,GAAQ,CAAC,EACrI,GAGA8D,KAAKsS,UAAYrU,OAAOuF,KAAKxD,KAAKjL,QAAQud,WAAWvU,IAAI,SAAU7B,GACjE,OAAO+Q,EAAS,CACd/Q,KAAMA,GACLsgB,EAAMznB,QAAQud,UAAUpW,GAC7B,GAECyF,KAAK,SAAUC,EAAGC,GACjB,OAAOD,EAAE2I,MAAQ1I,EAAE0I,KACrB,GAMAvK,KAAKsS,UAAU/a,QAAQ,SAAU8kB,GAC3BA,EAAgB7c,SAAWuI,EAAWsU,EAAgBD,SACxDC,EAAgBD,OAAOI,EAAMlT,UAAWkT,EAAM/M,OAAQ+M,EAAMznB,QAASsnB,EAAiBG,EAAMjnB,MAEhG,GAGAyK,KAAKtH,SAEL,IAAI2c,EAAgBrV,KAAKjL,QAAQsgB,cAC7BA,GAEFrV,KAAKsV,uBAGPtV,KAAKzK,MAAM8f,cAAgBA,CAC7B,CAoDA,OA9CA7I,EAAY+P,EAAQ,CAAC,CACnBvhB,IAAK,SACLzG,MAAO,WACL,OAAOmE,EAAOiO,KAAK3G,KACrB,GACC,CACDhF,IAAK,UACLzG,MAAO,WACL,OAAO6f,EAAQzN,KAAK3G,KACtB,GACC,CACDhF,IAAK,uBACLzG,MAAO,WACL,OAAO+gB,EAAqB3O,KAAK3G,KACnC,GACC,CACDhF,IAAK,wBACLzG,MAAO,WACL,OAAOggB,EAAsB5N,KAAK3G,KACpC,KA2BKuc,CACT,CA9Ha,GAqJbA,GAAOM,OAA2B,oBAAXljB,OAAyBA,OAAS,EAAAmjB,GAAQC,YACjER,GAAO9F,WAAaA,GACpB8F,GAAOD,SAAWA,GAElB,Y,ICzhFI,G,sBAEJ,SAASU,KACFA,GAAWC,OACdD,GAAWC,MAAO,EAClB,IAAyC,IAlC7C,WACE,IAAIC,EAAKvjB,OAAO2N,UAAUG,UACtB0V,EAAOD,EAAGxd,QAAQ,SAEtB,GAAIyd,EAAO,EAET,OAAO/Q,SAAS8Q,EAAGE,UAAUD,EAAO,EAAGD,EAAGxd,QAAQ,IAAKyd,IAAQ,IAKjE,GAFcD,EAAGxd,QAAQ,YAEX,EAAG,CAEf,IAAI2d,EAAKH,EAAGxd,QAAQ,OACpB,OAAO0M,SAAS8Q,EAAGE,UAAUC,EAAK,EAAGH,EAAGxd,QAAQ,IAAK2d,IAAM,GAC7D,CAEA,IAAIC,EAAOJ,EAAGxd,QAAQ,SAEtB,OAAI4d,EAAO,EAEFlR,SAAS8Q,EAAGE,UAAUE,EAAO,EAAGJ,EAAGxd,QAAQ,IAAK4d,IAAQ,KAIzD,CACV,CAQWC,GAEX,CAmFA,SAASC,GAAmBC,EAAUtJ,EAAOuJ,EAAQC,EAASC,EAAsBC,EAElFC,EAAYC,EAAgBC,EAAmBC,GACrB,kBAAfH,IACTE,EAAoBD,EACpBA,EAAiBD,EACjBA,GAAa,GAIf,IAiBII,EAjBAnpB,EAA4B,mBAAX2oB,EAAwBA,EAAO3oB,QAAU2oB,EAsD9D,GApDID,GAAYA,EAASU,SACvBppB,EAAQopB,OAASV,EAASU,OAC1BppB,EAAQqpB,gBAAkBX,EAASW,gBACnCrpB,EAAQspB,WAAY,EAEhBT,IACF7oB,EAAQupB,YAAa,IAKrBX,IACF5oB,EAAQwpB,SAAWZ,GAKjBE,GAEFK,EAAO,SAAcjlB,IAEnBA,EAAUA,GACV+G,KAAKwe,QAAUxe,KAAKwe,OAAOC,YAC3Bze,KAAKwO,QAAUxO,KAAKwO,OAAOgQ,QAAUxe,KAAKwO,OAAOgQ,OAAOC,aAGT,oBAAxBC,sBACrBzlB,EAAUylB,qBAIRvK,GACFA,EAAMxN,KAAK3G,KAAMge,EAAkB/kB,IAIjCA,GAAWA,EAAQ0lB,uBACrB1lB,EAAQ0lB,sBAAsBC,IAAIf,EAEtC,EAIA9oB,EAAQ8pB,aAAeX,GACd/J,IACT+J,EAAOJ,EAAa,SAAU7kB,GAC5Bkb,EAAMxN,KAAK3G,KAAMie,EAAqBhlB,EAAS+G,KAAK8e,MAAMC,SAASC,YACrE,EAAI,SAAU/lB,GACZkb,EAAMxN,KAAK3G,KAAM+d,EAAe9kB,GAClC,GAGEilB,EACF,GAAInpB,EAAQupB,WAAY,CAEtB,IAAIW,EAAiBlqB,EAAQopB,OAE7BppB,EAAQopB,OAAS,SAAkCe,EAAGjmB,GAEpD,OADAilB,EAAKvX,KAAK1N,GACHgmB,EAAeC,EAAGjmB,EAC3B,CACF,KAAO,CAEL,IAAIkmB,EAAWpqB,EAAQqqB,aACvBrqB,EAAQqqB,aAAeD,EAAW,GAAG9gB,OAAO8gB,EAAUjB,GAAQ,CAACA,EACjE,CAGF,OAAOR,CACT,CAGA,IAAI2B,GArKS,CACXnjB,KAAM,iBACNyQ,MAAO,CACL2S,YAAa,CACXC,KAAMC,QACNC,SAAS,GAEXC,YAAa,CACXH,KAAMC,QACNC,SAAS,GAEXE,aAAc,CACZJ,KAAMC,QACNC,SAAS,IAGbG,QAAS,WACP,IAAIpD,EAAQxc,KAEZgd,KACAhd,KAAK6f,UAAU,WACbrD,EAAMsD,GAAKtD,EAAMuD,IAAI5R,YACrBqO,EAAMwD,GAAKxD,EAAMuD,IAAI1R,aAEjBmO,EAAM8C,aACR9C,EAAMyD,UAEV,GACA,IAAIza,EAAS6B,SAAS6Y,cAAc,UACpClgB,KAAKmgB,cAAgB3a,EACrBA,EAAO2W,aAAa,cAAe,QACnC3W,EAAO2W,aAAa,YAAa,GACjC3W,EAAO4a,OAASpgB,KAAKqgB,kBACrB7a,EAAO+Z,KAAO,YAEV,IACFvf,KAAK+f,IAAIO,YAAY9a,GAGvBA,EAAOtQ,KAAO,cAET,IACH8K,KAAK+f,IAAIO,YAAY9a,EAEzB,EACA+a,cAAe,WACbvgB,KAAKwgB,sBACP,EACAC,QAAS,CACPC,iBAAkB,aACX1gB,KAAK0f,aAAe1f,KAAK8f,KAAO9f,KAAK+f,IAAI5R,cAAgBnO,KAAK2f,cAAgB3f,KAAKggB,KAAOhgB,KAAK+f,IAAI1R,gBACtGrO,KAAK8f,GAAK9f,KAAK+f,IAAI5R,YACnBnO,KAAKggB,GAAKhgB,KAAK+f,IAAI1R,aACnBrO,KAAKigB,WAET,EACAA,SAAU,WACRjgB,KAAK2gB,MAAM,SAAU,CACnBpU,MAAOvM,KAAK8f,GACZxT,OAAQtM,KAAKggB,IAEjB,EACAK,kBAAmB,WACjBrgB,KAAKmgB,cAAcS,gBAAgBpY,YAAYwM,iBAAiB,SAAUhV,KAAK0gB,kBAE/E1gB,KAAK0gB,kBACP,EACAF,qBAAsB,WAChBxgB,KAAKmgB,eAAiBngB,KAAKmgB,cAAcC,UACtC,IAAQpgB,KAAKmgB,cAAcS,iBAC9B5gB,KAAKmgB,cAAcS,gBAAgBpY,YAAYiN,oBAAoB,SAAUzV,KAAK0gB,kBAGpF1gB,KAAK+f,IAAItL,YAAYzU,KAAKmgB,eAC1BngB,KAAKmgB,cAAcC,OAAS,KAC5BpgB,KAAKmgB,cAAgB,KAEzB,IA2FAU,GAAiB,WACnB,IAEIb,EAFMhgB,KAEG8gB,eAIb,OANU9gB,KAIG+gB,MAAMC,IAAMhB,GAEf,MAAO,CACfiB,YAAa,kBACbC,MAAO,CACLC,SAAU,OAGhB,EAGAN,GAAeO,eAAgB,EAG/B,IAgBIC,GAAiC7D,GAAmB,CACtDW,OAAQ0C,GACRzC,gBAtB4B,SAIFrY,EAmBFsZ,GAhBH,mBAMc,OAHLtZ,GAauF,OAAOA,OAAWA,OAAWA,GAQhJ,GAAS,CAEXtN,QAAS,QACT6oB,QATF,SAAiBxoB,GAEfA,EAAIyoB,UAAU,kBAAmBF,IACjCvoB,EAAIyoB,UAAU,iBAAkBF,GAClC,GAQIG,GAAY,KAEM,oBAAX7nB,OACT6nB,GAAY7nB,OAAOb,SACQ,IAAX,EAAAgkB,IAChB0E,GAAY,EAAA1E,EAAOhkB,KAGjB0oB,IACFA,GAAUC,IAAI,I,2BClQZC,GAAoB,WAA8B,EAMtD,SAASC,GAAeptB,GAKtB,MAJqB,iBAAVA,IACTA,EAAQA,EAAMyc,MAAM,MAGfzc,CACT,CASA,SAASqtB,GAAWrS,EAAIsS,GACtB,IACIC,EADAC,EAAaJ,GAAeE,GAI9BC,EADEvS,EAAGyS,qBAAqBN,GACdC,GAAepS,EAAGyS,UAAUC,SAE5BN,GAAepS,EAAGyS,WAGhCD,EAAWxqB,QAAQ,SAAU2qB,IACU,IAAjCJ,EAAUpiB,QAAQwiB,IACpBJ,EAAU/qB,KAAKmrB,EAEnB,GAEI3S,aAAc4S,WAChB5S,EAAG4M,aAAa,QAAS2F,EAAUM,KAAK,MAExC7S,EAAGyS,UAAYF,EAAUM,KAAK,IAElC,CASA,SAASC,GAAc9S,EAAIsS,GACzB,IACIC,EADAC,EAAaJ,GAAeE,GAI9BC,EADEvS,EAAGyS,qBAAqBN,GACdC,GAAepS,EAAGyS,UAAUC,SAE5BN,GAAepS,EAAGyS,WAGhCD,EAAWxqB,QAAQ,SAAU2qB,GAC3B,IAAIrc,EAAQic,EAAUpiB,QAAQwiB,IAEf,IAAXrc,GACFic,EAAU3iB,OAAO0G,EAAO,EAE5B,GAEI0J,aAAc4S,WAChB5S,EAAG4M,aAAa,QAAS2F,EAAUM,KAAK,MAExC7S,EAAGyS,UAAYF,EAAUM,KAAK,IAElC,CAxEsB,oBAAXzoB,SACT+nB,GAAoB/nB,OAAO+nB,mBAwE7B,IAAIY,IAAkB,EAEtB,GAAsB,oBAAX3oB,OAAwB,CACjC2oB,IAAkB,EAElB,IACE,IAAIC,GAAOtkB,OAAO8I,eAAe,CAAC,EAAG,UAAW,CAC9CjS,IAAK,WACHwtB,IAAkB,CACpB,IAEF3oB,OAAOqb,iBAAiB,OAAQ,KAAMuN,GACxC,CAAE,MAAO9b,GAAI,CACf,CAEA,SAAS+b,GAAUhd,EAAQid,GAAkB,IAAIjf,EAAOvF,OAAOuF,KAAKgC,GAAS,GAAIvH,OAAOykB,sBAAuB,CAAE,IAAIC,EAAU1kB,OAAOykB,sBAAsBld,GAAaid,IAAgBE,EAAUA,EAAQxkB,OAAO,SAAUykB,GAAO,OAAO3kB,OAAO4kB,yBAAyBrd,EAAQod,GAAK5b,UAAY,IAAIxD,EAAKzM,KAAK+rB,MAAMtf,EAAMmf,EAAU,CAAE,OAAOnf,CAAM,CAEtV,SAASuf,GAAgBrW,GAAU,IAAK,IAAIlG,EAAI,EAAGA,EAAI+E,UAAU/Q,OAAQgM,IAAK,CAAE,IAAItD,EAAyB,MAAhBqI,UAAU/E,GAAa+E,UAAU/E,GAAK,CAAC,EAAOA,EAAI,EAAKgc,GAAUvkB,OAAOiF,IAAS,GAAM3L,QAAQ,SAAUyD,GAAO8L,EAAgB4F,EAAQ1R,EAAKkI,EAAOlI,GAAO,GAAeiD,OAAO+kB,0BAA6B/kB,OAAOwO,iBAAiBC,EAAQzO,OAAO+kB,0BAA0B9f,IAAmBsf,GAAUvkB,OAAOiF,IAAS3L,QAAQ,SAAUyD,GAAOiD,OAAO8I,eAAe2F,EAAQ1R,EAAKiD,OAAO4kB,yBAAyB3f,EAAQlI,GAAO,EAAM,CAAE,OAAO0R,CAAQ,CAC3hB,IAAIuW,GAAkB,CACpBC,WAAW,EACXC,MAAO,EACP3X,MAAM,EACN8E,UAAW,MACX8S,MAAO,GACP3F,SAAU,+GACV4F,QAAS,cACTzgB,OAAQ,GAEN0gB,GAAe,GAEfC,GAAuB,WAmCzB,SAASA,EAAQC,EAAYC,GAC3B,IAAIjH,EAAQxc,MCtJhB,SAAyB4B,EAAGgU,GAC1B,KAAMhU,aAAagU,GAAI,MAAM,IAAI/O,UAAU,oCAC7C,CDsJI6c,CAAgB1jB,KAAMujB,GAEtBzc,EAAgB9G,KAAM,UAAW,IAEjC8G,EAAgB9G,KAAM,uBAAwB,SAAU2jB,EAAKra,EAAW6Z,EAAOpuB,GAC7E,IAAI6uB,EAAmBD,EAAIC,kBAAoBD,EAAIE,WAAaF,EAAIG,cAcpE,QAAItH,EAAMuH,aAAa7Y,SAAS0Y,KAE9BpH,EAAMuH,aAAa/O,iBAAiB2O,EAAIpE,KAd3B,SAAS1K,EAASmP,GAC/B,IAAIC,EAAoBD,EAAKJ,kBAAoBI,EAAKH,WAAaG,EAAKF,cAExEtH,EAAMuH,aAAatO,oBAAoBkO,EAAIpE,KAAM1K,GAG5CvL,EAAU4B,SAAS+Y,IAEtBzH,EAAM0H,cAAc5a,EAAWvU,EAAQouB,MAAOpuB,EAASivB,EAE3D,IAMS,EAIX,GAGAP,EAAWV,GAAgBA,GAAgB,CAAC,EAAGE,IAAkBQ,GACjED,EAAW5G,SAAW4G,EAAaA,EAAW,IAC9CxjB,KAAKmkB,KAAOnkB,KAAKmkB,KAAKxH,KAAK3c,MAC3BA,KAAK+a,KAAO/a,KAAK+a,KAAK4B,KAAK3c,MAE3BA,KAAKsJ,UAAYka,EACjBxjB,KAAKjL,QAAU0uB,EAEfzjB,KAAKokB,SAAU,EAEfpkB,KAAKqkB,OACP,CAolBA,OH9wBoB5d,EGsMP8c,GHtMU3c,EGsMD,CAAC,CACrB5L,IAAK,OACLzG,MAAO,WACLyL,KAAKskB,MAAMtkB,KAAKsJ,UAAWtJ,KAAKjL,QAClC,GAOC,CACDiG,IAAK,OACLzG,MAAO,WACLyL,KAAKukB,OACP,GAOC,CACDvpB,IAAK,UACLzG,MAAO,WACLyL,KAAKwkB,UACP,GAOC,CACDxpB,IAAK,SACLzG,MAAO,WACL,OAAIyL,KAAKokB,QACApkB,KAAK+a,OAEL/a,KAAKmkB,MAEhB,GACC,CACDnpB,IAAK,aACLzG,MAAO,SAAoBstB,GACzB7hB,KAAKykB,SAAW5C,CAClB,GACC,CACD7mB,IAAK,aACLzG,MAAO,SAAoBmwB,GACzB1kB,KAAKjL,QAAQquB,MAAQsB,EAEjB1kB,KAAK+jB,cACP/jB,KAAK2kB,YAAYD,EAAS1kB,KAAKjL,QAEnC,GACC,CACDiG,IAAK,aACLzG,MAAO,SAAoBQ,GACzB,IAAI6vB,GAAiB,EACjB/C,EAAU9sB,GAAWA,EAAQ8sB,SAAWgD,GAAU9vB,QAAQ+vB,aAEzDC,KAAQ/kB,KAAKykB,SAAU5C,KAC1B7hB,KAAKglB,WAAWnD,GAChB+C,GAAiB,GAGnB7vB,EAAUkwB,GAAWlwB,GACrB,IAAImwB,GAAmB,EACnBC,GAAc,EAUlB,IAAK,IAAInqB,KARLgF,KAAKjL,QAAQ6N,SAAW7N,EAAQ6N,QAAU5C,KAAKjL,QAAQub,YAAcvb,EAAQub,YAC/E4U,GAAmB,IAGjBllB,KAAKjL,QAAQ0oB,WAAa1oB,EAAQ0oB,UAAYzd,KAAKjL,QAAQsuB,UAAYtuB,EAAQsuB,SAAWrjB,KAAKjL,QAAQmuB,YAAcnuB,EAAQmuB,WAAa0B,KAC5IO,GAAc,GAGApwB,EACdiL,KAAKjL,QAAQiG,GAAOjG,EAAQiG,GAG9B,GAAIgF,KAAK+jB,aACP,GAAIoB,EAAa,CACf,IAAIC,EAASplB,KAAKokB,QAClBpkB,KAAKqlB,UAELrlB,KAAKqkB,QAEDe,GACFplB,KAAKmkB,MAET,MAAWe,GACTllB,KAAKslB,eAAe5sB,QAG1B,GAIC,CACDsC,IAAK,QACLzG,MAAO,WAEL,IAAIgxB,EAAyC,iBAAzBvlB,KAAKjL,QAAQsuB,QAAuBrjB,KAAKjL,QAAQsuB,QAAQrS,MAAM,KAAO,GAC1FhR,KAAKwlB,aAAc,EACnBxlB,KAAKylB,sBAAqD,IAA9BF,EAAO7lB,QAAQ,UAC3C6lB,EAASA,EAAOpnB,OAAO,SAAUklB,GAC/B,OAAyD,IAAlD,CAAC,QAAS,QAAS,SAAS3jB,QAAQ2jB,EAC7C,GAEArjB,KAAK0lB,mBAAmB1lB,KAAKsJ,UAAWic,EAAQvlB,KAAKjL,SAGrDiL,KAAK2lB,gBAAkB3lB,KAAKsJ,UAAUsc,aAAa,SACnD5lB,KAAKsJ,UAAU+K,gBAAgB,SAC/BrU,KAAKsJ,UAAU6S,aAAa,sBAAuBnc,KAAK2lB,gBAC1D,GAYC,CACD3qB,IAAK,UACLzG,MAAO,SAAiB+U,EAAWmU,GACjC,IAAIoI,EAAS7lB,KAGT8lB,EAAmBnsB,OAAO0N,SAAS6Y,cAAc,OACrD4F,EAAiBC,UAAYtI,EAASta,OACtC,IAAI6iB,EAAcF,EAAiBG,WAAW,GAkB9C,OAhBAD,EAAYruB,GAAKqI,KAAKjL,QAAQmxB,QAAU,WAAW7nB,OAAO6N,KAAKia,SAASle,SAAS,IAAIme,OAAO,EAAG,KAI/FJ,EAAY7J,aAAa,cAAe,QAEpCnc,KAAKjL,QAAQsxB,WAAuD,IAA3CrmB,KAAKjL,QAAQsuB,QAAQ3jB,QAAQ,WACxDsmB,EAAYhR,iBAAiB,aAAc,SAAU2O,GACnD,OAAOkC,EAAO3B,cAAc5a,EAAWuc,EAAO9wB,QAAQouB,MAAO0C,EAAO9wB,QAAS4uB,EAC/E,GACAqC,EAAYhR,iBAAiB,QAAS,SAAU2O,GAC9C,OAAOkC,EAAO3B,cAAc5a,EAAWuc,EAAO9wB,QAAQouB,MAAO0C,EAAO9wB,QAAS4uB,EAC/E,IAIKqC,CACT,GACC,CACDhrB,IAAK,cACLzG,MAAO,SAAqBmwB,EAAS3vB,GACnC,IAAIuxB,EAAStmB,KAEbA,KAAKumB,cAAe,EAEpBvmB,KAAKwmB,cAAc9B,EAAS3vB,GAASoE,KAAK,WACnCmtB,EAAOhB,gBAEZgB,EAAOhB,eAAe5sB,QACxB,EACF,GACC,CACDsC,IAAK,gBACLzG,MAAO,SAAuB6uB,EAAOruB,GACnC,IAAI0xB,EAASzmB,KAEb,OAAO,IAAIoE,QAAQ,SAAUyD,EAASxD,GACpC,IAAIqiB,EAAY3xB,EAAQyW,KACpBmb,EAAWF,EAAO1C,aACtB,GAAK4C,EAAL,CACA,IAAIC,EAAYD,EAAS1N,cAAcwN,EAAO1xB,QAAQ8xB,eAEtD,GAAuB,IAAnBzD,EAAM/a,UAER,GAAIqe,EAAW,CACb,KAAOE,EAAUE,YACfF,EAAUnS,YAAYmS,EAAUE,YAGlCF,EAAUtG,YAAY8C,EACxB,MACK,IAAqB,mBAAVA,EAAsB,CAEtC,IAAItV,EAASsV,IAkBb,YAhBItV,GAAiC,mBAAhBA,EAAO3U,MAC1BstB,EAAOF,cAAe,EACtBxxB,EAAQgyB,cAAgBnF,GAAW+E,EAAU5xB,EAAQgyB,cAEjDhyB,EAAQiyB,gBACVP,EAAOD,cAAczxB,EAAQiyB,eAAgBjyB,GAG/C+Y,EAAO3U,KAAK,SAAU8tB,GAEpB,OADAlyB,EAAQgyB,cAAgB1E,GAAcsE,EAAU5xB,EAAQgyB,cACjDN,EAAOD,cAAcS,EAAalyB,EAC3C,GAAGoE,KAAK0O,GAAS7N,MAAMqK,IAEvBoiB,EAAOD,cAAc1Y,EAAQ/Y,GAASoE,KAAK0O,GAAS7N,MAAMqK,GAI9D,CAEEqiB,EAAYE,EAAUb,UAAY3C,EAAQwD,EAAUM,UAAY9D,CAClE,CAEAvb,GAtCqB,CAuCvB,EACF,GACC,CACD7M,IAAK,QACLzG,MAAO,SAAe+U,EAAWvU,GAC/B,IAAIA,GAAwC,iBAAtBA,EAAQmuB,WACZ7b,SAAS4R,cAAclkB,EAAQmuB,WADjD,CAKAiE,aAAannB,KAAKonB,sBAClBryB,EAAUkJ,OAAOiP,OAAO,CAAC,EAAGnY,IACb6N,OACf,IAAIykB,GAAgB,EAEhBrnB,KAAK+jB,eACPnC,GAAW5hB,KAAK+jB,aAAc/jB,KAAKykB,UACnC4C,GAAgB,GAGlB,IAAIvZ,EAAS9N,KAAKsnB,aAAahe,EAAWvU,GAO1C,OALIsyB,GAAiBrnB,KAAK+jB,cACxBnC,GAAW5hB,KAAK+jB,aAAc/jB,KAAKykB,UAGrC7C,GAAWtY,EAAW,CAAC,mBAChBwE,CAnBP,CAoBF,GACC,CACD9S,IAAK,eACLzG,MAAO,SAAsB+U,EAAWvU,GACtC,IAAIwyB,EAASvnB,KAGb,GAAIA,KAAKokB,QACP,OAAOpkB,KAMT,GAHAA,KAAKokB,SAAU,EACfd,GAAavsB,KAAKiJ,MAEdA,KAAK+jB,aAYP,OAXA/jB,KAAK+jB,aAAa5P,MAAMqT,QAAU,GAElCxnB,KAAK+jB,aAAa5H,aAAa,cAAe,SAE9Cnc,KAAKslB,eAAehQ,uBACpBtV,KAAKslB,eAAe5sB,SAEhBsH,KAAKumB,cACPvmB,KAAK2kB,YAAY5vB,EAAQquB,MAAOruB,GAG3BiL,KAIT,IAAIojB,EAAQ9Z,EAAUsc,aAAa,UAAY7wB,EAAQquB,MAEvD,IAAKA,EACH,OAAOpjB,KAIT,IAAIgmB,EAAchmB,KAAKynB,QAAQne,EAAWvU,EAAQ0oB,UAElDzd,KAAK+jB,aAAeiC,EAEpB1c,EAAU6S,aAAa,mBAAoB6J,EAAYruB,IAEvD,IAAIurB,EAAYljB,KAAK0nB,eAAe3yB,EAAQmuB,UAAW5Z,GAEvDtJ,KAAK2nB,QAAQ3B,EAAa9C,GAE1B,IAAI0E,EAAgB7E,GAAgBA,GAAgB,CAAC,EAAGhuB,EAAQ6yB,eAAgB,CAAC,EAAG,CAClFtX,UAAWvb,EAAQub,YAoCrB,OAjCAsX,EAActV,UAAYyQ,GAAgBA,GAAgB,CAAC,EAAG6E,EAActV,WAAY,CAAC,EAAG,CAC1FwG,MAAO,CACL3Q,QAASnI,KAAKjL,QAAQ8yB,iBAItB9yB,EAAQ4a,oBACViY,EAActV,UAAU4F,gBAAkB,CACxCvI,kBAAmB5a,EAAQ4a,oBAI/B3P,KAAKslB,eAAiB,IAAI/I,GAAOjT,EAAW0c,EAAa4B,GAEzD5nB,KAAK2kB,YAAYvB,EAAOruB,GAGxB2nB,sBAAsB,YACf6K,EAAO/B,aAAe+B,EAAOjC,gBAChCiC,EAAOjC,eAAe5sB,SAGtBgkB,sBAAsB,WACf6K,EAAO/B,YAGV+B,EAAOlC,UAFPkC,EAAOnD,SAAW4B,EAAY7J,aAAa,cAAe,QAI9D,IAEAoL,EAAOlC,SAEX,GACOrlB,IACT,GACC,CACDhF,IAAK,gBACLzG,MAAO,WACL,IAAIsR,EAAQyd,GAAa5jB,QAAQM,OAElB,IAAX6F,GACFyd,GAAankB,OAAO0G,EAAO,EAE/B,GACC,CACD7K,IAAK,QACLzG,MAAO,WAGL,IAAIuzB,EAAS9nB,KAGb,IAAKA,KAAKokB,QACR,OAAOpkB,KAGTA,KAAKokB,SAAU,EAEfpkB,KAAK+nB,gBAGL/nB,KAAK+jB,aAAa5P,MAAMqT,QAAU,OAElCxnB,KAAK+jB,aAAa5H,aAAa,cAAe,QAE1Cnc,KAAKslB,gBACPtlB,KAAKslB,eAAe/Q,wBAGtB4S,aAAannB,KAAKonB,eAClB,IAAIY,EAAcnD,GAAU9vB,QAAQkzB,eAgBpC,OAdoB,OAAhBD,IACFhoB,KAAKonB,cAAgBrtB,WAAW,WAC1B+tB,EAAO/D,eACT+D,EAAO/D,aAAatO,oBAAoB,aAAcqS,EAAO/M,MAE7D+M,EAAO/D,aAAatO,oBAAoB,QAASqS,EAAO/M,MAGxD+M,EAAOI,qBAEX,EAAGF,IAGL3F,GAAcriB,KAAKsJ,UAAW,CAAC,mBACxBtJ,IACT,GACC,CACDhF,IAAK,qBACLzG,MAAO,WACL,GAAKyL,KAAK+jB,aAAV,CACA,IAAInb,EAAa5I,KAAK+jB,aAAanb,WAE/BA,IACFA,EAAW6L,YAAYzU,KAAK+jB,cAC5B/jB,KAAKsJ,UAAU+K,gBAAgB,qBAGjCrU,KAAK+jB,aAAe,IARU,CAShC,GACC,CACD/oB,IAAK,WACLzG,MAAO,WACL,IAAI4zB,EAASnoB,KAoCb,OAlCAA,KAAKwlB,aAAc,EACnBxlB,KAAKsJ,UAAU+K,gBAAgB,uBAE3BrU,KAAK2lB,iBACP3lB,KAAKsJ,UAAU6S,aAAa,QAASnc,KAAK2lB,iBAI5C3lB,KAAKooB,QAAQ7wB,QAAQ,SAAUoZ,GAC7B,IAAI0X,EAAO1X,EAAK0X,KACZzT,EAAQjE,EAAKiE,MAEjBuT,EAAO7e,UAAUmM,oBAAoBb,EAAOyT,EAC9C,GAEAroB,KAAKooB,QAAU,GAEXpoB,KAAK+jB,cACP/jB,KAAKukB,QAELvkB,KAAK+jB,aAAatO,oBAAoB,aAAczV,KAAK+a,MAEzD/a,KAAK+jB,aAAatO,oBAAoB,QAASzV,KAAK+a,MAGpD/a,KAAKslB,eAAelR,UAEfpU,KAAKslB,eAAevwB,QAAQyf,iBAC/BxU,KAAKkoB,sBAGPloB,KAAK+nB,gBAGA/nB,IACT,GACC,CACDhF,IAAK,iBACLzG,MAAO,SAAwB2uB,EAAW5Z,GASxC,MAPyB,iBAAd4Z,EACTA,EAAYvpB,OAAO0N,SAAS4R,cAAciK,IACnB,IAAdA,IAETA,EAAY5Z,EAAUV,YAGjBsa,CACT,GASC,CACDloB,IAAK,UACLzG,MAAO,SAAiByxB,EAAa9C,GACnCA,EAAU5C,YAAY0F,EACxB,GACC,CACDhrB,IAAK,qBACLzG,MAAO,SAA4B+U,EAAWic,EAAQxwB,GACpD,IAAIuzB,EAAStoB,KAETuoB,EAAe,GACfC,EAAiB,GACrBjD,EAAOhuB,QAAQ,SAAUqd,GACvB,OAAQA,GACN,IAAK,QACH2T,EAAaxxB,KAAK,cAClByxB,EAAezxB,KAAK,cAChBuxB,EAAOvzB,QAAQ0zB,mBAAmBD,EAAezxB,KAAK,SAC1D,MAEF,IAAK,QACHwxB,EAAaxxB,KAAK,SAClByxB,EAAezxB,KAAK,QAChBuxB,EAAOvzB,QAAQ0zB,mBAAmBD,EAAezxB,KAAK,SAC1D,MAEF,IAAK,QACHwxB,EAAaxxB,KAAK,SAClByxB,EAAezxB,KAAK,SAG1B,GAEAwxB,EAAahxB,QAAQ,SAAUqd,GAC7B,IAAIyT,EAAO,SAAc1E,IACA,IAAnB2E,EAAOlE,UAIXT,EAAI+E,eAAgB,EAEpBJ,EAAOK,cAAcrf,EAAWvU,EAAQouB,MAAOpuB,EAAS4uB,GAC1D,EAEA2E,EAAOF,QAAQrxB,KAAK,CAClB6d,MAAOA,EACPyT,KAAMA,IAGR/e,EAAU0L,iBAAiBJ,EAAOyT,EACpC,GAEAG,EAAejxB,QAAQ,SAAUqd,GAC/B,IAAIyT,EAAO,SAAc1E,IACG,IAAtBA,EAAI+E,eAIRJ,EAAOpE,cAAc5a,EAAWvU,EAAQouB,MAAOpuB,EAAS4uB,EAC1D,EAEA2E,EAAOF,QAAQrxB,KAAK,CAClB6d,MAAOA,EACPyT,KAAMA,IAGR/e,EAAU0L,iBAAiBJ,EAAOyT,EACpC,EACF,GACC,CACDrtB,IAAK,mBACLzG,MAAO,SAA0BqgB,GAC3B5U,KAAKylB,sBACPzlB,KAAKkkB,cAAclkB,KAAKsJ,UAAWtJ,KAAKjL,QAAQouB,MAAOnjB,KAAKjL,QAAS6f,EAEzE,GACC,CACD5Z,IAAK,gBACLzG,MAAO,SAAuB+U,EAAW6Z,EAAOpuB,GAG9C,IAAI6zB,EAAS5oB,KAGT6oB,EAAgB1F,GAASA,EAAMgB,MAAQhB,GAAS,EACpDgE,aAAannB,KAAK8oB,gBAClB9oB,KAAK8oB,eAAiBnvB,OAAOI,WAAW,WACtC,OAAO6uB,EAAOtE,MAAMhb,EAAWvU,EACjC,EAAG8zB,EACL,GACC,CACD7tB,IAAK,gBACLzG,MAAO,SAAuB+U,EAAW6Z,EAAOpuB,EAAS4uB,GACvD,IAAIoF,EAAU/oB,KAGV6oB,EAAgB1F,GAASA,EAAMpI,MAAQoI,GAAS,EACpDgE,aAAannB,KAAK8oB,gBAClB9oB,KAAK8oB,eAAiBnvB,OAAOI,WAAW,WACtC,IAAwB,IAApBgvB,EAAQ3E,SAIP2E,EAAQhF,aAAaxb,cAAcQ,KAAKmC,SAAS6d,EAAQhF,cAA9D,CAMA,GAAiB,eAAbJ,EAAIpE,MACMwJ,EAAQC,qBAAqBrF,EAAKra,EAAW6Z,EAAOpuB,GAK9D,OAIJg0B,EAAQxE,MAAMjb,EAAWvU,EAdzB,CAeF,EAAG8zB,EACL,MH1wBU1hB,EAAkBV,EAAEH,UAAWM,GAAkC3I,OAAO8I,eAAeN,EAAG,YAAa,CACjHS,UAAU,IG4wBLqc,EH9wBT,IAAsB9c,EAAGG,CG+wBzB,CApqB2B,GAgsB3B,SAASqiB,GAAUzjB,EAAQid,GAAkB,IAAIjf,EAAOvF,OAAOuF,KAAKgC,GAAS,GAAIvH,OAAOykB,sBAAuB,CAAE,IAAIC,EAAU1kB,OAAOykB,sBAAsBld,GAAaid,IAAgBE,EAAUA,EAAQxkB,OAAO,SAAUykB,GAAO,OAAO3kB,OAAO4kB,yBAAyBrd,EAAQod,GAAK5b,UAAY,IAAIxD,EAAKzM,KAAK+rB,MAAMtf,EAAMmf,EAAU,CAAE,OAAOnf,CAAM,CAEtV,SAAS0lB,GAAgBxc,GAAU,IAAK,IAAIlG,EAAI,EAAGA,EAAI+E,UAAU/Q,OAAQgM,IAAK,CAAE,IAAItD,EAAyB,MAAhBqI,UAAU/E,GAAa+E,UAAU/E,GAAK,CAAC,EAAOA,EAAI,EAAKyiB,GAAUhrB,OAAOiF,IAAS,GAAM3L,QAAQ,SAAUyD,GAAO8L,EAAgB4F,EAAQ1R,EAAKkI,EAAOlI,GAAO,GAAeiD,OAAO+kB,0BAA6B/kB,OAAOwO,iBAAiBC,EAAQzO,OAAO+kB,0BAA0B9f,IAAmB+lB,GAAUhrB,OAAOiF,IAAS3L,QAAQ,SAAUyD,GAAOiD,OAAO8I,eAAe2F,EAAQ1R,EAAKiD,OAAO4kB,yBAAyB3f,EAAQlI,GAAO,EAAM,CAAE,OAAO0R,CAAQ,CA5BngB,oBAAbrF,UACTA,SAAS2N,iBAAiB,aAAc,SAAUJ,GAChD,IAAK,IAAIpO,EAAI,EAAGA,EAAI8c,GAAa9oB,OAAQgM,IACvC8c,GAAa9c,GAAG2iB,iBAAiBvU,EAErC,GAAG0N,IAAkB,CACnBrN,SAAS,EACTmU,SAAS,IAsBb,IAAI7zB,GAAQ,CACViK,SAAS,GAEP6pB,GAAY,CAAC,MAAO,YAAa,UAAW,QAAS,cAAe,YAAa,SAAU,eAAgB,aAAc,OAAQ,aAAc,YAC/IC,GAAiB,CAEnBC,iBAAkB,MAElBzE,aAAc,oBAEd0E,mBAAoB,cAEpBC,aAAa,EAIbC,gBAAiB,+GAEjBC,qBAAsB,kCAEtBC,qBAAsB,kCAEtBC,aAAc,EAEdC,eAAgB,cAEhBC,cAAe,EAEfC,iBAAkB,OAClBC,8BAA0BlkB,EAC1BmkB,qBAAsB,CAAC,EAEvBC,oBAAqB,kBAErBC,sBAAuB,MAEvB/D,UAAU,EAEVgE,0BAA0B,EAE1BpC,eAAgB,IAEhBqC,QAAS,CACPf,iBAAkB,SAElBzE,aAAc,oBAEdyF,iBAAkB,kBAElBC,oBAAqB,UAErBC,kBAAmB,8BAEnBC,kBAAmB,8BAEnBC,iBAAkB,OAClBd,aAAc,EACdC,eAAgB,QAChBC,cAAe,EACfC,iBAAkB,OAClBC,8BAA0BlkB,EAC1BmkB,qBAAsB,CAAC,EAEvBU,iBAAiB,EAEjBC,qBAAqB,IAGzB,SAAS5F,GAAWlwB,GAClB,IAAI+Y,EAAS,CACXwC,eAAwC,IAAtBvb,EAAQub,UAA4Bvb,EAAQub,UAAYuU,GAAU9vB,QAAQw0B,iBAC5FpG,WAAgC,IAAlBpuB,EAAQouB,MAAwBpuB,EAAQouB,MAAQ0B,GAAU9vB,QAAQ80B,aAChFre,UAA8B,IAAjBzW,EAAQyW,KAAuBzW,EAAQyW,KAAOqZ,GAAU9vB,QAAQ00B,YAC7EhM,cAAsC,IAArB1oB,EAAQ0oB,SAA2B1oB,EAAQ0oB,SAAWoH,GAAU9vB,QAAQ20B,gBACzF7B,mBAAgD,IAA1B9yB,EAAQ8yB,cAAgC9yB,EAAQ8yB,cAAgBhD,GAAU9vB,QAAQ40B,qBACxG9C,mBAAgD,IAA1B9xB,EAAQ8xB,cAAgC9xB,EAAQ8xB,cAAgBhC,GAAU9vB,QAAQ60B,qBACxGvG,aAAoC,IAApBtuB,EAAQsuB,QAA0BtuB,EAAQsuB,QAAUwB,GAAU9vB,QAAQ+0B,eACtFlnB,YAAkC,IAAnB7N,EAAQ6N,OAAyB7N,EAAQ6N,OAASiiB,GAAU9vB,QAAQg1B,cACnF7G,eAAwC,IAAtBnuB,EAAQmuB,UAA4BnuB,EAAQmuB,UAAY2B,GAAU9vB,QAAQi1B,iBAC5Fra,uBAAwD,IAA9B5a,EAAQ4a,kBAAoC5a,EAAQ4a,kBAAoBkV,GAAU9vB,QAAQk1B,yBACpH5D,cAAsC,IAArBtxB,EAAQsxB,SAA2BtxB,EAAQsxB,SAAWxB,GAAU9vB,QAAQsxB,SACzFoC,uBAAwD,IAA9B1zB,EAAQ0zB,kBAAoC1zB,EAAQ0zB,kBAAoB5D,GAAU9vB,QAAQs1B,yBACpHtD,kBAA8C,IAAzBhyB,EAAQgyB,aAA+BhyB,EAAQgyB,aAAelC,GAAU9vB,QAAQo1B,oBACrGnD,oBAAkD,IAA3BjyB,EAAQiyB,eAAiCjyB,EAAQiyB,eAAiBnC,GAAU9vB,QAAQq1B,sBAC3GxC,cAAesB,GAAgB,CAAC,OAAoC,IAA1Bn0B,EAAQ6yB,cAAgC7yB,EAAQ6yB,cAAgB/C,GAAU9vB,QAAQm1B,uBAG9H,GAAIpc,EAAOlL,OAAQ,CACjB,IAAIkoB,EAAe7kB,EAAQ6H,EAAOlL,QAE9BA,EAASkL,EAAOlL,QAEC,WAAjBkoB,GAA8C,WAAjBA,IAAsD,IAAzBloB,EAAOlD,QAAQ,QAC3EkD,EAAS,MAAMvE,OAAOuE,IAGnBkL,EAAO8Z,cAActV,YACxBxE,EAAO8Z,cAActV,UAAY,CAAC,GAGpCxE,EAAO8Z,cAActV,UAAU1P,OAAS,CACtCA,OAAQA,EAEZ,CAMA,OAJIkL,EAAOuV,UAAgD,IAArCvV,EAAOuV,QAAQ3jB,QAAQ,WAC3CoO,EAAO2a,mBAAoB,GAGtB3a,CACT,CACA,SAASid,GAAax2B,EAAO+d,GAG3B,IAFA,IAAIhC,EAAY/b,EAAM+b,UAEb9J,EAAI,EAAGA,EAAI6iB,GAAU7uB,OAAQgM,IAAK,CACzC,IAAIwkB,EAAM3B,GAAU7iB,GAEhB8L,EAAU0Y,KACZ1a,EAAY0a,EAEhB,CAEA,OAAO1a,CACT,CACA,SAAS2a,GAAW12B,GAClB,IAAIgrB,EAAOtZ,EAAQ1R,GAEnB,MAAa,WAATgrB,EACKhrB,KACEA,GAAkB,WAATgrB,IACXhrB,EAAMmwB,OAIjB,CAqBA,SAASwG,GAAe3b,GAClBA,EAAG4b,WACL5b,EAAG4b,SAAS9F,iBAEL9V,EAAG4b,gBACH5b,EAAG6b,iBAGR7b,EAAG8b,wBACLhJ,GAAc9S,EAAIA,EAAG8b,8BACd9b,EAAG8b,sBAEd,CACA,SAAS1O,GAAKpN,EAAIoB,GAChB,IAAIpc,EAAQoc,EAAKpc,MACboc,EAAKtP,SACL,IAMEiqB,EANEhZ,EAAY3B,EAAK2B,UACrBoS,EAAUuG,GAAW12B,GAEpBmwB,GAAYnvB,GAAMiK,SAKjB+P,EAAG4b,WACLG,EAAU/b,EAAG4b,UAELI,WAAW7G,GAEnB4G,EAAQE,WAAWtC,GAAgBA,GAAgB,CAAC,EAAG30B,GAAQ,CAAC,EAAG,CACjE+b,UAAWya,GAAax2B,EAAO+d,OAGjCgZ,EArDN,SAAuB/b,EAAIhb,GACzB,IAAI+d,EAAY/G,UAAU/Q,OAAS,QAAsBuL,IAAjBwF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACjFmZ,EAAUuG,GAAW12B,GACrBstB,OAAmC,IAAlBttB,EAAMstB,QAA0BttB,EAAMstB,QAAUgD,GAAU9vB,QAAQ+vB,aAEnFvC,EAAO2G,GAAgB,CACzB9F,MAAOsB,GACNO,GAAWiE,GAAgBA,GAAgB,CAAC,EAAsB,WAAnBjjB,EAAQ1R,GAAsBA,EAAQ,CAAC,GAAI,CAAC,EAAG,CAC/F+b,UAAWya,GAAax2B,EAAO+d,OAG7BgZ,EAAU/b,EAAG4b,SAAW,IAAI5H,GAAQhU,EAAIgT,GAC5C+I,EAAQtG,WAAWnD,GACnByJ,EAAQG,OAASlc,EAEjB,IAAImc,OAA+C,IAAxBn3B,EAAMm3B,cAAgCn3B,EAAMm3B,cAAgB7G,GAAU9vB,QAAQy0B,mBAGzG,OAFAja,EAAG8b,sBAAwBK,EAC3B9J,GAAWrS,EAAImc,GACRJ,CACT,CAkCgBK,CAAcpc,EAAIhb,EAAO+d,QAIX,IAAf/d,EAAM4vB,MAAwB5vB,EAAM4vB,OAAS5U,EAAG6b,kBACzD7b,EAAG6b,gBAAkB72B,EAAM4vB,KAC3B5vB,EAAM4vB,KAAOmH,EAAQnH,OAASmH,EAAQvQ,SAnBxCmQ,GAAe3b,EAsBnB,CACA,IAAIsV,GAAY,CACd9vB,QAASu0B,GACT3M,KAAMA,GACNjkB,OAAQikB,GACRiP,OAAQ,SAAgBrc,GACtB2b,GAAe3b,EACjB,GAGF,SAASsc,GAAatc,GACpBA,EAAGyF,iBAAiB,QAAStb,IAC7B6V,EAAGyF,iBAAiB,aAAc8W,KAAcxJ,IAAkB,CAChErN,SAAS,GAEb,CAEA,SAAS8W,GAAgBxc,GACvBA,EAAGkG,oBAAoB,QAAS/b,IAChC6V,EAAGkG,oBAAoB,aAAcqW,IACrCvc,EAAGkG,oBAAoB,WAAYuW,IACnCzc,EAAGkG,oBAAoB,cAAewW,GACxC,CAEA,SAASvyB,GAAQkb,GACf,IAAIrF,EAAKqF,EAAMsX,cACftX,EAAMuX,cAAgB5c,EAAG6c,sBACzBxX,EAAMyX,gBAAkB9c,EAAG+c,2BAA6B/c,EAAG+c,wBAAwBC,GACrF,CAEA,SAAST,GAAalX,GACpB,GAAoC,IAAhCA,EAAM4X,eAAehyB,OAAc,CACrC,IAAI+U,EAAKqF,EAAMsX,cACf3c,EAAG6c,uBAAwB,EAC3B,IAAIK,EAAQ7X,EAAM4X,eAAe,GACjCjd,EAAGmd,2BAA6BD,EAChCld,EAAGyF,iBAAiB,WAAYgX,IAChCzc,EAAGyF,iBAAiB,cAAeiX,GACrC,CACF,CAEA,SAASD,GAAWpX,GAClB,IAAIrF,EAAKqF,EAAMsX,cAGf,GAFA3c,EAAG6c,uBAAwB,EAES,IAAhCxX,EAAM4X,eAAehyB,OAAc,CACrC,IAAIiyB,EAAQ7X,EAAM4X,eAAe,GAC7BG,EAAapd,EAAGmd,2BACpB9X,EAAMuX,aAAejgB,KAAK0gB,IAAIH,EAAMI,QAAUF,EAAWE,SAAW,IAAM3gB,KAAK0gB,IAAIH,EAAMK,QAAUH,EAAWG,SAAW,GACzHlY,EAAMyX,gBAAkB9c,EAAG+c,2BAA6B/c,EAAG+c,wBAAwBC,GACrF,CACF,CAEA,SAASN,GAAcrX,GACZA,EAAMsX,cACZE,uBAAwB,CAC7B,CAEA,IAAIW,GAAgB,CAClBpQ,KAAM,SAAcpN,EAAIoB,GACtB,IAAIpc,EAAQoc,EAAKpc,MACb+d,EAAY3B,EAAK2B,UACrB/C,EAAG+c,wBAA0Bha,QAER,IAAV/d,GAAyBA,IAClCs3B,GAAatc,EAEjB,EACA7W,OAAQ,SAAgB6W,EAAIsB,GAC1B,IAAItc,EAAQsc,EAAMtc,MACd8M,EAAWwP,EAAMxP,SACjBiR,EAAYzB,EAAMyB,UACtB/C,EAAG+c,wBAA0Bha,EAEzB/d,IAAU8M,SACS,IAAV9M,GAAyBA,EAClCs3B,GAAatc,GAEbwc,GAAgBxc,GAGtB,EACAqc,OAAQ,SAAgBrc,GACtBwc,GAAgBxc,EAClB,GAGF,SAASyd,GAAQxnB,EAAQid,GAAkB,IAAIjf,EAAOvF,OAAOuF,KAAKgC,GAAS,GAAIvH,OAAOykB,sBAAuB,CAAE,IAAIC,EAAU1kB,OAAOykB,sBAAsBld,GAAaid,IAAgBE,EAAUA,EAAQxkB,OAAO,SAAUykB,GAAO,OAAO3kB,OAAO4kB,yBAAyBrd,EAAQod,GAAK5b,UAAY,IAAIxD,EAAKzM,KAAK+rB,MAAMtf,EAAMmf,EAAU,CAAE,OAAOnf,CAAM,CAEpV,SAASypB,GAAcvgB,GAAU,IAAK,IAAIlG,EAAI,EAAGA,EAAI+E,UAAU/Q,OAAQgM,IAAK,CAAE,IAAItD,EAAyB,MAAhBqI,UAAU/E,GAAa+E,UAAU/E,GAAK,CAAC,EAAOA,EAAI,EAAKwmB,GAAQ/uB,OAAOiF,IAAS,GAAM3L,QAAQ,SAAUyD,GAAO8L,EAAgB4F,EAAQ1R,EAAKkI,EAAOlI,GAAO,GAAeiD,OAAO+kB,0BAA6B/kB,OAAOwO,iBAAiBC,EAAQzO,OAAO+kB,0BAA0B9f,IAAmB8pB,GAAQ/uB,OAAOiF,IAAS3L,QAAQ,SAAUyD,GAAOiD,OAAO8I,eAAe2F,EAAQ1R,EAAKiD,OAAO4kB,yBAAyB3f,EAAQlI,GAAO,EAAM,CAAE,OAAO0R,CAAQ,CAErhB,SAASwgB,GAAWlyB,GAClB,IAAIzG,EAAQswB,GAAU9vB,QAAQu1B,QAAQtvB,GAEtC,YAAqB,IAAVzG,EACFswB,GAAU9vB,QAAQiG,GAGpBzG,CACT,CAEA,IAAI44B,IAAQ,EAEU,oBAAXxzB,QAA+C,oBAAd2N,YAC1C6lB,GAAQ,mBAAmB/jB,KAAK9B,UAAUG,aAAe9N,OAAOyzB,UAGlE,IAAIC,GAAe,GAEfC,GAAU,WAAoB,EAEZ,oBAAX3zB,SACT2zB,GAAU3zB,OAAO2zB,SAGnB,IAAI5P,GAAS,CACXxhB,KAAM,WACNqxB,WAAY,CACVC,eAAgBA,IAElB7gB,MAAO,CACL8gB,KAAM,CACJlO,KAAMC,QACNC,SAAS,GAEXrjB,SAAU,CACRmjB,KAAMC,QACNC,SAAS,GAEXnP,UAAW,CACTiP,KAAMje,OACNme,QAAS,WACP,OAAOyN,GAAW,mBACpB,GAEF/J,MAAO,CACL5D,KAAM,CAACje,OAAQosB,OAAQzvB,QACvBwhB,QAAS,WACP,OAAOyN,GAAW,eACpB,GAEFtqB,OAAQ,CACN2c,KAAM,CAACje,OAAQosB,QACfjO,QAAS,WACP,OAAOyN,GAAW,gBACpB,GAEF7J,QAAS,CACP9D,KAAMje,OACNme,QAAS,WACP,OAAOyN,GAAW,iBACpB,GAEFhK,UAAW,CACT3D,KAAM,CAACje,OAAQrD,OAAQqvB,GAAS9N,SAChCC,QAAS,WACP,OAAOyN,GAAW,mBACpB,GAEFvd,kBAAmB,CACjB4P,KAAM,CAACje,OAAQgsB,IACf7N,QAAS,WACP,OAAOyN,GAAW,2BACpB,GAEFtF,cAAe,CACbrI,KAAMthB,OACNwhB,QAAS,WACP,OAAOyN,GAAW,uBACpB,GAEFS,aAAc,CACZpO,KAAM,CAACje,OAAQjK,OACfooB,QAAS,WACP,OAAOyN,GAAW,eACpB,GAEFU,iBAAkB,CAChBrO,KAAM,CAACje,OAAQjK,OACfooB,QAAS,WACP,OAAOoF,GAAU9vB,QAAQu1B,QAAQC,gBACnC,GAEFsD,kBAAmB,CACjBtO,KAAM,CAACje,OAAQjK,OACfooB,QAAS,WACP,OAAOoF,GAAU9vB,QAAQu1B,QAAQG,iBACnC,GAEFqD,oBAAqB,CACnBvO,KAAM,CAACje,OAAQjK,OACfooB,QAAS,WACP,OAAOoF,GAAU9vB,QAAQu1B,QAAQE,mBACnC,GAEFuD,kBAAmB,CACjBxO,KAAM,CAACje,OAAQjK,OACfooB,QAAS,WACP,OAAOoF,GAAU9vB,QAAQu1B,QAAQI,iBACnC,GAEFrE,SAAU,CACR9G,KAAMC,QACNC,QAAS,WACP,OAAOoF,GAAU9vB,QAAQu1B,QAAQM,eACnC,GAEFoD,aAAc,CACZzO,KAAMC,QACNC,QAAS,WACP,OAAOoF,GAAU9vB,QAAQu1B,QAAQO,mBACnC,GAEFoD,UAAW,CACT1O,KAAMje,OACNme,QAAS,MAEXyO,UAAW,CACT3O,KAAM,CAACje,OAAQjK,OACfooB,QAAS,WACP,OAAOoF,GAAU9vB,QAAQu1B,QAAQK,gBACnC,GAEFzE,OAAQ,CACNzG,QAAS,OAGbvqB,KAAM,WACJ,MAAO,CACLkwB,QAAQ,EACRztB,GAAIuU,KAAKia,SAASle,SAAS,IAAIme,OAAO,EAAG,IAE7C,EACA+H,SAAU,CACRC,SAAU,WACR,OAAOtnB,EAAgB,CAAC,EAAG9G,KAAKkuB,UAAWluB,KAAKolB,OAClD,EACAiJ,UAAW,WACT,MAAO,WAAWhwB,OAAsB,MAAf2B,KAAKkmB,OAAiBlmB,KAAKkmB,OAASlmB,KAAKrI,GACpE,GAEF22B,MAAO,CACLb,KAAM,SAAcc,GACdA,EACFvuB,KAAKmkB,OAELnkB,KAAK+a,MAET,EACA3e,SAAU,SAAkBmyB,EAAKC,GAC3BD,IAAQC,IACND,EACFvuB,KAAK+a,OACI/a,KAAKytB,MACdztB,KAAKmkB,OAGX,EACAjB,UAAW,SAAmBqL,GAC5B,GAAIvuB,KAAKolB,QAAUplB,KAAKslB,eAAgB,CACtC,IAAImJ,EAAczuB,KAAK0uB,MAAMpE,QACzBhhB,EAAYtJ,KAAK0uB,MAAMrL,QACvBH,EAAYljB,KAAK2uB,gBAAgB3uB,KAAKkjB,UAAW5Z,GAErD,IAAK4Z,EAEH,YADAtQ,QAAQnS,KAAK,2BAA4BT,MAI3CkjB,EAAU5C,YAAYmO,GACtBzuB,KAAKslB,eAAe/P,gBACtB,CACF,EACA8N,QAAS,SAAiBkL,GACxBvuB,KAAK4uB,yBACL5uB,KAAK6uB,qBACP,EACAve,UAAW,SAAmBie,GAC5B,IAAI/R,EAAQxc,KAEZA,KAAK8uB,eAAe,WAClBtS,EAAM8I,eAAevwB,QAAQub,UAAYie,CAC3C,EACF,EACA3rB,OAAQ,kBACR+M,kBAAmB,kBACnBiY,cAAe,CACbmH,QAAS,kBACTC,MAAM,IAGVC,QAAS,WACPjvB,KAAKkvB,cAAe,EACpBlvB,KAAKmvB,WAAY,EACjBnvB,KAAKovB,SAAW,GAChBpvB,KAAKqvB,eAAgB,CACvB,EACAzP,QAAS,WACP,IAAI6O,EAAczuB,KAAK0uB,MAAMpE,QAC7BmE,EAAY7lB,YAAc6lB,EAAY7lB,WAAW6L,YAAYga,GAC7DzuB,KAAKsvB,SAEDtvB,KAAKytB,MACPztB,KAAKmkB,MAET,EACAoL,YAAa,WACXvvB,KAAK+a,MACP,EACAwF,cAAe,WACbvgB,KAAKqlB,SACP,EACA5E,QAAS,CACP0D,KAAM,WACJ,IAAI0B,EAAS7lB,KAET6Q,EAAQtF,UAAU/Q,OAAS,QAAsBuL,IAAjBwF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC7EqJ,EAAQ/D,EAAM+D,MACd/D,EAAM2e,UACN,IAAIC,EAAc5e,EAAM6e,aACA,IAAhBD,GAAiCA,IAE/BzvB,KAAK5D,WACjB4D,KAAK2vB,eAAe/a,GACpB5U,KAAK2gB,MAAM,SAGb3gB,KAAK2gB,MAAM,eAAe,GAC1B3gB,KAAK4vB,eAAgB,EACrBlT,sBAAsB,WACpBmJ,EAAO+J,eAAgB,CACzB,EACF,EACA7U,KAAM,WACJ,IAAI8U,EAAQtkB,UAAU/Q,OAAS,QAAsBuL,IAAjBwF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC7EqJ,EAAQib,EAAMjb,MACdib,EAAML,UAEVxvB,KAAK8vB,eAAelb,GACpB5U,KAAK2gB,MAAM,QACX3gB,KAAK2gB,MAAM,eAAe,EAC5B,EACA0E,QAAS,WAOP,GANArlB,KAAKkvB,cAAe,EACpBlvB,KAAK4uB,yBACL5uB,KAAK+a,KAAK,CACRyU,WAAW,IAGTxvB,KAAKslB,iBACPtlB,KAAKslB,eAAelR,WAEfpU,KAAKslB,eAAevwB,QAAQyf,iBAAiB,CAChD,IAAIia,EAAczuB,KAAK0uB,MAAMpE,QAC7BmE,EAAY7lB,YAAc6lB,EAAY7lB,WAAW6L,YAAYga,EAC/D,CAGFzuB,KAAKmvB,WAAY,EACjBnvB,KAAKslB,eAAiB,KACtBtlB,KAAKolB,QAAS,EACdplB,KAAK2gB,MAAM,UACb,EACA2O,OAAQ,YACkC,IAApCtvB,KAAKqjB,QAAQ3jB,QAAQ,WACvBM,KAAK6uB,qBAET,EACAkB,OAAQ,WACN,IAAIzJ,EAAStmB,KAETsJ,EAAYtJ,KAAK0uB,MAAMrL,QACvBoL,EAAczuB,KAAK0uB,MAAMpE,QAG7B,GAFAnD,aAAannB,KAAKgwB,iBAEdhwB,KAAKolB,OAAT,CAWA,GANIplB,KAAKslB,iBACPtlB,KAAKolB,QAAS,EACdplB,KAAKslB,eAAehQ,uBACpBtV,KAAKslB,eAAe/P,mBAGjBvV,KAAKmvB,UAAW,CACnB,IAAIjM,EAAYljB,KAAK2uB,gBAAgB3uB,KAAKkjB,UAAW5Z,GAErD,IAAK4Z,EAEH,YADAtQ,QAAQnS,KAAK,2BAA4BT,MAI3CkjB,EAAU5C,YAAYmO,GACtBzuB,KAAKmvB,WAAY,EACjBnvB,KAAKolB,QAAS,EAEVplB,KAAKslB,gBACP5I,sBAAsB,WACf4J,EAAO2J,SACV3J,EAAOlB,QAAS,EAEpB,EAEJ,CAEA,IAAKplB,KAAKslB,eAAgB,CACxB,IAAIsC,EAAgBqF,GAAcA,GAAc,CAAC,EAAGjtB,KAAK4nB,eAAgB,CAAC,EAAG,CAC3EtX,UAAWtQ,KAAKsQ,YASlB,GANAsX,EAActV,UAAY2a,GAAcA,GAAc,CAAC,EAAGrF,EAActV,WAAY,CAAC,EAAG,CACtFwG,MAAOmU,GAAcA,GAAc,CAAC,EAAGrF,EAActV,WAAasV,EAActV,UAAUwG,OAAQ,CAAC,EAAG,CACpG3Q,QAASnI,KAAK0uB,MAAM5V,UAIpB9Y,KAAK4C,OAAQ,CACf,IAAIA,EAAS5C,KAAKkwB,cAClBtI,EAActV,UAAU1P,OAASqqB,GAAcA,GAAc,CAAC,EAAGrF,EAActV,WAAasV,EAActV,UAAU1P,QAAS,CAAC,EAAG,CAC/HA,OAAQA,GAEZ,CAEI5C,KAAK2P,oBACPiY,EAActV,UAAU4F,gBAAkB+U,GAAcA,GAAc,CAAC,EAAGrF,EAActV,WAAasV,EAActV,UAAU4F,iBAAkB,CAAC,EAAG,CACjJvI,kBAAmB3P,KAAK2P,qBAI5B3P,KAAKslB,eAAiB,IAAI/I,GAAOjT,EAAWmlB,EAAa7G,GAEzDlL,sBAAsB,WACpB,GAAI4J,EAAO2J,OAKT,OAJA3J,EAAO2J,QAAS,OAEhB3J,EAAO6J,UAKJ7J,EAAO4I,cAAgB5I,EAAOhB,gBACjCgB,EAAOhB,eAAe/P,iBAGtBmH,sBAAsB,WACpB,GAAI4J,EAAO2J,OAKT,OAJA3J,EAAO2J,QAAS,OAEhB3J,EAAO6J,SAKJ7J,EAAO4I,aAGV5I,EAAOjB,UAFPiB,EAAOlB,QAAS,CAIpB,IAEAkB,EAAOjB,SAEX,EACF,CAEA,IAAI4I,EAAYjuB,KAAKiuB,UAErB,GAAIA,EAGF,IAFA,IAAI3D,EAEK9jB,EAAI,EAAGA,EAAI6mB,GAAa7yB,OAAQgM,KACvC8jB,EAAU+C,GAAa7mB,IAEXynB,YAAcA,IACxB3D,EAAQvP,OACRuP,EAAQ3J,MAAM,gBAKpB0M,GAAat2B,KAAKiJ,MAClBA,KAAK2gB,MAAM,aA1GX,CA2GF,EACAwP,OAAQ,WACN,IAAI1J,EAASzmB,KAGb,GAAKA,KAAKolB,OAAV,CAIA,IAAIvf,EAAQwnB,GAAa3tB,QAAQM,OAElB,IAAX6F,GACFwnB,GAAaluB,OAAO0G,EAAO,GAG7B7F,KAAKolB,QAAS,EAEVplB,KAAKslB,gBACPtlB,KAAKslB,eAAe/Q,wBAGtB4S,aAAannB,KAAKgwB,gBAClB,IAAIhI,EAAcnD,GAAU9vB,QAAQu1B,QAAQrC,gBAAkBpD,GAAU9vB,QAAQkzB,eAE5D,OAAhBD,IACFhoB,KAAKgwB,eAAiBj2B,WAAW,WAC/B,IAAI00B,EAAchI,EAAOiI,MAAMpE,QAE3BmE,IAEFA,EAAY7lB,YAAc6lB,EAAY7lB,WAAW6L,YAAYga,GAC7DhI,EAAO0I,WAAY,EAEvB,EAAGnH,IAGLhoB,KAAK2gB,MAAM,aA7BX,CA8BF,EACAgO,gBAAiB,SAAyBzL,EAAW5Z,GASnD,MAPyB,iBAAd4Z,EACTA,EAAYvpB,OAAO0N,SAAS4R,cAAciK,IACnB,IAAdA,IAETA,EAAY5Z,EAAUV,YAGjBsa,CACT,EACAgN,YAAa,WACX,IAAIpF,EAAe7kB,EAAQjG,KAAK4C,QAE5BA,EAAS5C,KAAK4C,OAMlB,OAJqB,WAAjBkoB,GAA8C,WAAjBA,IAAsD,IAAzBloB,EAAOlD,QAAQ,QAC3EkD,EAAS,MAAMvE,OAAOuE,IAGjBA,CACT,EACAisB,oBAAqB,WACnB,IAAItH,EAASvnB,KAETsJ,EAAYtJ,KAAK0uB,MAAMrL,QACvBkF,EAAe,GACfC,EAAiB,IACgB,iBAAjBxoB,KAAKqjB,QAAuBrjB,KAAKqjB,QAAQrS,MAAM,KAAK7S,OAAO,SAAUklB,GACvF,OAAyD,IAAlD,CAAC,QAAS,QAAS,SAAS3jB,QAAQ2jB,EAC7C,GAAK,IACE9rB,QAAQ,SAAUqd,GACvB,OAAQA,GACN,IAAK,QACH2T,EAAaxxB,KAAK,cAClByxB,EAAezxB,KAAK,cACpB,MAEF,IAAK,QACHwxB,EAAaxxB,KAAK,SAClByxB,EAAezxB,KAAK,QACpB,MAEF,IAAK,QACHwxB,EAAaxxB,KAAK,SAClByxB,EAAezxB,KAAK,SAG1B,GAEAwxB,EAAahxB,QAAQ,SAAUqd,GAC7B,IAAIyT,EAAO,SAAczT,GACnB2S,EAAOnC,SAIXxQ,EAAM8T,eAAgB,GACrBnB,EAAO8H,eAAiB9H,EAAOpD,KAAK,CACnCvP,MAAOA,IAET2S,EAAO0I,QAAS,EAClB,EAEA1I,EAAO6H,SAASr4B,KAAK,CACnB6d,MAAOA,EACPyT,KAAMA,IAGR/e,EAAU0L,iBAAiBJ,EAAOyT,EACpC,GAEAG,EAAejxB,QAAQ,SAAUqd,GAC/B,IAAIyT,EAAO,SAAczT,GACnBA,EAAM8T,gBAIVnB,EAAOxM,KAAK,CACVnG,MAAOA,IAGT2S,EAAO0I,QAAS,EAClB,EAEA1I,EAAO6H,SAASr4B,KAAK,CACnB6d,MAAOA,EACPyT,KAAMA,IAGR/e,EAAU0L,iBAAiBJ,EAAOyT,EACpC,EACF,EACAsH,eAAgB,WACd,IAAIH,EAAYjkB,UAAU/Q,OAAS,QAAsBuL,IAAjBwF,UAAU,IAAmBA,UAAU,GAG/E,GAFA4b,aAAannB,KAAKowB,iBAEdZ,EACFxvB,KAAK+vB,aACA,CAEL,IAAIlH,EAAgBzc,SAASpM,KAAKmjB,OAASnjB,KAAKmjB,MAAMgB,MAAQnkB,KAAKmjB,OAAS,GAC5EnjB,KAAKowB,gBAAkBr2B,WAAWiG,KAAK+vB,OAAOpT,KAAK3c,MAAO6oB,EAC5D,CACF,EACAiH,eAAgB,WACd,IAAIhI,EAAS9nB,KAET4U,EAAQrJ,UAAU/Q,OAAS,QAAsBuL,IAAjBwF,UAAU,GAAmBA,UAAU,GAAK,KAC5EikB,EAAYjkB,UAAU/Q,OAAS,QAAsBuL,IAAjBwF,UAAU,IAAmBA,UAAU,GAG/E,GAFA4b,aAAannB,KAAKowB,iBAEdZ,EACFxvB,KAAKmwB,aACA,CAEL,IAAItH,EAAgBzc,SAASpM,KAAKmjB,OAASnjB,KAAKmjB,MAAMpI,MAAQ/a,KAAKmjB,OAAS,GAC5EnjB,KAAKowB,gBAAkBr2B,WAAW,WAChC,GAAK+tB,EAAO1C,OAAZ,CAMA,GAAIxQ,GAAwB,eAAfA,EAAM2K,MACLuI,EAAOuI,sBAAsBzb,GAKvC,OAIJkT,EAAOqI,QAdP,CAeF,EAAGtH,EACL,CACF,EACAwH,sBAAuB,SAA+Bzb,GACpD,IAAIuT,EAASnoB,KAETsJ,EAAYtJ,KAAK0uB,MAAMrL,QACvBoL,EAAczuB,KAAK0uB,MAAMpE,QACzB1G,EAAmBhP,EAAMgP,kBAAoBhP,EAAMiP,WAAajP,EAAMkP,cAe1E,QAAI2K,EAAYvjB,SAAS0Y,KAEvB6K,EAAYzZ,iBAAiBJ,EAAM2K,KAftB,SAAS1K,EAASyb,GAC/B,IAAIrM,EAAoBqM,EAAO1M,kBAAoB0M,EAAOzM,WAAayM,EAAOxM,cAE9E2K,EAAYhZ,oBAAoBb,EAAM2K,KAAM1K,GAEvCvL,EAAU4B,SAAS+Y,IAEtBkE,EAAOpN,KAAK,CACVnG,MAAO0b,GAGb,IAKS,EAIX,EACA1B,uBAAwB,WACtB,IAAItlB,EAAYtJ,KAAK0uB,MAAMrL,QAC3BrjB,KAAKovB,SAAS73B,QAAQ,SAAUg5B,GAC9B,IAAIlI,EAAOkI,EAAMlI,KACbzT,EAAQ2b,EAAM3b,MAClBtL,EAAUmM,oBAAoBb,EAAOyT,EACvC,GACAroB,KAAKovB,SAAW,EAClB,EACAN,eAAgB,SAAwB0B,GAClCxwB,KAAKslB,iBACPkL,IACIxwB,KAAKolB,QAAQplB,KAAKslB,eAAe/P,iBAEzC,EACAkb,gBAAiB,WACf,GAAIzwB,KAAKslB,eAAgB,CACvB,IAAIF,EAASplB,KAAKolB,OAClBplB,KAAKqlB,UACLrlB,KAAKkvB,cAAe,EACpBlvB,KAAKsvB,SAEDlK,GACFplB,KAAKmkB,KAAK,CACRqL,WAAW,EACXE,OAAO,GAGb,CACF,EACAgB,oBAAqB,SAA6B9b,GAChD,IAAI0T,EAAStoB,KAETysB,EAAQlhB,UAAU/Q,OAAS,QAAsBuL,IAAjBwF,UAAU,IAAmBA,UAAU,GACvEvL,KAAK4vB,gBACT5vB,KAAK+a,KAAK,CACRnG,MAAOA,IAGLA,EAAMuX,aACRnsB,KAAK2gB,MAAM,mBAEX3gB,KAAK2gB,MAAM,aAGT8L,IACFzsB,KAAKqvB,eAAgB,EACrBt1B,WAAW,WACTuuB,EAAO+G,eAAgB,CACzB,EAAG,MAEP,EACAsB,eAAgB,WACV3wB,KAAKolB,QAAUplB,KAAKslB,iBACtBtlB,KAAKslB,eAAe/P,iBACpBvV,KAAK2gB,MAAM,UAEf,IAuBJ,SAASiQ,GAAkBhc,GAiBzB,IAhBA,IAAI6X,EAAQlhB,UAAU/Q,OAAS,QAAsBuL,IAAjBwF,UAAU,IAAmBA,UAAU,GAEvEslB,EAAQ,SAAerqB,GACzB,IAAI8jB,EAAU+C,GAAa7mB,GAE3B,GAAI8jB,EAAQoE,MAAMpE,QAAS,CACzB,IAAIpf,EAAWof,EAAQoE,MAAMpE,QAAQpf,SAAS0J,EAAMlI,QACpDgQ,sBAAsB,YAChB9H,EAAMyX,iBAAmBzX,EAAMuX,cAAgBjhB,GAAYof,EAAQjE,WAAanb,IAClFof,EAAQoG,oBAAoB9b,EAAO6X,EAEvC,EACF,CACF,EAGSjmB,EAAI,EAAGA,EAAI6mB,GAAa7yB,OAAQgM,IACvCqqB,EAAMrqB,EAEV,CAEA,SAASgX,GAAmBC,EAAUtJ,EAAOuJ,EAAQC,EAASC,EAAsBC,EAAoCC,EAAYC,EAAgBC,EAAmBC,GACzI,kBAAfH,IACPE,EAAoBD,EACpBA,EAAiBD,EACjBA,GAAa,GAGjB,MAAM/oB,EAA4B,mBAAX2oB,EAAwBA,EAAO3oB,QAAU2oB,EAehE,IAAIQ,EAmCJ,GAhDIT,GAAYA,EAASU,SACrBppB,EAAQopB,OAASV,EAASU,OAC1BppB,EAAQqpB,gBAAkBX,EAASW,gBACnCrpB,EAAQspB,WAAY,EAEhBT,IACA7oB,EAAQupB,YAAa,IAIzBX,IACA5oB,EAAQwpB,SAAWZ,GAGnBE,GAEAK,EAAO,SAAUjlB,IAEbA,EACIA,GACK+G,KAAKwe,QAAUxe,KAAKwe,OAAOC,YAC3Bze,KAAKwO,QAAUxO,KAAKwO,OAAOgQ,QAAUxe,KAAKwO,OAAOgQ,OAAOC,aAElB,oBAAxBC,sBACnBzlB,EAAUylB,qBAGVvK,GACAA,EAAMxN,KAAK3G,KAAMge,EAAkB/kB,IAGnCA,GAAWA,EAAQ0lB,uBACnB1lB,EAAQ0lB,sBAAsBC,IAAIf,EAE1C,EAGA9oB,EAAQ8pB,aAAeX,GAElB/J,IACL+J,EAAOJ,EACD,SAAU7kB,GACRkb,EAAMxN,KAAK3G,KAAMie,EAAqBhlB,EAAS+G,KAAK8e,MAAMC,SAASC,YACvE,EACE,SAAU/lB,GACRkb,EAAMxN,KAAK3G,KAAM+d,EAAe9kB,GACpC,GAEJilB,EACA,GAAInpB,EAAQupB,WAAY,CAEpB,MAAMW,EAAiBlqB,EAAQopB,OAC/BppB,EAAQopB,OAAS,SAAkCe,EAAGjmB,GAElD,OADAilB,EAAKvX,KAAK1N,GACHgmB,EAAeC,EAAGjmB,EAC7B,CACJ,KACK,CAED,MAAMkmB,EAAWpqB,EAAQqqB,aACzBrqB,EAAQqqB,aAAeD,EAAW,GAAG9gB,OAAO8gB,EAAUjB,GAAQ,CAACA,EACnE,CAEJ,OAAOR,CACX,CAlHwB,oBAAbrW,UAA8C,oBAAX1N,SACxCwzB,GACF9lB,SAAS2N,iBAAiB,WAa9B,SAA8BJ,GAC5Bgc,GAAkBhc,GAAO,EAC3B,GAfgE0N,IAAkB,CAC5ErN,SAAS,EACTmU,SAAS,IAGXzvB,OAAOqb,iBAAiB,QAI5B,SAA2BJ,GACzBgc,GAAkBhc,EACpB,GANwD,IA8GxD,IAAIyK,GAAiB3B,GAGjBmD,GAAiB,WACnB,IAAIiQ,EAAM9wB,KAENggB,EAAK8Q,EAAIhQ,eAETE,EAAK8P,EAAI/P,MAAMC,IAAMhB,EAEzB,OAAOgB,EAAG,MAAO,CACfC,YAAa,YACb8P,MAAOD,EAAI1C,UACV,CAACpN,EAAG,MAAO,CACZgQ,IAAK,UACL/P,YAAa,UACbgQ,YAAa,CACXzJ,QAAS,gBAEXtG,MAAO,CACL,mBAAoB4P,EAAI1L,OAAS0L,EAAIzC,eAAYtoB,EACjDob,UAA4C,IAAlC2P,EAAIzN,QAAQ3jB,QAAQ,SAAkB,OAAIqG,IAErD,CAAC+qB,EAAII,GAAG,YAAa,GAAIJ,EAAIK,GAAG,KAAMnQ,EAAG,MAAO,CACjDgQ,IAAK,UACLD,MAAO,CAACD,EAAIlD,iBAAkBkD,EAAInD,aAAcmD,EAAI1C,UACpDja,MAAO,CACLid,WAAYN,EAAI1L,OAAS,UAAY,UAEvClE,MAAO,CACLvpB,GAAIm5B,EAAIzC,UACR,cAAeyC,EAAI1L,OAAS,QAAU,OACtCjE,SAAU2P,EAAIzK,SAAW,OAAItgB,GAE/BsrB,GAAI,CACFC,MAAO,SAAeC,GACpB,IAAKA,EAAOhS,KAAK7f,QAAQ,QAAUoxB,EAAIU,GAAGD,EAAOE,QAAS,MAAO,GAAIF,EAAOv2B,IAAK,CAAC,MAAO,WACvF,OAAO,KAGT81B,EAAIzK,UAAYyK,EAAI/V,MACtB,IAED,CAACiG,EAAG,MAAO,CACZ+P,MAAOD,EAAIhD,qBACV,CAAC9M,EAAG,MAAO,CACZgQ,IAAK,QACLD,MAAOD,EAAIjD,kBACXoD,YAAa,CACX5d,SAAU,aAEX,CAAC2N,EAAG,MAAO,CAAC8P,EAAII,GAAG,UAAW,KAAM,CACrC9L,OAAQ0L,EAAI1L,UACT,GAAI0L,EAAIK,GAAG,KAAML,EAAI9C,aAAehN,EAAG,iBAAkB,CAC5DqQ,GAAI,CACFK,OAAQZ,EAAIH,kBAEXG,EAAIa,MAAO,GAAIb,EAAIK,GAAG,KAAMnQ,EAAG,MAAO,CACzCgQ,IAAK,QACLD,MAAOD,EAAI/C,yBAEf,EAGAlN,GAAeO,eAAgB,EAG/B,IAgBIC,GAAiC7D,GAAmB,CACtDW,OAAQ0C,GACRzC,gBAtB4B,SAIFrY,EAmBFsZ,QAhBHtZ,GAMc,OAHLA,GAauF,OAAOA,OAAWA,OAAWA,IAEpJ,SAAqBuC,EAAK0oB,QACX,IAARA,IAAiBA,EAAM,CAAC,GAC7B,IAAIY,EAAWZ,EAAIY,SAEnB,GAAKtpB,GAA2B,oBAAbjB,SAAnB,CAEA,IAAIwqB,EAAOxqB,SAASwqB,MAAQxqB,SAASyqB,qBAAqB,QAAQ,GAC9D3d,EAAQ9M,SAAS6Y,cAAc,SACnC/L,EAAMoL,KAAO,WAEI,QAAbqS,GACEC,EAAK/K,WACP+K,EAAKE,aAAa5d,EAAO0d,EAAK/K,YAKhC+K,EAAKvR,YAAYnM,GAGfA,EAAM6d,WACR7d,EAAM6d,WAAWC,QAAU3pB,EAE3B6L,EAAMmM,YAAYjZ,SAAS6qB,eAAe5pB,GAnBW,CAqBzD,CAGA6pB,CADe,wWAef,IAGIC,GAAS,CACX9Q,QAhBF,SAASA,EAAQxoB,GACf,IAAI/D,EAAUwW,UAAU/Q,OAAS,QAAsBuL,IAAjBwF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,IAAI+V,EAAQ/oB,UAAZ,CACA+oB,EAAQ/oB,WAAY,EACpB,IAAI85B,EAAe,CAAC,EACpBC,KAAMD,EAAc/I,GAAgBv0B,GACpCq9B,GAAOr9B,QAAUs9B,EACjBxN,GAAU9vB,QAAUs9B,EACpBv5B,EAAI+rB,UAAU,UAAWA,IACzB/rB,EAAI+rB,UAAU,gBAAiBkI,IAC/Bj0B,EAAIyoB,UAAU,WAAYF,GARG,CAS/B,EAOE,WAAI7hB,GACF,OAAOjK,GAAMiK,OACf,EAEA,WAAIA,CAAQjL,GACVgB,GAAMiK,QAAUjL,CAClB,GAIEitB,GAAY,KAEM,oBAAX7nB,OACT6nB,GAAY7nB,OAAOb,SACQ,IAAXy5B,EAAAA,IAChB/Q,GAAY+Q,EAAAA,EAAOz5B,KAGjB0oB,IACFA,GAAUC,IAAI2Q,IAGhB,Y,oDEv/DA,MCFsQ,IDEzOI,EAAAA,GAAAA,IAAiB,CAC1CC,OAAQ,cACRC,MAAMC,IACK,CAAEC,OAAO,EAAMC,UAASA,GAAAA,MEavC,IAXgB,E,SAAA,GACd,GFRW,WAAkB,IAAI/B,EAAI9wB,KAAKghB,EAAG8P,EAAI/P,MAAMC,GAAgC,OAAOA,EAA7B8P,EAAI/P,MAAM+R,YAA6BD,UAAU,CAAC3R,MAAM,CAAC,WAAW,aAAa,CAACF,EAAG,cAAc,CAACE,MAAM,CAAC,KAAO,gBAAgB4P,EAAIK,GAAG,KAAKnQ,EAAG,eAAe8P,EAAIK,GAAG,KAAKnQ,EAAG,cAAc,CAACE,MAAM,CAAC,KAAO,cAAc,EAC7R,EACsB,IESpB,EACA,KACA,KACA,M,oCCbF,MAmDA,GA5Ce,CACX,CACIhlB,KAAM,QACN62B,KAAM,qCACNxF,WAAY,CACR9N,QAPWuT,IAAM,iEAQjBC,WAPqBC,IAAM,iEAS/BvmB,OAAO,EACP4B,SAAU,CACN,CACIwkB,KAAM,iBACN72B,KAAM,WAIlB,CACI62B,KAAM,oCACN72B,KAAM,OACNi3B,SAAU,CACNj3B,KAAM,gBACN5G,OAAQ,CACJwB,UA7BQpB,E,SAAAA,GAAU,WAAY,mBAAmB,GA6BrB,WAAa,cAGjD63B,WAAY,CACR9N,QA/BK2T,IAAM,iEAgCXH,WA/BeI,IAAM,iEAgCrBC,QA/BYC,IAAM,iEAiCtBhlB,SAAU,CACN,CACIwkB,KAAM,YACN72B,KAAM,gBACNqS,SAAU,CACN,CACIwkB,KAAM,MACN72B,KAAM,qBCrC9BpD,GAAAA,GAAI2oB,IAAI+R,GAAAA,IACR,MAQA,GARe,IAAIA,GAAAA,GAAO,CACtBC,KAAM,UAGNC,MAAMr6B,EAAAA,GAAAA,IAAY,IAClBs6B,gBAAiB,SACjBC,OAAMA,K,gBCAVC,EAAAA,IAAoBC,EAAAA,EAAAA,MAEpBh7B,GAAAA,GAAIwN,UAAUlQ,EAAIA,EAAAA,EAClB0C,GAAAA,GAAIwN,UAAUsP,EAAIA,EAAAA,EAClB9c,GAAAA,GAAI2oB,IAAIsS,EAAAA,IACRj7B,GAAAA,GAAI2oB,IAAIuS,GAAgB,CAAEvK,aAAa,IACvC3wB,GAAAA,GAAI2oB,IAAIwS,GAAAA,IACR,MAAMhvB,IAAQC,EAAAA,GAAAA,MACdgvB,EAAAA,GAAAA,GAAKjvB,GAAOkvB,IACZ,MAAMC,IAAQC,EAAAA,EAAAA,MACd,IAAmBv7B,GAAAA,GAAI,CACnBq7B,OAAM,GACNlvB,MAAK,GACLmvB,MAAK,GACLjW,OAASe,GAAMA,EAAEoV,IACjB/kB,GAAI,Y,gDCzBR,SAAeglB,E,SAAAA,MACVC,OAAO,YACPC,aACAz4B,O,kBCRL,IAAI04B,EAAmB,EAAQ,OAC3BC,EAAc,EAAQ,OACtBC,EAAkB,EAAQ,OAC1BC,EAAY,EAAQ,OACpBC,EAAkB,EAAQ,OAC1BC,EAAc,EAAQ,OACtBz9B,EAAU,EAAQ,OAClB09B,EAAoB,EAAQ,OAC5BC,EAAW,EAAQ,MACnBltB,EAAa,EAAQ,MACrBmtB,EAAW,EAAQ,OACnBC,EAAgB,EAAQ,OACxBC,EAAe,EAAQ,OACvBC,EAAU,EAAQ,OAClBC,EAAgB,EAAQ,OA+E5BjhC,EAAOC,QA9DP,SAAuBkR,EAAQtC,EAAQlI,EAAKu6B,EAAUC,EAAW1vB,EAAY2vB,GAC3E,IAAIC,EAAWL,EAAQ7vB,EAAQxK,GAC3B26B,EAAWN,EAAQnyB,EAAQlI,GAC3B46B,EAAUH,EAAM3gC,IAAI6gC,GAExB,GAAIC,EACFlB,EAAiBlvB,EAAQxK,EAAK46B,OADhC,CAIA,IAAIC,EAAW/vB,EACXA,EAAW4vB,EAAUC,EAAW36B,EAAM,GAAKwK,EAAQtC,EAAQuyB,QAC3D1vB,EAEA+vB,OAAwB/vB,IAAb8vB,EAEf,GAAIC,EAAU,CACZ,IAAIC,EAAQz+B,EAAQq+B,GAChBK,GAAUD,GAASd,EAASU,GAC5BM,GAAWF,IAAUC,GAAUZ,EAAaO,GAEhDE,EAAWF,EACPI,GAASC,GAAUC,EACjB3+B,EAAQo+B,GACVG,EAAWH,EAEJV,EAAkBU,GACzBG,EAAWhB,EAAUa,GAEdM,GACPF,GAAW,EACXD,EAAWlB,EAAYgB,GAAU,IAE1BM,GACPH,GAAW,EACXD,EAAWjB,EAAgBe,GAAU,IAGrCE,EAAW,GAGNV,EAAcQ,IAAaZ,EAAYY,IAC9CE,EAAWH,EACPX,EAAYW,GACdG,EAAWP,EAAcI,GAEjBR,EAASQ,KAAa3tB,EAAW2tB,KACzCG,EAAWf,EAAgBa,KAI7BG,GAAW,CAEf,CACIA,IAEFL,EAAMS,IAAIP,EAAUE,GACpBL,EAAUK,EAAUF,EAAUJ,EAAUzvB,EAAY2vB,GACpDA,EAAc,OAAEE,IAElBjB,EAAiBlvB,EAAQxK,EAAK66B,EAnD9B,CAoDF,C,4CC3FA,IAAIM,EAAY,EAAQ,OAkCpB7D,EAjCiB,EAAQ,MAiCjB8D,CAAe,SAAS5wB,EAAQtC,EAAQqyB,GAClDY,EAAU3wB,EAAQtC,EAAQqyB,EAC5B,GAEAlhC,EAAOC,QAAUg+B,C,gBCqBjB,SAAS+D,EAAYC,EAAIC,GACvB,IAAIC,EAAQ,CACVt6B,KAAMo6B,EAAGp6B,KACT62B,KAAMuD,EAAGvD,KACTvhB,KAAM8kB,EAAG9kB,KACTilB,MAAOH,EAAGG,MACVnhC,OAAQghC,EAAGhhC,OACXohC,SAAUJ,EAAGI,SACb1xB,KAAMsxB,EAAGtxB,MAKX,OAHIuxB,IACFC,EAAMD,KAAOF,EAAWE,IAEnBt4B,OAAO04B,OAAOH,EACvB,CAzEAliC,EAAQ,EAAO,SAAU2Q,EAAOkvB,EAAQp/B,GACtC,IAAI6hC,GAAc7hC,GAAW,CAAC,GAAG6hC,YAAc,QAE/C3xB,EAAM4xB,eAAeD,EAAY,CAC/BE,YAAY,EACZvhC,MAAO8gC,EAAWlC,EAAO4C,cACzB/gC,UAAW,CACT,cAAiB,SAAwBT,EAAOyhC,GAC9C/xB,EAAM1P,MAAMqhC,GAAcP,EAAWW,EAAWV,GAAIU,EAAWT,KACjE,KAIJ,IACIU,EADAC,GAAkB,EAIlBC,EAAelyB,EAAMqpB,MACvB,SAAU/4B,GAAS,OAAOA,EAAMqhC,EAAa,EAC7C,SAAUQ,GACR,IAAIV,EAAWU,EAAMV,SACjBA,IAAaO,IAGE,MAAfA,IACFC,GAAkB,EAClB/C,EAAOp9B,KAAKqgC,IAEdH,EAAcP,EAChB,EACA,CAAExC,MAAM,IAINmD,EAAkBlD,EAAOmD,UAAU,SAAUhB,EAAIC,GAC/CW,EACFA,GAAkB,GAGpBD,EAAcX,EAAGI,SACjBzxB,EAAM7L,OAAOw9B,EAAa,iBAAkB,CAAEN,GAAIA,EAAIC,KAAMA,IAC9D,GAEA,OAAO,WAEkB,MAAnBc,GACFA,IAIkB,MAAhBF,GACFA,IAIFlyB,EAAMsyB,iBAAiBX,EACzB,CACF,C,yDCzDA,IAAIY,EAAa,EAAQ,OACrBC,EAAS,EAAQ,OA8BrBpjC,EAAOC,QAJP,SAAuBC,GACrB,OAAOijC,EAAWjjC,EAAOkjC,EAAOljC,GAClC,C,gGC7BA,IAAImjC,EAAc,EAAQ,OACtBC,EAAe,EAAQ,OA+B3BtjC,EAAOC,QAJP,SAA2BC,GACzB,OAAOojC,EAAapjC,IAAUmjC,EAAYnjC,EAC5C,C,kBC9BA,IAAIqjC,EAAQ,EAAQ,OAChBlD,EAAmB,EAAQ,OAC3BmD,EAAU,EAAQ,OAClBC,EAAgB,EAAQ,OACxB5C,EAAW,EAAQ,OACnBuC,EAAS,EAAQ,OACjBpC,EAAU,EAAQ,OAmCtBhhC,EAAOC,QAtBP,SAAS6hC,EAAU3wB,EAAQtC,EAAQqyB,EAAUzvB,EAAY2vB,GACnDjwB,IAAWtC,GAGf20B,EAAQ30B,EAAQ,SAASyyB,EAAU36B,GAEjC,GADAy6B,IAAUA,EAAQ,IAAImC,GAClB1C,EAASS,GACXmC,EAActyB,EAAQtC,EAAQlI,EAAKu6B,EAAUY,EAAWrwB,EAAY2vB,OAEjE,CACH,IAAII,EAAW/vB,EACXA,EAAWuvB,EAAQ7vB,EAAQxK,GAAM26B,EAAW36B,EAAM,GAAKwK,EAAQtC,EAAQuyB,QACvE1vB,OAEaA,IAAb8vB,IACFA,EAAWF,GAEbjB,EAAiBlvB,EAAQxK,EAAK66B,EAChC,CACF,EAAG4B,EACL,C,kBCvCA,IAAIM,EAAkB,EAAQ,OAC1BC,EAAK,EAAQ,OAkBjB3jC,EAAOC,QAPP,SAA0BkR,EAAQxK,EAAKzG,SACtBwR,IAAVxR,IAAwByjC,EAAGxyB,EAAOxK,GAAMzG,SAC9BwR,IAAVxR,KAAyByG,KAAOwK,KACnCuyB,EAAgBvyB,EAAQxK,EAAKzG,EAEjC,C,GChBI0jC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBpyB,IAAjBqyB,EACH,OAAOA,EAAa9jC,QAGrB,IAAID,EAAS4jC,EAAyBE,GAAY,CACjDxgC,GAAIwgC,EACJE,QAAQ,EACR/jC,QAAS,CAAC,GAUX,OANAgkC,EAAoBH,GAAUxxB,KAAKtS,EAAOC,QAASD,EAAQA,EAAOC,QAAS4jC,GAG3E7jC,EAAOgkC,QAAS,EAGThkC,EAAOC,OACf,CAGA4jC,EAAoBK,EAAID,EpC5BpBrkC,EAAW,GACfikC,EAAoBM,EAAI,CAAC1qB,EAAQ2qB,EAAU9wB,EAAI2Q,KAC9C,IAAGmgB,EAAH,CAMA,IAAIC,EAAeC,IACnB,IAASnyB,EAAI,EAAGA,EAAIvS,EAASuG,OAAQgM,IAAK,CAGzC,IAFA,IAAKiyB,EAAU9wB,EAAI2Q,GAAYrkB,EAASuS,GACpCoyB,GAAY,EACPC,EAAI,EAAGA,EAAIJ,EAASj+B,OAAQq+B,MACpB,EAAXvgB,GAAsBogB,GAAgBpgB,IAAara,OAAOuF,KAAK00B,EAAoBM,GAAGM,MAAO99B,GAASk9B,EAAoBM,EAAEx9B,GAAKy9B,EAASI,KAC9IJ,EAASt5B,OAAO05B,IAAK,IAErBD,GAAY,EACTtgB,EAAWogB,IAAcA,EAAepgB,IAG7C,GAAGsgB,EAAW,CACb3kC,EAASkL,OAAOqH,IAAK,GACrB,IAAII,EAAIe,SACE5B,IAANa,IAAiBkH,EAASlH,EAC/B,CACD,CACA,OAAOkH,CAnBP,CAJCwK,EAAWA,GAAY,EACvB,IAAI,IAAI9R,EAAIvS,EAASuG,OAAQgM,EAAI,GAAKvS,EAASuS,EAAI,GAAG,GAAK8R,EAAU9R,IAAKvS,EAASuS,GAAKvS,EAASuS,EAAI,GACrGvS,EAASuS,GAAK,CAACiyB,EAAU9wB,EAAI2Q,IqCJ/B4f,EAAoBtiB,EAAKvhB,IACxB,IAAI0kC,EAAS1kC,GAAUA,EAAO2kC,WAC7B,IAAO3kC,EAAiB,QACxB,IAAM,EAEP,OADA6jC,EAAoBe,EAAEF,EAAQ,CAAEn3B,EAAGm3B,IAC5BA,GCLRb,EAAoBe,EAAI,CAAC3kC,EAAS4kC,KACjC,IAAI,IAAIl+B,KAAOk+B,EACXhB,EAAoBhyB,EAAEgzB,EAAYl+B,KAASk9B,EAAoBhyB,EAAE5R,EAAS0G,IAC5EiD,OAAO8I,eAAezS,EAAS0G,EAAK,CAAEgM,YAAY,EAAMlS,IAAKokC,EAAWl+B,MCJ3Ek9B,EAAoBiB,EAAI,CAAC,EAGzBjB,EAAoBzxB,EAAK2yB,GACjBh1B,QAAQmoB,IAAItuB,OAAOuF,KAAK00B,EAAoBiB,GAAGthB,OAAO,CAACwhB,EAAUr+B,KACvEk9B,EAAoBiB,EAAEn+B,GAAKo+B,EAASC,GAC7BA,GACL,KCNJnB,EAAoBoB,EAAKF,KAEX,CAAC,KAAO,iBAAiB,KAAO,sBAAsBA,IAAYA,GAAW,IAAMA,EAAU,SAAW,CAAC,GAAK,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,wBAAwBA,ICHrjBlB,EAAoBpb,EAAI,WACvB,GAA0B,iBAAfyc,WAAyB,OAAOA,WAC3C,IACC,OAAOv5B,MAAQ,IAAIw5B,SAAS,cAAb,EAChB,CAAE,MAAO/yB,GACR,GAAsB,iBAAX9M,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBu+B,EAAoBhyB,EAAI,CAAC8G,EAAKyF,IAAUxU,OAAOqI,UAAU6G,eAAexG,KAAKqG,EAAKyF,GzCA9Eve,EAAa,CAAC,EACdC,EAAoB,uBAExB+jC,EAAoBuB,EAAI,CAAC/kC,EAAKglC,EAAM1+B,EAAKo+B,KACxC,GAAGllC,EAAWQ,GAAQR,EAAWQ,GAAKqC,KAAK2iC,OAA3C,CACA,IAAIhc,EAAQic,EACZ,QAAW5zB,IAAR/K,EAEF,IADA,IAAI4+B,EAAUvyB,SAASyqB,qBAAqB,UACpCtrB,EAAI,EAAGA,EAAIozB,EAAQp/B,OAAQgM,IAAK,CACvC,IAAIqzB,EAAID,EAAQpzB,GAChB,GAAGqzB,EAAEjU,aAAa,QAAUlxB,GAAOmlC,EAAEjU,aAAa,iBAAmBzxB,EAAoB6G,EAAK,CAAE0iB,EAASmc,EAAG,KAAO,CACpH,CAEGnc,IACHic,GAAa,GACbjc,EAASrW,SAAS6Y,cAAc,WAEzB4Z,QAAU,QACb5B,EAAoB6B,IACvBrc,EAAOvB,aAAa,QAAS+b,EAAoB6B,IAElDrc,EAAOvB,aAAa,eAAgBhoB,EAAoB6G,GAExD0iB,EAAOsc,IAAMtlC,GAEdR,EAAWQ,GAAO,CAACglC,GACnB,IAAIO,EAAmB,CAACC,EAAMtlB,KAE7B8I,EAAOyc,QAAUzc,EAAO0C,OAAS,KACjC+G,aAAaiT,GACb,IAAIC,EAAUnmC,EAAWQ,GAIzB,UAHOR,EAAWQ,GAClBgpB,EAAO9U,YAAc8U,EAAO9U,WAAW6L,YAAYiJ,GACnD2c,GAAWA,EAAQ9iC,QAASoQ,GAAQA,EAAGiN,IACpCslB,EAAM,OAAOA,EAAKtlB,IAElBwlB,EAAUrgC,WAAWkgC,EAAiBtd,KAAK,UAAM5W,EAAW,CAAEwZ,KAAM,UAAW7S,OAAQgR,IAAW,MACtGA,EAAOyc,QAAUF,EAAiBtd,KAAK,KAAMe,EAAOyc,SACpDzc,EAAO0C,OAAS6Z,EAAiBtd,KAAK,KAAMe,EAAO0C,QACnDuZ,GAActyB,SAASwqB,KAAKvR,YAAY5C,EAnCkB,G0CH3Dwa,EAAoBtxB,EAAKtS,IACH,oBAAX6R,QAA0BA,OAAOm0B,aAC1Cr8B,OAAO8I,eAAezS,EAAS6R,OAAOm0B,YAAa,CAAE/lC,MAAO,WAE7D0J,OAAO8I,eAAezS,EAAS,aAAc,CAAEC,OAAO,KCLvD2jC,EAAoBqC,IAAOlmC,IAC1BA,EAAOmmC,MAAQ,GACVnmC,EAAOka,WAAUla,EAAOka,SAAW,IACjCla,GCHR6jC,EAAoBW,EAAI,K,MCAxB,IAAI4B,EACAvC,EAAoBpb,EAAE4d,gBAAeD,EAAYvC,EAAoBpb,EAAEljB,SAAW,IACtF,IAAIyN,EAAW6wB,EAAoBpb,EAAEzV,SACrC,IAAKozB,GAAapzB,IACbA,EAASszB,eAAkE,WAAjDtzB,EAASszB,cAAcC,QAAQ5mB,gBAC5DymB,EAAYpzB,EAASszB,cAAcX,MAC/BS,GAAW,CACf,IAAIb,EAAUvyB,EAASyqB,qBAAqB,UAC5C,GAAG8H,EAAQp/B,OAEV,IADA,IAAIgM,EAAIozB,EAAQp/B,OAAS,EAClBgM,GAAK,KAAOi0B,IAAc,aAAarxB,KAAKqxB,KAAaA,EAAYb,EAAQpzB,KAAKwzB,GAE3F,CAID,IAAKS,EAAW,MAAM,IAAIn2B,MAAM,yDAChCm2B,EAAYA,EAAU9lC,QAAQ,SAAU,IAAIA,QAAQ,OAAQ,IAAIA,QAAQ,QAAS,IAAIA,QAAQ,YAAa,KAC1GujC,EAAoB2C,EAAIJ,C,WClBxBvC,EAAoBr2B,EAAyB,oBAAbwF,UAA4BA,SAASyzB,SAAYC,KAAKnhC,SAASohC,KAK/F,IAAIC,EAAkB,CACrB,KAAM,GAGP/C,EAAoBiB,EAAEN,EAAI,CAACO,EAASC,KAElC,IAAI6B,EAAqBhD,EAAoBhyB,EAAE+0B,EAAiB7B,GAAW6B,EAAgB7B,QAAWrzB,EACtG,GAA0B,IAAvBm1B,EAGF,GAAGA,EACF7B,EAAStiC,KAAKmkC,EAAmB,QAC3B,CAGL,IAAIC,EAAU,IAAI/2B,QAAQ,CAACyD,EAASxD,IAAY62B,EAAqBD,EAAgB7B,GAAW,CAACvxB,EAASxD,IAC1Gg1B,EAAStiC,KAAKmkC,EAAmB,GAAKC,GAGtC,IAAIzmC,EAAMwjC,EAAoB2C,EAAI3C,EAAoBoB,EAAEF,GAEpDljC,EAAQ,IAAIoO,MAgBhB4zB,EAAoBuB,EAAE/kC,EAfFkgB,IACnB,GAAGsjB,EAAoBhyB,EAAE+0B,EAAiB7B,KAEf,KAD1B8B,EAAqBD,EAAgB7B,MACR6B,EAAgB7B,QAAWrzB,GACrDm1B,GAAoB,CACtB,IAAIE,EAAYxmB,IAAyB,SAAfA,EAAM2K,KAAkB,UAAY3K,EAAM2K,MAChE8b,EAAUzmB,GAASA,EAAMlI,QAAUkI,EAAMlI,OAAOstB,IACpD9jC,EAAMI,QAAU,iBAAmB8iC,EAAU,cAAgBgC,EAAY,KAAOC,EAAU,IAC1FnlC,EAAMgG,KAAO,iBACbhG,EAAMqpB,KAAO6b,EACbllC,EAAMolC,QAAUD,EAChBH,EAAmB,GAAGhlC,EACvB,GAGuC,SAAWkjC,EAASA,EAE/D,GAYHlB,EAAoBM,EAAEK,EAAKO,GAA0C,IAA7B6B,EAAgB7B,GAGxD,IAAImC,EAAuB,CAACC,EAA4BtmC,KACvD,IAGIijC,EAAUiB,GAHTX,EAAUgD,EAAaC,GAAWxmC,EAGhBsR,EAAI,EAC3B,GAAGiyB,EAAS9kB,KAAMhc,GAAgC,IAAxBsjC,EAAgBtjC,IAAa,CACtD,IAAIwgC,KAAYsD,EACZvD,EAAoBhyB,EAAEu1B,EAAatD,KACrCD,EAAoBK,EAAEJ,GAAYsD,EAAYtD,IAGhD,GAAGuD,EAAS,IAAI5tB,EAAS4tB,EAAQxD,EAClC,CAEA,IADGsD,GAA4BA,EAA2BtmC,GACrDsR,EAAIiyB,EAASj+B,OAAQgM,IACzB4yB,EAAUX,EAASjyB,GAChB0xB,EAAoBhyB,EAAE+0B,EAAiB7B,IAAY6B,EAAgB7B,IACrE6B,EAAgB7B,GAAS,KAE1B6B,EAAgB7B,GAAW,EAE5B,OAAOlB,EAAoBM,EAAE1qB,IAG1B6tB,EAAqBZ,KAAsC,gCAAIA,KAAsC,iCAAK,GAC9GY,EAAmBpkC,QAAQgkC,EAAqB5e,KAAK,KAAM,IAC3Dgf,EAAmB5kC,KAAOwkC,EAAqB5e,KAAK,KAAMgf,EAAmB5kC,KAAK4lB,KAAKgf,G,KCrFvFzD,EAAoB6B,QAAKh0B,ECGzB,IAAI61B,EAAsB1D,EAAoBM,OAAEzyB,EAAW,CAAC,MAAO,IAAOmyB,EAAoB,QAC9F0D,EAAsB1D,EAAoBM,EAAEoD,E","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/lodash/isEqual.js","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/users-settings.js","webpack:///nextcloud/apps/settings/src/utils/sorting.ts","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/node_modules/lodash/_safeGet.js","webpack:///nextcloud/apps/settings/src/constants/GroupManagement.ts","webpack:///nextcloud/node_modules/lodash/_createAssigner.js","webpack:///nextcloud/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///nextcloud/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack:///nextcloud/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack:///nextcloud/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///nextcloud/node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///nextcloud/node_modules/popper.js/dist/esm/popper.js","webpack:///nextcloud/node_modules/vue-resize/dist/vue-resize.esm.js","webpack:///nextcloud/node_modules/v-tooltip/dist/v-tooltip.esm.js","webpack:///nextcloud/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/SettingsApp.vue?3a67","webpack:///nextcloud/apps/settings/src/router/routes.ts","webpack:///nextcloud/apps/settings/src/router/index.ts","webpack:///nextcloud/apps/settings/src/main-apps-users-management.ts","webpack:///nextcloud/apps/settings/src/logger.ts","webpack:///nextcloud/node_modules/lodash/_baseMergeDeep.js","webpack:///nextcloud/node_modules/lodash/merge.js","webpack:///nextcloud/node_modules/vuex-router-sync/index.js","webpack:///nextcloud/node_modules/lodash/toPlainObject.js","webpack:///nextcloud/node_modules/lodash/isArrayLikeObject.js","webpack:///nextcloud/node_modules/lodash/_baseMerge.js","webpack:///nextcloud/node_modules/lodash/_assignMergeValue.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\n\n/**\n * @param {string} url - The url to sanitize\n */\nfunction sanitize(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateUrl } from '@nextcloud/router'\nimport Vue from 'vue'\nimport logger from '../logger.ts'\nimport api from './api.js'\n\nconst state = {\n\tapps: [],\n\tbundles: loadState('settings', 'appstoreBundles', []),\n\tcategories: [],\n\tupdateCount: loadState('settings', 'appstoreUpdateCount', 0),\n\tloading: {},\n\tgettingCategoriesPromise: null,\n\tappApiEnabled: loadState('settings', 'appApiEnabled', false),\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '
' + error.error.response.data.data.message, { isHTML: true })\n\t\tlogger.error('An error occurred during the request. Unable to proceed.', { state, error })\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tupdateCategories(state, categoriesPromise) {\n\t\tstate.gettingCategoriesPromise = categoriesPromise\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find((app) => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId }) {\n\t\tconst app = state.apps.find((app) => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find((app) => app.id === appId)\n\t\tapp.active = true\n\t\tapp.groups = groups\n\t\tif (app.id === 'app_api') {\n\t\t\tstate.appApiEnabled = true\n\t\t}\n\t},\n\n\tsetInstallState(state, { appId, canInstall }) {\n\t\tconst app = state.apps.find((app) => app.id === appId)\n\t\tif (app) {\n\t\t\tapp.canInstall = canInstall === true\n\t\t}\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find((app) => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t\tif (app.id === 'app_api') {\n\t\t\tstate.appApiEnabled = false\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find((app) => app.id === appId).active = false\n\t\tstate.apps.find((app) => app.id === appId).groups = []\n\t\tstate.apps.find((app) => app.id === appId).needsDownload = true\n\t\tstate.apps.find((app) => app.id === appId).installed = false\n\t\tstate.apps.find((app) => app.id === appId).canUnInstall = false\n\t\tstate.apps.find((app) => app.id === appId).canInstall = true\n\t\tif (appId === 'app_api') {\n\t\t\tstate.appApiEnabled = false\n\t\t}\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find((app) => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tisAppApiEnabled(state) {\n\t\treturn state.appApiEnabled\n\t},\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetAppBundles(state) {\n\t\treturn state.bundles\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n\tgetCategoryById: (state) => (selectedCategoryId) => {\n\t\treturn state.categories.find((category) => category.id === selectedCategoryId)\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach((_appId) => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn axios.get(generateUrl('apps/files/'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.',\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tshowError(t('settings', 'Error: This app cannot be enabled because it makes the server unstable'))\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tcontext.dispatch('disableApp', { appId })\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then(() => {\n\t\t\t\t\tcontext.commit('setInstallState', { appId, canInstall: true })\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then(() => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach((_appId) => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then(() => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then(() => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tasync getCategories(context, { shouldRefetchCategories = false } = {}) {\n\t\tif (shouldRefetchCategories || !context.state.gettingCategoriesPromise) {\n\t\t\tcontext.commit('startLoading', 'categories')\n\t\t\ttry {\n\t\t\t\tconst categoriesPromise = api.get(generateUrl('settings/apps/categories'))\n\t\t\t\tcontext.commit('updateCategories', categoriesPromise)\n\t\t\t\tconst categoriesPromiseResponse = await categoriesPromise\n\t\t\t\tif (categoriesPromiseResponse.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', categoriesPromiseResponse.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\treturn false\n\t\t\t} catch (error) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t}\n\t\treturn context.state.gettingCategoriesPromise\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport api from './api.js'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tserverData: loadState('settings', 'usersSettings', {}),\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCanonicalLocale, getLanguage } from '@nextcloud/l10n';\nexport const naturalCollator = Intl.Collator([getLanguage(), getCanonicalLocale()], {\n numeric: true,\n usage: 'sort',\n});\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { getBuilder } from '@nextcloud/browser-storage'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { showError } from '@nextcloud/dialogs'\nimport { parseFileSize } from '@nextcloud/files'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl, generateUrl } from '@nextcloud/router'\nimport { GroupSorting } from '../constants/GroupManagement.ts'\nimport logger from '../logger.ts'\nimport { naturalCollator } from '../utils/sorting.ts'\nimport api from './api.js'\n\nconst usersSettings = loadState('settings', 'usersSettings', {})\n\nconst localStorage = getBuilder('settings').persist(true).build()\n\nconst defaults = {\n\t/**\n\t * @type {import('../views/user-types').IGroup}\n\t */\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [\n\t\t...(usersSettings.getSubAdminGroups ?? []),\n\t\t...(usersSettings.systemGroups ?? []),\n\t],\n\torderBy: usersSettings.sortGroups ?? GroupSorting.UserCount,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tdisabledUsersOffset: 0,\n\tdisabledUsersLimit: 25,\n\tuserCount: usersSettings.userCount ?? 0,\n\tshowConfig: {\n\t\tshowStoragePath: localStorage.getItem('account_settings__showStoragePath') === 'true',\n\t\tshowUserBackend: localStorage.getItem('account_settings__showUserBackend') === 'true',\n\t\tshowFirstLogin: localStorage.getItem('account_settings__showFirstLogin') === 'true',\n\t\tshowLastLogin: localStorage.getItem('account_settings__showLastLogin') === 'true',\n\t\tshowNewUserForm: localStorage.getItem('account_settings__showNewUserForm') === 'true',\n\t\tshowLanguages: localStorage.getItem('account_settings__showLanguages') === 'true',\n\t},\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\tconst existingUsers = state.users.map(({ id }) => id)\n\t\tconst newUsers = Object.values(usersObj)\n\t\t\t.filter(({ id }) => !existingUsers.includes(id))\n\n\t\tconst users = state.users.concat(newUsers)\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tupdateDisabledUsers(state) {\n\t\tstate.disabledUsersOffset += state.disabledUsersLimit\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\t/**\n\t * @param {object} state store state\n\t * @param {import('../views/user-types.js').IGroup} newGroup new group\n\t */\n\taddGroup(state, newGroup) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === newGroup.id) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = { ...defaults.group, ...newGroup }\n\t\t\tstate.groups.unshift(group)\n\t\t} catch (error) {\n\t\t\tlogger.error('Cannt create group', { error })\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex((groupSearch) => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex((groupSearch) => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find((groupSearch) => groupSearch.id === gid)\n\t\tconst user = state.users.find((user) => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find((groupSearch) => groupSearch.id === gid)\n\t\tconst user = state.users.find((user) => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find((user) => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find((user) => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex((user) => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.unshift(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find((user) => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\t// 0 is a special value\n\t\tif (state.userCount === 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst recentGroup = state.groups.find((group) => group.id === '__nc_internal_recent')\n\t\tconst disabledGroup = state.groups.find((group) => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\t\tcase 'enable':\n\t\t\tcase 'disable':\n\t\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\t\trecentGroup.usercount += user.enabled ? 1 : -1\n\t\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\t\tuser.groups.forEach((userGroup) => {\n\t\t\t\t\tconst group = state.groups.find((groupSearch) => groupSearch.id === userGroup)\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'create':\n\t\t\t\trecentGroup.usercount++\n\t\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\t\tuser.groups.forEach((userGroup) => {\n\t\t\t\t\tconst group = state.groups.find((groupSearch) => groupSearch.id === userGroup)\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tgroup.usercount++ // increment group total count\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'remove':\n\t\t\t\tif (user.enabled) {\n\t\t\t\t\trecentGroup.usercount--\n\t\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\t\tuser.groups.forEach((userGroup) => {\n\t\t\t\t\t\tconst group = state.groups.find((groupSearch) => groupSearch.id === userGroup)\n\t\t\t\t\t\tif (!group) {\n\t\t\t\t\t\t\tlogger.warn('User group ' + userGroup + ' does not exist during user removal')\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\t\tuser.groups.forEach((userGroup) => {\n\t\t\t\t\t\tconst group = state.groups.find((groupSearch) => groupSearch.id === userGroup)\n\t\t\t\t\t\tif (!group) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interrupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = parseFileSize(value, true)\n\t\t\tstate.users.find((user) => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find((user) => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t\tstate.disabledUsersOffset = 0\n\t},\n\n\t/**\n\t * Reset group list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetGroups(state) {\n\t\tstate.groups = [\n\t\t\t...(usersSettings.getSubAdminGroups ?? []),\n\t\t\t...(usersSettings.systemGroups ?? []),\n\t\t]\n\t},\n\n\tsetShowConfig(state, { key, value }) {\n\t\tlocalStorage.setItem(`account_settings__${key}`, JSON.stringify(value))\n\t\tstate.showConfig[key] = value\n\t},\n\n\tsetGroupSorting(state, sorting) {\n\t\tconst oldValue = state.orderBy\n\t\tstate.orderBy = sorting\n\n\t\t// Persist the value on the server\n\t\taxios.post(\n\t\t\tgenerateUrl('/settings/users/preferences/group.sortBy'),\n\t\t\t{\n\t\t\t\tvalue: String(sorting),\n\t\t\t},\n\t\t).catch((error) => {\n\t\t\tstate.orderBy = oldValue\n\t\t\tshowError(t('settings', 'Could not set group sorting'))\n\t\t\tlogger.error(error)\n\t\t})\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubAdminGroups() {\n\t\treturn usersSettings.subAdminGroups ?? []\n\t},\n\n\tgetSortedGroups(state) {\n\t\tconst groups = [...state.groups]\n\t\tif (state.orderBy === GroupSorting.UserCount) {\n\t\t\treturn groups.sort((a, b) => {\n\t\t\t\tconst numA = a.usercount - a.disabled\n\t\t\t\tconst numB = b.usercount - b.disabled\n\t\t\t\treturn (numA < numB) ? 1 : (numB < numA ? -1 : naturalCollator.compare(a.name, b.name))\n\t\t\t})\n\t\t} else {\n\t\t\treturn groups.sort((a, b) => naturalCollator.compare(a.name, b.name))\n\t\t}\n\t},\n\tgetGroupSorting(state) {\n\t\treturn state.orderBy\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetDisabledUsersOffset(state) {\n\t\treturn state.disabledUsersOffset\n\t},\n\tgetDisabledUsersLimit(state) {\n\t\treturn state.disabledUsersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n\tgetShowConfig(state) {\n\t\treturn state.showConfig\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * search users\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @return {Promise}\n\t */\n\tsearchUsers(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search })).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get user details\n\t *\n\t * @param {object} context store context\n\t * @param {string} userId user id\n\t * @return {Promise}\n\t */\n\tgetUser(context, userId) {\n\t\treturn api.get(generateOcsUrl(`cloud/users/${userId}`)).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\t/**\n\t\t * Adding filters in the search bar such as in:files, in:users, etc.\n\t\t * collides with this particular search, so we need to remove them\n\t\t * here and leave only the original search query\n\t\t */\n\t\tsearch = search.replace(/in:[^\\s]+/g, '').trim()\n\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\t/**\n\t * Get recent users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search query\n\t * @return {Promise}\n\t */\n\tasync getRecentUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/recent?offset={offset}&limit={limit}&search={search}', { offset, limit, search })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\t\t}\n\t},\n\n\t/**\n\t * Get disabled users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param options.search\n\t * @return {Promise}\n\t */\n\tasync getDisabledUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/disabled?offset={offset}&limit={limit}&search={search}', { offset, limit, search })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\tcontext.commit('updateDisabledUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\t\t}\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { id: group, name: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (getCapabilities().password_policy && getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', getCapabilities().password_policy.minLength)\n\t\t\treturn getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then(() => {\n\t\t\t\t\tcontext.commit('addGroup', { id: gid, name: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then(() => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then(() => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then(() => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then(() => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then(() => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then(() => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tasync wipeUserDevices(context, userid) {\n\t\ttry {\n\t\t\tawait api.requireAdmin()\n\t\t\treturn await api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\treturn Promise.reject(new Error('Failed to wipe user devices'))\n\t\t}\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then(() => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @param {string} options.manager User manager\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language, manager }) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language, manager })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then(() => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tasync setUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname', 'manager']\n\t\tconst validKeys = ['email', 'language', 'quota', 'displayname', 'password', 'manager']\n\n\t\tif (!validKeys.includes(key)) {\n\t\t\tthrow new Error('Invalid request data')\n\t\t}\n\n\t\t// If value is empty and the key doesn't allow empty values, throw error\n\t\tif (value === '' && !allowedEmpty.includes(key)) {\n\t\t\tthrow new Error('Value cannot be empty for this field')\n\t\t}\n\n\t\ttry {\n\t\t\tawait api.requireAdmin()\n\t\t\tawait api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\treturn context.commit('setUserData', { userid, key, value })\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t}\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(() => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport { Store } from 'vuex'\nimport logger from '../logger.js'\nimport apps from './apps.js'\nimport oc from './oc.js'\nimport settings from './users-settings.js'\nimport users from './users.js'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '
' + message, { isHTML: true })\n\t\t} catch {\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t\tlogger.error('An error occurred during the request.', { state, error })\n\t},\n}\n\nlet store = null\n\n/**\n *\n */\nexport function useStore() {\n\tif (store === null) {\n\t\tstore = new Store({\n\t\t\tmodules: {\n\t\t\t\tusers,\n\t\t\t\tapps,\n\t\t\t\tsettings,\n\t\t\t\toc,\n\t\t\t},\n\t\t\tstrict: !PRODUCTION,\n\t\t\tmutations,\n\t\t})\n\t}\n\treturn store\n}\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n */\nexport var GroupSorting;\n(function (GroupSorting) {\n GroupSorting[GroupSorting[\"UserCount\"] = 1] = \"UserCount\";\n GroupSorting[GroupSorting[\"GroupName\"] = 2] = \"GroupName\";\n})(GroupSorting || (GroupSorting = {}));\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overridden using the `options` argument of Popper.js.
\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","function getInternetExplorerVersion() {\n var ua = window.navigator.userAgent;\n var msie = ua.indexOf('MSIE ');\n\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n }\n\n var trident = ua.indexOf('Trident/');\n\n if (trident > 0) {\n // IE 11 => return version number\n var rv = ua.indexOf('rv:');\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n }\n\n var edge = ua.indexOf('Edge/');\n\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n } // other browser\n\n\n return -1;\n}\n\n//\nvar isIE;\n\nfunction initCompat() {\n if (!initCompat.init) {\n initCompat.init = true;\n isIE = getInternetExplorerVersion() !== -1;\n }\n}\n\nvar script = {\n name: 'ResizeObserver',\n props: {\n emitOnMount: {\n type: Boolean,\n default: false\n },\n ignoreWidth: {\n type: Boolean,\n default: false\n },\n ignoreHeight: {\n type: Boolean,\n default: false\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n initCompat();\n this.$nextTick(function () {\n _this._w = _this.$el.offsetWidth;\n _this._h = _this.$el.offsetHeight;\n\n if (_this.emitOnMount) {\n _this.emitSize();\n }\n });\n var object = document.createElement('object');\n this._resizeObject = object;\n object.setAttribute('aria-hidden', 'true');\n object.setAttribute('tabindex', -1);\n object.onload = this.addResizeHandlers;\n object.type = 'text/html';\n\n if (isIE) {\n this.$el.appendChild(object);\n }\n\n object.data = 'about:blank';\n\n if (!isIE) {\n this.$el.appendChild(object);\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.removeResizeHandlers();\n },\n methods: {\n compareAndNotify: function compareAndNotify() {\n if (!this.ignoreWidth && this._w !== this.$el.offsetWidth || !this.ignoreHeight && this._h !== this.$el.offsetHeight) {\n this._w = this.$el.offsetWidth;\n this._h = this.$el.offsetHeight;\n this.emitSize();\n }\n },\n emitSize: function emitSize() {\n this.$emit('notify', {\n width: this._w,\n height: this._h\n });\n },\n addResizeHandlers: function addResizeHandlers() {\n this._resizeObject.contentDocument.defaultView.addEventListener('resize', this.compareAndNotify);\n\n this.compareAndNotify();\n },\n removeResizeHandlers: function removeResizeHandlers() {\n if (this._resizeObject && this._resizeObject.onload) {\n if (!isIE && this._resizeObject.contentDocument) {\n this._resizeObject.contentDocument.defaultView.removeEventListener('resize', this.compareAndNotify);\n }\n\n this.$el.removeChild(this._resizeObject);\n this._resizeObject.onload = null;\n this._resizeObject = null;\n }\n }\n }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\n/* server only */\n, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n if (typeof shadowMode !== 'boolean') {\n createInjectorSSR = createInjector;\n createInjector = shadowMode;\n shadowMode = false;\n } // Vue.extend constructor export interop.\n\n\n var options = typeof script === 'function' ? script.options : script; // render functions\n\n if (template && template.render) {\n options.render = template.render;\n options.staticRenderFns = template.staticRenderFns;\n options._compiled = true; // functional template\n\n if (isFunctionalTemplate) {\n options.functional = true;\n }\n } // scopedId\n\n\n if (scopeId) {\n options._scopeId = scopeId;\n }\n\n var hook;\n\n if (moduleIdentifier) {\n // server build\n hook = function hook(context) {\n // 2.3 injection\n context = context || // cached call\n this.$vnode && this.$vnode.ssrContext || // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n // 2.2 with runInNewContext: true\n\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__;\n } // inject component styles\n\n\n if (style) {\n style.call(this, createInjectorSSR(context));\n } // register component module identifier for async chunk inference\n\n\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n }; // used by ssr in case component is cached and beforeCreate\n // never gets called\n\n\n options._ssrRegister = hook;\n } else if (style) {\n hook = shadowMode ? function (context) {\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\n } : function (context) {\n style.call(this, createInjector(context));\n };\n }\n\n if (hook) {\n if (options.functional) {\n // register for functional component in vue file\n var originalRender = options.render;\n\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n\n return script;\n}\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c(\"div\", {\n staticClass: \"resize-observer\",\n attrs: {\n tabindex: \"-1\"\n }\n });\n};\n\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = \"data-v-8859cc6c\";\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__ = /*#__PURE__*/normalizeComponent({\n render: __vue_render__,\n staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);\n\nfunction install(Vue) {\n // eslint-disable-next-line vue/component-definition-name-casing\n Vue.component('resize-observer', __vue_component__);\n Vue.component('ResizeObserver', __vue_component__);\n}\n\nvar plugin = {\n // eslint-disable-next-line no-undef\n version: \"1.0.1\",\n install: install\n};\n\nvar GlobalVue = null;\n\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n GlobalVue.use(plugin);\n}\n\nexport default plugin;\nexport { __vue_component__ as ResizeObserver, install };\n//# sourceMappingURL=vue-resize.esm.js.map\n","import _typeof from '@babel/runtime/helpers/typeof';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport _classCallCheck from '@babel/runtime/helpers/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/createClass';\nimport Popper from 'popper.js';\nimport isEqual from 'lodash/isEqual';\nimport { ResizeObserver } from 'vue-resize';\nimport merge from 'lodash/merge';\n\nvar SVGAnimatedString = function SVGAnimatedString() {};\n\nif (typeof window !== 'undefined') {\n SVGAnimatedString = window.SVGAnimatedString;\n}\n\nfunction convertToArray(value) {\n if (typeof value === 'string') {\n value = value.split(' ');\n }\n\n return value;\n}\n/**\n * Add classes to an element.\n * This method checks to ensure that the classes don't already exist before adding them.\n * It uses el.className rather than classList in order to be IE friendly.\n * @param {object} el - The element to add the classes to.\n * @param {classes} string - List of space separated classes to be added to the element.\n */\n\nfunction addClasses(el, classes) {\n var newClasses = convertToArray(classes);\n var classList;\n\n if (el.className instanceof SVGAnimatedString) {\n classList = convertToArray(el.className.baseVal);\n } else {\n classList = convertToArray(el.className);\n }\n\n newClasses.forEach(function (newClass) {\n if (classList.indexOf(newClass) === -1) {\n classList.push(newClass);\n }\n });\n\n if (el instanceof SVGElement) {\n el.setAttribute('class', classList.join(' '));\n } else {\n el.className = classList.join(' ');\n }\n}\n/**\n * Remove classes from an element.\n * It uses el.className rather than classList in order to be IE friendly.\n * @export\n * @param {any} el The element to remove the classes from.\n * @param {any} classes List of space separated classes to be removed from the element.\n */\n\nfunction removeClasses(el, classes) {\n var newClasses = convertToArray(classes);\n var classList;\n\n if (el.className instanceof SVGAnimatedString) {\n classList = convertToArray(el.className.baseVal);\n } else {\n classList = convertToArray(el.className);\n }\n\n newClasses.forEach(function (newClass) {\n var index = classList.indexOf(newClass);\n\n if (index !== -1) {\n classList.splice(index, 1);\n }\n });\n\n if (el instanceof SVGElement) {\n el.setAttribute('class', classList.join(' '));\n } else {\n el.className = classList.join(' ');\n }\n}\nvar supportsPassive = false;\n\nif (typeof window !== 'undefined') {\n supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n}\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar DEFAULT_OPTIONS = {\n container: false,\n delay: 0,\n html: false,\n placement: 'top',\n title: '',\n template: '
',\n trigger: 'hover focus',\n offset: 0\n};\nvar openTooltips = [];\n\nvar Tooltip = /*#__PURE__*/function () {\n /**\n * Create a new Tooltip.js instance\n * @class Tooltip\n * @param {HTMLElement} reference - The DOM node used as reference of the tooltip (it can be a jQuery element).\n * @param {Object} options\n * @param {String} options.placement=bottom\n * Placement of the popper accepted values: `top(-start, -end), right(-start, -end), bottom(-start, -end),\n * left(-start, -end)`\n * @param {HTMLElement|String|false} options.container=false - Append the tooltip to a specific element.\n * @param {Number|Object} options.delay=0\n * Delay showing and hiding the tooltip (ms) - does not apply to manual trigger type.\n * If a number is supplied, delay is applied to both hide/show.\n * Object structure is: `{ show: 500, hide: 100 }`\n * @param {Boolean} options.html=false - Insert HTML into the tooltip. If false, the content will inserted with `innerText`.\n * @param {String|PlacementFunction} options.placement='top' - One of the allowed placements, or a function returning one of them.\n * @param {String} [options.template='
']\n * Base HTML to used when creating the tooltip.\n * The tooltip's `title` will be injected into the `.tooltip-inner` or `.tooltip__inner`.\n * `.tooltip-arrow` or `.tooltip__arrow` will become the tooltip's arrow.\n * The outermost wrapper element should have the `.tooltip` class.\n * @param {String|HTMLElement|TitleFunction} options.title='' - Default title value if `title` attribute isn't present.\n * @param {String} [options.trigger='hover focus']\n * How tooltip is triggered - click, hover, focus, manual.\n * You may pass multiple triggers; separate them with a space. `manual` cannot be combined with any other trigger.\n * @param {HTMLElement} options.boundariesElement\n * The element used as boundaries for the tooltip. For more information refer to Popper.js'\n * [boundariesElement docs](https://popper.js.org/popper-documentation.html)\n * @param {Number|String} options.offset=0 - Offset of the tooltip relative to its reference. For more information refer to Popper.js'\n * [offset docs](https://popper.js.org/popper-documentation.html)\n * @param {Object} options.popperOptions={} - Popper options, will be passed directly to popper instance. For more information refer to Popper.js'\n * [options docs](https://popper.js.org/popper-documentation.html)\n * @param {string} [options.ariaId] Id used for accessibility\n * @return {Object} instance - The generated tooltip instance\n */\n function Tooltip(_reference, _options) {\n var _this = this;\n\n _classCallCheck(this, Tooltip);\n\n _defineProperty(this, \"_events\", []);\n\n _defineProperty(this, \"_setTooltipNodeEvent\", function (evt, reference, delay, options) {\n var relatedreference = evt.relatedreference || evt.toElement || evt.relatedTarget;\n\n var callback = function callback(evt2) {\n var relatedreference2 = evt2.relatedreference || evt2.toElement || evt2.relatedTarget; // Remove event listener after call\n\n _this._tooltipNode.removeEventListener(evt.type, callback); // If the new reference is not the reference element\n\n\n if (!reference.contains(relatedreference2)) {\n // Schedule to hide tooltip\n _this._scheduleHide(reference, options.delay, options, evt2);\n }\n };\n\n if (_this._tooltipNode.contains(relatedreference)) {\n // listen to mouseleave on the tooltip element to be able to hide the tooltip\n _this._tooltipNode.addEventListener(evt.type, callback);\n\n return true;\n }\n\n return false;\n });\n\n // apply user options over default ones\n _options = _objectSpread$2(_objectSpread$2({}, DEFAULT_OPTIONS), _options);\n _reference.jquery && (_reference = _reference[0]);\n this.show = this.show.bind(this);\n this.hide = this.hide.bind(this); // cache reference and options\n\n this.reference = _reference;\n this.options = _options; // set initial state\n\n this._isOpen = false;\n\n this._init();\n } //\n // Public methods\n //\n\n /**\n * Reveals an element's tooltip. This is considered a \"manual\" triggering of the tooltip.\n * Tooltips with zero-length titles are never displayed.\n * @method Tooltip#show\n * @memberof Tooltip\n */\n\n\n _createClass(Tooltip, [{\n key: \"show\",\n value: function show() {\n this._show(this.reference, this.options);\n }\n /**\n * Hides an element’s tooltip. This is considered a “manual” triggering of the tooltip.\n * @method Tooltip#hide\n * @memberof Tooltip\n */\n\n }, {\n key: \"hide\",\n value: function hide() {\n this._hide();\n }\n /**\n * Hides and destroys an element’s tooltip.\n * @method Tooltip#dispose\n * @memberof Tooltip\n */\n\n }, {\n key: \"dispose\",\n value: function dispose() {\n this._dispose();\n }\n /**\n * Toggles an element’s tooltip. This is considered a “manual” triggering of the tooltip.\n * @method Tooltip#toggle\n * @memberof Tooltip\n */\n\n }, {\n key: \"toggle\",\n value: function toggle() {\n if (this._isOpen) {\n return this.hide();\n } else {\n return this.show();\n }\n }\n }, {\n key: \"setClasses\",\n value: function setClasses(classes) {\n this._classes = classes;\n }\n }, {\n key: \"setContent\",\n value: function setContent(content) {\n this.options.title = content;\n\n if (this._tooltipNode) {\n this._setContent(content, this.options);\n }\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options) {\n var classesUpdated = false;\n var classes = options && options.classes || directive.options.defaultClass;\n\n if (!isEqual(this._classes, classes)) {\n this.setClasses(classes);\n classesUpdated = true;\n }\n\n options = getOptions(options);\n var needPopperUpdate = false;\n var needRestart = false;\n\n if (this.options.offset !== options.offset || this.options.placement !== options.placement) {\n needPopperUpdate = true;\n }\n\n if (this.options.template !== options.template || this.options.trigger !== options.trigger || this.options.container !== options.container || classesUpdated) {\n needRestart = true;\n }\n\n for (var key in options) {\n this.options[key] = options[key];\n }\n\n if (this._tooltipNode) {\n if (needRestart) {\n var isOpen = this._isOpen;\n this.dispose();\n\n this._init();\n\n if (isOpen) {\n this.show();\n }\n } else if (needPopperUpdate) {\n this.popperInstance.update();\n }\n }\n } //\n // Private methods\n //\n\n }, {\n key: \"_init\",\n value: function _init() {\n // get events list\n var events = typeof this.options.trigger === 'string' ? this.options.trigger.split(' ') : [];\n this._isDisposed = false;\n this._enableDocumentTouch = events.indexOf('manual') === -1;\n events = events.filter(function (trigger) {\n return ['click', 'hover', 'focus'].indexOf(trigger) !== -1;\n }); // set event listeners\n\n this._setEventListeners(this.reference, events, this.options); // title attribute\n\n\n this.$_originalTitle = this.reference.getAttribute('title');\n this.reference.removeAttribute('title');\n this.reference.setAttribute('data-original-title', this.$_originalTitle);\n }\n /**\n * Creates a new tooltip node\n * @memberof Tooltip\n * @private\n * @param {HTMLElement} reference\n * @param {String} template\n * @param {String|HTMLElement|TitleFunction} title\n * @param {Boolean} allowHtml\n * @return {HTMLelement} tooltipNode\n */\n\n }, {\n key: \"_create\",\n value: function _create(reference, template) {\n var _this2 = this;\n\n // create tooltip element\n var tooltipGenerator = window.document.createElement('div');\n tooltipGenerator.innerHTML = template.trim();\n var tooltipNode = tooltipGenerator.childNodes[0]; // add unique ID to our tooltip (needed for accessibility reasons)\n\n tooltipNode.id = this.options.ariaId || \"tooltip_\".concat(Math.random().toString(36).substr(2, 10)); // Initially hide the tooltip\n // The attribute will be switched in a next frame so\n // CSS transitions can play\n\n tooltipNode.setAttribute('aria-hidden', 'true');\n\n if (this.options.autoHide && this.options.trigger.indexOf('hover') !== -1) {\n tooltipNode.addEventListener('mouseenter', function (evt) {\n return _this2._scheduleHide(reference, _this2.options.delay, _this2.options, evt);\n });\n tooltipNode.addEventListener('click', function (evt) {\n return _this2._scheduleHide(reference, _this2.options.delay, _this2.options, evt);\n });\n } // return the generated tooltip node\n\n\n return tooltipNode;\n }\n }, {\n key: \"_setContent\",\n value: function _setContent(content, options) {\n var _this3 = this;\n\n this.asyncContent = false;\n\n this._applyContent(content, options).then(function () {\n if (!_this3.popperInstance) return;\n\n _this3.popperInstance.update();\n });\n }\n }, {\n key: \"_applyContent\",\n value: function _applyContent(title, options) {\n var _this4 = this;\n\n return new Promise(function (resolve, reject) {\n var allowHtml = options.html;\n var rootNode = _this4._tooltipNode;\n if (!rootNode) return;\n var titleNode = rootNode.querySelector(_this4.options.innerSelector);\n\n if (title.nodeType === 1) {\n // if title is a node, append it only if allowHtml is true\n if (allowHtml) {\n while (titleNode.firstChild) {\n titleNode.removeChild(titleNode.firstChild);\n }\n\n titleNode.appendChild(title);\n }\n } else if (typeof title === 'function') {\n // if title is a function, call it and set innerText or innerHtml depending by `allowHtml` value\n var result = title();\n\n if (result && typeof result.then === 'function') {\n _this4.asyncContent = true;\n options.loadingClass && addClasses(rootNode, options.loadingClass);\n\n if (options.loadingContent) {\n _this4._applyContent(options.loadingContent, options);\n }\n\n result.then(function (asyncResult) {\n options.loadingClass && removeClasses(rootNode, options.loadingClass);\n return _this4._applyContent(asyncResult, options);\n }).then(resolve).catch(reject);\n } else {\n _this4._applyContent(result, options).then(resolve).catch(reject);\n }\n\n return;\n } else {\n // if it's just a simple text, set innerText or innerHtml depending by `allowHtml` value\n allowHtml ? titleNode.innerHTML = title : titleNode.innerText = title;\n }\n\n resolve();\n });\n }\n }, {\n key: \"_show\",\n value: function _show(reference, options) {\n if (options && typeof options.container === 'string') {\n var container = document.querySelector(options.container);\n if (!container) return;\n }\n\n clearTimeout(this._disposeTimer);\n options = Object.assign({}, options);\n delete options.offset;\n var updateClasses = true;\n\n if (this._tooltipNode) {\n addClasses(this._tooltipNode, this._classes);\n updateClasses = false;\n }\n\n var result = this._ensureShown(reference, options);\n\n if (updateClasses && this._tooltipNode) {\n addClasses(this._tooltipNode, this._classes);\n }\n\n addClasses(reference, ['v-tooltip-open']);\n return result;\n }\n }, {\n key: \"_ensureShown\",\n value: function _ensureShown(reference, options) {\n var _this5 = this;\n\n // don't show if it's already visible\n if (this._isOpen) {\n return this;\n }\n\n this._isOpen = true;\n openTooltips.push(this); // if the tooltipNode already exists, just show it\n\n if (this._tooltipNode) {\n this._tooltipNode.style.display = '';\n\n this._tooltipNode.setAttribute('aria-hidden', 'false');\n\n this.popperInstance.enableEventListeners();\n this.popperInstance.update();\n\n if (this.asyncContent) {\n this._setContent(options.title, options);\n }\n\n return this;\n } // get title\n\n\n var title = reference.getAttribute('title') || options.title; // don't show tooltip if no title is defined\n\n if (!title) {\n return this;\n } // create tooltip node\n\n\n var tooltipNode = this._create(reference, options.template);\n\n this._tooltipNode = tooltipNode; // Add `aria-describedby` to our reference element for accessibility reasons\n\n reference.setAttribute('aria-describedby', tooltipNode.id); // append tooltip to container\n\n var container = this._findContainer(options.container, reference);\n\n this._append(tooltipNode, container);\n\n var popperOptions = _objectSpread$2(_objectSpread$2({}, options.popperOptions), {}, {\n placement: options.placement\n });\n\n popperOptions.modifiers = _objectSpread$2(_objectSpread$2({}, popperOptions.modifiers), {}, {\n arrow: {\n element: this.options.arrowSelector\n }\n });\n\n if (options.boundariesElement) {\n popperOptions.modifiers.preventOverflow = {\n boundariesElement: options.boundariesElement\n };\n }\n\n this.popperInstance = new Popper(reference, tooltipNode, popperOptions);\n\n this._setContent(title, options); // Fix position\n\n\n requestAnimationFrame(function () {\n if (!_this5._isDisposed && _this5.popperInstance) {\n _this5.popperInstance.update(); // Show the tooltip\n\n\n requestAnimationFrame(function () {\n if (!_this5._isDisposed) {\n _this5._isOpen && tooltipNode.setAttribute('aria-hidden', 'false');\n } else {\n _this5.dispose();\n }\n });\n } else {\n _this5.dispose();\n }\n });\n return this;\n }\n }, {\n key: \"_noLongerOpen\",\n value: function _noLongerOpen() {\n var index = openTooltips.indexOf(this);\n\n if (index !== -1) {\n openTooltips.splice(index, 1);\n }\n }\n }, {\n key: \"_hide\",\n value: function _hide()\n /* reference, options */\n {\n var _this6 = this;\n\n // don't hide if it's already hidden\n if (!this._isOpen) {\n return this;\n }\n\n this._isOpen = false;\n\n this._noLongerOpen(); // hide tooltipNode\n\n\n this._tooltipNode.style.display = 'none';\n\n this._tooltipNode.setAttribute('aria-hidden', 'true');\n\n if (this.popperInstance) {\n this.popperInstance.disableEventListeners();\n }\n\n clearTimeout(this._disposeTimer);\n var disposeTime = directive.options.disposeTimeout;\n\n if (disposeTime !== null) {\n this._disposeTimer = setTimeout(function () {\n if (_this6._tooltipNode) {\n _this6._tooltipNode.removeEventListener('mouseenter', _this6.hide);\n\n _this6._tooltipNode.removeEventListener('click', _this6.hide); // Don't remove popper instance, just the HTML element\n\n\n _this6._removeTooltipNode();\n }\n }, disposeTime);\n }\n\n removeClasses(this.reference, ['v-tooltip-open']);\n return this;\n }\n }, {\n key: \"_removeTooltipNode\",\n value: function _removeTooltipNode() {\n if (!this._tooltipNode) return;\n var parentNode = this._tooltipNode.parentNode;\n\n if (parentNode) {\n parentNode.removeChild(this._tooltipNode);\n this.reference.removeAttribute('aria-describedby');\n }\n\n this._tooltipNode = null;\n }\n }, {\n key: \"_dispose\",\n value: function _dispose() {\n var _this7 = this;\n\n this._isDisposed = true;\n this.reference.removeAttribute('data-original-title');\n\n if (this.$_originalTitle) {\n this.reference.setAttribute('title', this.$_originalTitle);\n } // remove event listeners first to prevent any unexpected behaviour\n\n\n this._events.forEach(function (_ref) {\n var func = _ref.func,\n event = _ref.event;\n\n _this7.reference.removeEventListener(event, func);\n });\n\n this._events = [];\n\n if (this._tooltipNode) {\n this._hide();\n\n this._tooltipNode.removeEventListener('mouseenter', this.hide);\n\n this._tooltipNode.removeEventListener('click', this.hide); // destroy instance\n\n\n this.popperInstance.destroy(); // destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element\n\n if (!this.popperInstance.options.removeOnDestroy) {\n this._removeTooltipNode();\n }\n } else {\n this._noLongerOpen();\n }\n\n return this;\n }\n }, {\n key: \"_findContainer\",\n value: function _findContainer(container, reference) {\n // if container is a query, get the relative element\n if (typeof container === 'string') {\n container = window.document.querySelector(container);\n } else if (container === false) {\n // if container is `false`, set it to reference parent\n container = reference.parentNode;\n }\n\n return container;\n }\n /**\n * Append tooltip to container\n * @memberof Tooltip\n * @private\n * @param {HTMLElement} tooltip\n * @param {HTMLElement|String|false} container\n */\n\n }, {\n key: \"_append\",\n value: function _append(tooltipNode, container) {\n container.appendChild(tooltipNode);\n }\n }, {\n key: \"_setEventListeners\",\n value: function _setEventListeners(reference, events, options) {\n var _this8 = this;\n\n var directEvents = [];\n var oppositeEvents = [];\n events.forEach(function (event) {\n switch (event) {\n case 'hover':\n directEvents.push('mouseenter');\n oppositeEvents.push('mouseleave');\n if (_this8.options.hideOnTargetClick) oppositeEvents.push('click');\n break;\n\n case 'focus':\n directEvents.push('focus');\n oppositeEvents.push('blur');\n if (_this8.options.hideOnTargetClick) oppositeEvents.push('click');\n break;\n\n case 'click':\n directEvents.push('click');\n oppositeEvents.push('click');\n break;\n }\n }); // schedule show tooltip\n\n directEvents.forEach(function (event) {\n var func = function func(evt) {\n if (_this8._isOpen === true) {\n return;\n }\n\n evt.usedByTooltip = true;\n\n _this8._scheduleShow(reference, options.delay, options, evt);\n };\n\n _this8._events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n }); // schedule hide tooltip\n\n oppositeEvents.forEach(function (event) {\n var func = function func(evt) {\n if (evt.usedByTooltip === true) {\n return;\n }\n\n _this8._scheduleHide(reference, options.delay, options, evt);\n };\n\n _this8._events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n });\n }\n }, {\n key: \"_onDocumentTouch\",\n value: function _onDocumentTouch(event) {\n if (this._enableDocumentTouch) {\n this._scheduleHide(this.reference, this.options.delay, this.options, event);\n }\n }\n }, {\n key: \"_scheduleShow\",\n value: function _scheduleShow(reference, delay, options\n /*, evt */\n ) {\n var _this9 = this;\n\n // defaults to 0\n var computedDelay = delay && delay.show || delay || 0;\n clearTimeout(this._scheduleTimer);\n this._scheduleTimer = window.setTimeout(function () {\n return _this9._show(reference, options);\n }, computedDelay);\n }\n }, {\n key: \"_scheduleHide\",\n value: function _scheduleHide(reference, delay, options, evt) {\n var _this10 = this;\n\n // defaults to 0\n var computedDelay = delay && delay.hide || delay || 0;\n clearTimeout(this._scheduleTimer);\n this._scheduleTimer = window.setTimeout(function () {\n if (_this10._isOpen === false) {\n return;\n }\n\n if (!_this10._tooltipNode.ownerDocument.body.contains(_this10._tooltipNode)) {\n return;\n } // if we are hiding because of a mouseleave, we must check that the new\n // reference isn't the tooltip, because in this case we don't want to hide it\n\n\n if (evt.type === 'mouseleave') {\n var isSet = _this10._setTooltipNodeEvent(evt, reference, delay, options); // if we set the new event, don't hide the tooltip yet\n // the new event will take care to hide it if necessary\n\n\n if (isSet) {\n return;\n }\n }\n\n _this10._hide(reference, options);\n }, computedDelay);\n }\n }]);\n\n return Tooltip;\n}(); // Hide tooltips on touch devices\n\nif (typeof document !== 'undefined') {\n document.addEventListener('touchstart', function (event) {\n for (var i = 0; i < openTooltips.length; i++) {\n openTooltips[i]._onDocumentTouch(event);\n }\n }, supportsPassive ? {\n passive: true,\n capture: true\n } : true);\n}\n/**\n * Placement function, its context is the Tooltip instance.\n * @memberof Tooltip\n * @callback PlacementFunction\n * @param {HTMLElement} tooltip - tooltip DOM node.\n * @param {HTMLElement} reference - reference DOM node.\n * @return {String} placement - One of the allowed placement options.\n */\n\n/**\n * Title function, its context is the Tooltip instance.\n * @memberof Tooltip\n * @callback TitleFunction\n * @return {String} placement - The desired title.\n */\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar state = {\n enabled: true\n};\nvar positions = ['top', 'top-start', 'top-end', 'right', 'right-start', 'right-end', 'bottom', 'bottom-start', 'bottom-end', 'left', 'left-start', 'left-end'];\nvar defaultOptions = {\n // Default tooltip placement relative to target element\n defaultPlacement: 'top',\n // Default CSS classes applied to the tooltip element\n defaultClass: 'vue-tooltip-theme',\n // Default CSS classes applied to the target element of the tooltip\n defaultTargetClass: 'has-tooltip',\n // Is the content HTML by default?\n defaultHtml: true,\n // Default HTML template of the tooltip element\n // It must include `tooltip-arrow` & `tooltip-inner` CSS classes (can be configured, see below)\n // Change if the classes conflict with other libraries (for example bootstrap)\n defaultTemplate: '
',\n // Selector used to get the arrow element in the tooltip template\n defaultArrowSelector: '.tooltip-arrow, .tooltip__arrow',\n // Selector used to get the inner content element in the tooltip template\n defaultInnerSelector: '.tooltip-inner, .tooltip__inner',\n // Delay (ms)\n defaultDelay: 0,\n // Default events that trigger the tooltip\n defaultTrigger: 'hover focus',\n // Default position offset (px)\n defaultOffset: 0,\n // Default container where the tooltip will be appended\n defaultContainer: 'body',\n defaultBoundariesElement: undefined,\n defaultPopperOptions: {},\n // Class added when content is loading\n defaultLoadingClass: 'tooltip-loading',\n // Displayed when tooltip content is loading\n defaultLoadingContent: '...',\n // Hide on mouseover tooltip\n autoHide: true,\n // Close tooltip on click on tooltip target?\n defaultHideOnTargetClick: true,\n // Auto destroy tooltip DOM nodes (ms)\n disposeTimeout: 5000,\n // Options for popover\n popover: {\n defaultPlacement: 'bottom',\n // Use the `popoverClass` prop for theming\n defaultClass: 'vue-popover-theme',\n // Base class (change if conflicts with other libraries)\n defaultBaseClass: 'tooltip popover',\n // Wrapper class (contains arrow and inner)\n defaultWrapperClass: 'wrapper',\n // Inner content class\n defaultInnerClass: 'tooltip-inner popover-inner',\n // Arrow class\n defaultArrowClass: 'tooltip-arrow popover-arrow',\n // Class added when popover is open\n defaultOpenClass: 'open',\n defaultDelay: 0,\n defaultTrigger: 'click',\n defaultOffset: 0,\n defaultContainer: 'body',\n defaultBoundariesElement: undefined,\n defaultPopperOptions: {},\n // Hides if clicked outside of popover\n defaultAutoHide: true,\n // Update popper on content resize\n defaultHandleResize: true\n }\n};\nfunction getOptions(options) {\n var result = {\n placement: typeof options.placement !== 'undefined' ? options.placement : directive.options.defaultPlacement,\n delay: typeof options.delay !== 'undefined' ? options.delay : directive.options.defaultDelay,\n html: typeof options.html !== 'undefined' ? options.html : directive.options.defaultHtml,\n template: typeof options.template !== 'undefined' ? options.template : directive.options.defaultTemplate,\n arrowSelector: typeof options.arrowSelector !== 'undefined' ? options.arrowSelector : directive.options.defaultArrowSelector,\n innerSelector: typeof options.innerSelector !== 'undefined' ? options.innerSelector : directive.options.defaultInnerSelector,\n trigger: typeof options.trigger !== 'undefined' ? options.trigger : directive.options.defaultTrigger,\n offset: typeof options.offset !== 'undefined' ? options.offset : directive.options.defaultOffset,\n container: typeof options.container !== 'undefined' ? options.container : directive.options.defaultContainer,\n boundariesElement: typeof options.boundariesElement !== 'undefined' ? options.boundariesElement : directive.options.defaultBoundariesElement,\n autoHide: typeof options.autoHide !== 'undefined' ? options.autoHide : directive.options.autoHide,\n hideOnTargetClick: typeof options.hideOnTargetClick !== 'undefined' ? options.hideOnTargetClick : directive.options.defaultHideOnTargetClick,\n loadingClass: typeof options.loadingClass !== 'undefined' ? options.loadingClass : directive.options.defaultLoadingClass,\n loadingContent: typeof options.loadingContent !== 'undefined' ? options.loadingContent : directive.options.defaultLoadingContent,\n popperOptions: _objectSpread$1({}, typeof options.popperOptions !== 'undefined' ? options.popperOptions : directive.options.defaultPopperOptions)\n };\n\n if (result.offset) {\n var typeofOffset = _typeof(result.offset);\n\n var offset = result.offset; // One value -> switch\n\n if (typeofOffset === 'number' || typeofOffset === 'string' && offset.indexOf(',') === -1) {\n offset = \"0, \".concat(offset);\n }\n\n if (!result.popperOptions.modifiers) {\n result.popperOptions.modifiers = {};\n }\n\n result.popperOptions.modifiers.offset = {\n offset: offset\n };\n }\n\n if (result.trigger && result.trigger.indexOf('click') !== -1) {\n result.hideOnTargetClick = false;\n }\n\n return result;\n}\nfunction getPlacement(value, modifiers) {\n var placement = value.placement;\n\n for (var i = 0; i < positions.length; i++) {\n var pos = positions[i];\n\n if (modifiers[pos]) {\n placement = pos;\n }\n }\n\n return placement;\n}\nfunction getContent(value) {\n var type = _typeof(value);\n\n if (type === 'string') {\n return value;\n } else if (value && type === 'object') {\n return value.content;\n } else {\n return false;\n }\n}\nfunction createTooltip(el, value) {\n var modifiers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var content = getContent(value);\n var classes = typeof value.classes !== 'undefined' ? value.classes : directive.options.defaultClass;\n\n var opts = _objectSpread$1({\n title: content\n }, getOptions(_objectSpread$1(_objectSpread$1({}, _typeof(value) === 'object' ? value : {}), {}, {\n placement: getPlacement(value, modifiers)\n })));\n\n var tooltip = el._tooltip = new Tooltip(el, opts);\n tooltip.setClasses(classes);\n tooltip._vueEl = el; // Class on target\n\n var targetClasses = typeof value.targetClasses !== 'undefined' ? value.targetClasses : directive.options.defaultTargetClass;\n el._tooltipTargetClasses = targetClasses;\n addClasses(el, targetClasses);\n return tooltip;\n}\nfunction destroyTooltip(el) {\n if (el._tooltip) {\n el._tooltip.dispose();\n\n delete el._tooltip;\n delete el._tooltipOldShow;\n }\n\n if (el._tooltipTargetClasses) {\n removeClasses(el, el._tooltipTargetClasses);\n delete el._tooltipTargetClasses;\n }\n}\nfunction bind(el, _ref) {\n var value = _ref.value;\n _ref.oldValue;\n var modifiers = _ref.modifiers;\n var content = getContent(value);\n\n if (!content || !state.enabled) {\n destroyTooltip(el);\n } else {\n var tooltip;\n\n if (el._tooltip) {\n tooltip = el._tooltip; // Content\n\n tooltip.setContent(content); // Options\n\n tooltip.setOptions(_objectSpread$1(_objectSpread$1({}, value), {}, {\n placement: getPlacement(value, modifiers)\n }));\n } else {\n tooltip = createTooltip(el, value, modifiers);\n } // Manual show\n\n\n if (typeof value.show !== 'undefined' && value.show !== el._tooltipOldShow) {\n el._tooltipOldShow = value.show;\n value.show ? tooltip.show() : tooltip.hide();\n }\n }\n}\nvar directive = {\n options: defaultOptions,\n bind: bind,\n update: bind,\n unbind: function unbind(el) {\n destroyTooltip(el);\n }\n};\n\nfunction addListeners(el) {\n el.addEventListener('click', onClick);\n el.addEventListener('touchstart', onTouchStart, supportsPassive ? {\n passive: true\n } : false);\n}\n\nfunction removeListeners(el) {\n el.removeEventListener('click', onClick);\n el.removeEventListener('touchstart', onTouchStart);\n el.removeEventListener('touchend', onTouchEnd);\n el.removeEventListener('touchcancel', onTouchCancel);\n}\n\nfunction onClick(event) {\n var el = event.currentTarget;\n event.closePopover = !el.$_vclosepopover_touch;\n event.closeAllPopover = el.$_closePopoverModifiers && !!el.$_closePopoverModifiers.all;\n}\n\nfunction onTouchStart(event) {\n if (event.changedTouches.length === 1) {\n var el = event.currentTarget;\n el.$_vclosepopover_touch = true;\n var touch = event.changedTouches[0];\n el.$_vclosepopover_touchPoint = touch;\n el.addEventListener('touchend', onTouchEnd);\n el.addEventListener('touchcancel', onTouchCancel);\n }\n}\n\nfunction onTouchEnd(event) {\n var el = event.currentTarget;\n el.$_vclosepopover_touch = false;\n\n if (event.changedTouches.length === 1) {\n var touch = event.changedTouches[0];\n var firstTouch = el.$_vclosepopover_touchPoint;\n event.closePopover = Math.abs(touch.screenY - firstTouch.screenY) < 20 && Math.abs(touch.screenX - firstTouch.screenX) < 20;\n event.closeAllPopover = el.$_closePopoverModifiers && !!el.$_closePopoverModifiers.all;\n }\n}\n\nfunction onTouchCancel(event) {\n var el = event.currentTarget;\n el.$_vclosepopover_touch = false;\n}\n\nvar vclosepopover = {\n bind: function bind(el, _ref) {\n var value = _ref.value,\n modifiers = _ref.modifiers;\n el.$_closePopoverModifiers = modifiers;\n\n if (typeof value === 'undefined' || value) {\n addListeners(el);\n }\n },\n update: function update(el, _ref2) {\n var value = _ref2.value,\n oldValue = _ref2.oldValue,\n modifiers = _ref2.modifiers;\n el.$_closePopoverModifiers = modifiers;\n\n if (value !== oldValue) {\n if (typeof value === 'undefined' || value) {\n addListeners(el);\n } else {\n removeListeners(el);\n }\n }\n },\n unbind: function unbind(el) {\n removeListeners(el);\n }\n};\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction getDefault(key) {\n var value = directive.options.popover[key];\n\n if (typeof value === 'undefined') {\n return directive.options[key];\n }\n\n return value;\n}\n\nvar isIOS = false;\n\nif (typeof window !== 'undefined' && typeof navigator !== 'undefined') {\n isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n}\n\nvar openPopovers = [];\n\nvar Element = function Element() {};\n\nif (typeof window !== 'undefined') {\n Element = window.Element;\n}\n\nvar script = {\n name: 'VPopover',\n components: {\n ResizeObserver: ResizeObserver\n },\n props: {\n open: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n placement: {\n type: String,\n default: function _default() {\n return getDefault('defaultPlacement');\n }\n },\n delay: {\n type: [String, Number, Object],\n default: function _default() {\n return getDefault('defaultDelay');\n }\n },\n offset: {\n type: [String, Number],\n default: function _default() {\n return getDefault('defaultOffset');\n }\n },\n trigger: {\n type: String,\n default: function _default() {\n return getDefault('defaultTrigger');\n }\n },\n container: {\n type: [String, Object, Element, Boolean],\n default: function _default() {\n return getDefault('defaultContainer');\n }\n },\n boundariesElement: {\n type: [String, Element],\n default: function _default() {\n return getDefault('defaultBoundariesElement');\n }\n },\n popperOptions: {\n type: Object,\n default: function _default() {\n return getDefault('defaultPopperOptions');\n }\n },\n popoverClass: {\n type: [String, Array],\n default: function _default() {\n return getDefault('defaultClass');\n }\n },\n popoverBaseClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultBaseClass;\n }\n },\n popoverInnerClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultInnerClass;\n }\n },\n popoverWrapperClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultWrapperClass;\n }\n },\n popoverArrowClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultArrowClass;\n }\n },\n autoHide: {\n type: Boolean,\n default: function _default() {\n return directive.options.popover.defaultAutoHide;\n }\n },\n handleResize: {\n type: Boolean,\n default: function _default() {\n return directive.options.popover.defaultHandleResize;\n }\n },\n openGroup: {\n type: String,\n default: null\n },\n openClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultOpenClass;\n }\n },\n ariaId: {\n default: null\n }\n },\n data: function data() {\n return {\n isOpen: false,\n id: Math.random().toString(36).substr(2, 10)\n };\n },\n computed: {\n cssClass: function cssClass() {\n return _defineProperty({}, this.openClass, this.isOpen);\n },\n popoverId: function popoverId() {\n return \"popover_\".concat(this.ariaId != null ? this.ariaId : this.id);\n }\n },\n watch: {\n open: function open(val) {\n if (val) {\n this.show();\n } else {\n this.hide();\n }\n },\n disabled: function disabled(val, oldVal) {\n if (val !== oldVal) {\n if (val) {\n this.hide();\n } else if (this.open) {\n this.show();\n }\n }\n },\n container: function container(val) {\n if (this.isOpen && this.popperInstance) {\n var popoverNode = this.$refs.popover;\n var reference = this.$refs.trigger;\n var container = this.$_findContainer(this.container, reference);\n\n if (!container) {\n console.warn('No container for popover', this);\n return;\n }\n\n container.appendChild(popoverNode);\n this.popperInstance.scheduleUpdate();\n }\n },\n trigger: function trigger(val) {\n this.$_removeEventListeners();\n this.$_addEventListeners();\n },\n placement: function placement(val) {\n var _this = this;\n\n this.$_updatePopper(function () {\n _this.popperInstance.options.placement = val;\n });\n },\n offset: '$_restartPopper',\n boundariesElement: '$_restartPopper',\n popperOptions: {\n handler: '$_restartPopper',\n deep: true\n }\n },\n created: function created() {\n this.$_isDisposed = false;\n this.$_mounted = false;\n this.$_events = [];\n this.$_preventOpen = false;\n },\n mounted: function mounted() {\n var popoverNode = this.$refs.popover;\n popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n this.$_init();\n\n if (this.open) {\n this.show();\n }\n },\n deactivated: function deactivated() {\n this.hide();\n },\n beforeDestroy: function beforeDestroy() {\n this.dispose();\n },\n methods: {\n show: function show() {\n var _this2 = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n event = _ref2.event;\n _ref2.skipDelay;\n var _ref2$force = _ref2.force,\n force = _ref2$force === void 0 ? false : _ref2$force;\n\n if (force || !this.disabled) {\n this.$_scheduleShow(event);\n this.$emit('show');\n }\n\n this.$emit('update:open', true);\n this.$_beingShowed = true;\n requestAnimationFrame(function () {\n _this2.$_beingShowed = false;\n });\n },\n hide: function hide() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n event = _ref3.event;\n _ref3.skipDelay;\n\n this.$_scheduleHide(event);\n this.$emit('hide');\n this.$emit('update:open', false);\n },\n dispose: function dispose() {\n this.$_isDisposed = true;\n this.$_removeEventListeners();\n this.hide({\n skipDelay: true\n });\n\n if (this.popperInstance) {\n this.popperInstance.destroy(); // destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element\n\n if (!this.popperInstance.options.removeOnDestroy) {\n var popoverNode = this.$refs.popover;\n popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n }\n }\n\n this.$_mounted = false;\n this.popperInstance = null;\n this.isOpen = false;\n this.$emit('dispose');\n },\n $_init: function $_init() {\n if (this.trigger.indexOf('manual') === -1) {\n this.$_addEventListeners();\n }\n },\n $_show: function $_show() {\n var _this3 = this;\n\n var reference = this.$refs.trigger;\n var popoverNode = this.$refs.popover;\n clearTimeout(this.$_disposeTimer); // Already open\n\n if (this.isOpen) {\n return;\n } // Popper is already initialized\n\n\n if (this.popperInstance) {\n this.isOpen = true;\n this.popperInstance.enableEventListeners();\n this.popperInstance.scheduleUpdate();\n }\n\n if (!this.$_mounted) {\n var container = this.$_findContainer(this.container, reference);\n\n if (!container) {\n console.warn('No container for popover', this);\n return;\n }\n\n container.appendChild(popoverNode);\n this.$_mounted = true;\n this.isOpen = false;\n\n if (this.popperInstance) {\n requestAnimationFrame(function () {\n if (!_this3.hidden) {\n _this3.isOpen = true;\n }\n });\n }\n }\n\n if (!this.popperInstance) {\n var popperOptions = _objectSpread(_objectSpread({}, this.popperOptions), {}, {\n placement: this.placement\n });\n\n popperOptions.modifiers = _objectSpread(_objectSpread({}, popperOptions.modifiers), {}, {\n arrow: _objectSpread(_objectSpread({}, popperOptions.modifiers && popperOptions.modifiers.arrow), {}, {\n element: this.$refs.arrow\n })\n });\n\n if (this.offset) {\n var offset = this.$_getOffset();\n popperOptions.modifiers.offset = _objectSpread(_objectSpread({}, popperOptions.modifiers && popperOptions.modifiers.offset), {}, {\n offset: offset\n });\n }\n\n if (this.boundariesElement) {\n popperOptions.modifiers.preventOverflow = _objectSpread(_objectSpread({}, popperOptions.modifiers && popperOptions.modifiers.preventOverflow), {}, {\n boundariesElement: this.boundariesElement\n });\n }\n\n this.popperInstance = new Popper(reference, popoverNode, popperOptions); // Fix position\n\n requestAnimationFrame(function () {\n if (_this3.hidden) {\n _this3.hidden = false;\n\n _this3.$_hide();\n\n return;\n }\n\n if (!_this3.$_isDisposed && _this3.popperInstance) {\n _this3.popperInstance.scheduleUpdate(); // Show the tooltip\n\n\n requestAnimationFrame(function () {\n if (_this3.hidden) {\n _this3.hidden = false;\n\n _this3.$_hide();\n\n return;\n }\n\n if (!_this3.$_isDisposed) {\n _this3.isOpen = true;\n } else {\n _this3.dispose();\n }\n });\n } else {\n _this3.dispose();\n }\n });\n }\n\n var openGroup = this.openGroup;\n\n if (openGroup) {\n var popover;\n\n for (var i = 0; i < openPopovers.length; i++) {\n popover = openPopovers[i];\n\n if (popover.openGroup !== openGroup) {\n popover.hide();\n popover.$emit('close-group');\n }\n }\n }\n\n openPopovers.push(this);\n this.$emit('apply-show');\n },\n $_hide: function $_hide() {\n var _this4 = this;\n\n // Already hidden\n if (!this.isOpen) {\n return;\n }\n\n var index = openPopovers.indexOf(this);\n\n if (index !== -1) {\n openPopovers.splice(index, 1);\n }\n\n this.isOpen = false;\n\n if (this.popperInstance) {\n this.popperInstance.disableEventListeners();\n }\n\n clearTimeout(this.$_disposeTimer);\n var disposeTime = directive.options.popover.disposeTimeout || directive.options.disposeTimeout;\n\n if (disposeTime !== null) {\n this.$_disposeTimer = setTimeout(function () {\n var popoverNode = _this4.$refs.popover;\n\n if (popoverNode) {\n // Don't remove popper instance, just the HTML element\n popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n _this4.$_mounted = false;\n }\n }, disposeTime);\n }\n\n this.$emit('apply-hide');\n },\n $_findContainer: function $_findContainer(container, reference) {\n // if container is a query, get the relative element\n if (typeof container === 'string') {\n container = window.document.querySelector(container);\n } else if (container === false) {\n // if container is `false`, set it to reference parent\n container = reference.parentNode;\n }\n\n return container;\n },\n $_getOffset: function $_getOffset() {\n var typeofOffset = _typeof(this.offset);\n\n var offset = this.offset; // One value -> switch\n\n if (typeofOffset === 'number' || typeofOffset === 'string' && offset.indexOf(',') === -1) {\n offset = \"0, \".concat(offset);\n }\n\n return offset;\n },\n $_addEventListeners: function $_addEventListeners() {\n var _this5 = this;\n\n var reference = this.$refs.trigger;\n var directEvents = [];\n var oppositeEvents = [];\n var events = typeof this.trigger === 'string' ? this.trigger.split(' ').filter(function (trigger) {\n return ['click', 'hover', 'focus'].indexOf(trigger) !== -1;\n }) : [];\n events.forEach(function (event) {\n switch (event) {\n case 'hover':\n directEvents.push('mouseenter');\n oppositeEvents.push('mouseleave');\n break;\n\n case 'focus':\n directEvents.push('focus');\n oppositeEvents.push('blur');\n break;\n\n case 'click':\n directEvents.push('click');\n oppositeEvents.push('click');\n break;\n }\n }); // schedule show tooltip\n\n directEvents.forEach(function (event) {\n var func = function func(event) {\n if (_this5.isOpen) {\n return;\n }\n\n event.usedByTooltip = true;\n !_this5.$_preventOpen && _this5.show({\n event: event\n });\n _this5.hidden = false;\n };\n\n _this5.$_events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n }); // schedule hide tooltip\n\n oppositeEvents.forEach(function (event) {\n var func = function func(event) {\n if (event.usedByTooltip) {\n return;\n }\n\n _this5.hide({\n event: event\n });\n\n _this5.hidden = true;\n };\n\n _this5.$_events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n });\n },\n $_scheduleShow: function $_scheduleShow() {\n var skipDelay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n clearTimeout(this.$_scheduleTimer);\n\n if (skipDelay) {\n this.$_show();\n } else {\n // defaults to 0\n var computedDelay = parseInt(this.delay && this.delay.show || this.delay || 0);\n this.$_scheduleTimer = setTimeout(this.$_show.bind(this), computedDelay);\n }\n },\n $_scheduleHide: function $_scheduleHide() {\n var _this6 = this;\n\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var skipDelay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n clearTimeout(this.$_scheduleTimer);\n\n if (skipDelay) {\n this.$_hide();\n } else {\n // defaults to 0\n var computedDelay = parseInt(this.delay && this.delay.hide || this.delay || 0);\n this.$_scheduleTimer = setTimeout(function () {\n if (!_this6.isOpen) {\n return;\n } // if we are hiding because of a mouseleave, we must check that the new\n // reference isn't the tooltip, because in this case we don't want to hide it\n\n\n if (event && event.type === 'mouseleave') {\n var isSet = _this6.$_setTooltipNodeEvent(event); // if we set the new event, don't hide the tooltip yet\n // the new event will take care to hide it if necessary\n\n\n if (isSet) {\n return;\n }\n }\n\n _this6.$_hide();\n }, computedDelay);\n }\n },\n $_setTooltipNodeEvent: function $_setTooltipNodeEvent(event) {\n var _this7 = this;\n\n var reference = this.$refs.trigger;\n var popoverNode = this.$refs.popover;\n var relatedreference = event.relatedreference || event.toElement || event.relatedTarget;\n\n var callback = function callback(event2) {\n var relatedreference2 = event2.relatedreference || event2.toElement || event2.relatedTarget; // Remove event listener after call\n\n popoverNode.removeEventListener(event.type, callback); // If the new reference is not the reference element\n\n if (!reference.contains(relatedreference2)) {\n // Schedule to hide tooltip\n _this7.hide({\n event: event2\n });\n }\n };\n\n if (popoverNode.contains(relatedreference)) {\n // listen to mouseleave on the tooltip element to be able to hide the tooltip\n popoverNode.addEventListener(event.type, callback);\n return true;\n }\n\n return false;\n },\n $_removeEventListeners: function $_removeEventListeners() {\n var reference = this.$refs.trigger;\n this.$_events.forEach(function (_ref4) {\n var func = _ref4.func,\n event = _ref4.event;\n reference.removeEventListener(event, func);\n });\n this.$_events = [];\n },\n $_updatePopper: function $_updatePopper(cb) {\n if (this.popperInstance) {\n cb();\n if (this.isOpen) this.popperInstance.scheduleUpdate();\n }\n },\n $_restartPopper: function $_restartPopper() {\n if (this.popperInstance) {\n var isOpen = this.isOpen;\n this.dispose();\n this.$_isDisposed = false;\n this.$_init();\n\n if (isOpen) {\n this.show({\n skipDelay: true,\n force: true\n });\n }\n }\n },\n $_handleGlobalClose: function $_handleGlobalClose(event) {\n var _this8 = this;\n\n var touch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (this.$_beingShowed) return;\n this.hide({\n event: event\n });\n\n if (event.closePopover) {\n this.$emit('close-directive');\n } else {\n this.$emit('auto-hide');\n }\n\n if (touch) {\n this.$_preventOpen = true;\n setTimeout(function () {\n _this8.$_preventOpen = false;\n }, 300);\n }\n },\n $_handleResize: function $_handleResize() {\n if (this.isOpen && this.popperInstance) {\n this.popperInstance.scheduleUpdate();\n this.$emit('resize');\n }\n }\n }\n};\n\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n if (isIOS) {\n document.addEventListener('touchend', handleGlobalTouchend, supportsPassive ? {\n passive: true,\n capture: true\n } : true);\n } else {\n window.addEventListener('click', handleGlobalClick, true);\n }\n}\n\nfunction handleGlobalClick(event) {\n handleGlobalClose(event);\n}\n\nfunction handleGlobalTouchend(event) {\n handleGlobalClose(event, true);\n}\n\nfunction handleGlobalClose(event) {\n var touch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var _loop = function _loop(i) {\n var popover = openPopovers[i];\n\n if (popover.$refs.popover) {\n var contains = popover.$refs.popover.contains(event.target);\n requestAnimationFrame(function () {\n if (event.closeAllPopover || event.closePopover && contains || popover.autoHide && !contains) {\n popover.$_handleGlobalClose(event, touch);\n }\n });\n }\n };\n\n // Delay so that close directive has time to set values\n for (var i = 0; i < openPopovers.length; i++) {\n _loop(i);\n }\n}\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n const options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n let hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n const originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n const existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c(\"div\", {\n staticClass: \"v-popover\",\n class: _vm.cssClass\n }, [_c(\"div\", {\n ref: \"trigger\",\n staticClass: \"trigger\",\n staticStyle: {\n display: \"inline-block\"\n },\n attrs: {\n \"aria-describedby\": _vm.isOpen ? _vm.popoverId : undefined,\n tabindex: _vm.trigger.indexOf(\"focus\") !== -1 ? 0 : undefined\n }\n }, [_vm._t(\"default\")], 2), _vm._v(\" \"), _c(\"div\", {\n ref: \"popover\",\n class: [_vm.popoverBaseClass, _vm.popoverClass, _vm.cssClass],\n style: {\n visibility: _vm.isOpen ? \"visible\" : \"hidden\"\n },\n attrs: {\n id: _vm.popoverId,\n \"aria-hidden\": _vm.isOpen ? \"false\" : \"true\",\n tabindex: _vm.autoHide ? 0 : undefined\n },\n on: {\n keyup: function keyup($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) {\n return null;\n }\n\n _vm.autoHide && _vm.hide();\n }\n }\n }, [_c(\"div\", {\n class: _vm.popoverWrapperClass\n }, [_c(\"div\", {\n ref: \"inner\",\n class: _vm.popoverInnerClass,\n staticStyle: {\n position: \"relative\"\n }\n }, [_c(\"div\", [_vm._t(\"popover\", null, {\n isOpen: _vm.isOpen\n })], 2), _vm._v(\" \"), _vm.handleResize ? _c(\"ResizeObserver\", {\n on: {\n notify: _vm.$_handleResize\n }\n }) : _vm._e()], 1), _vm._v(\" \"), _c(\"div\", {\n ref: \"arrow\",\n class: _vm.popoverArrowClass\n })])])]);\n};\n\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__ = /*#__PURE__*/normalizeComponent({\n render: __vue_render__,\n staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css_248z = \".resize-observer[data-v-8859cc6c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-8859cc6c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}\";\nstyleInject(css_248z);\n\nfunction install(Vue) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (install.installed) return;\n install.installed = true;\n var finalOptions = {};\n merge(finalOptions, defaultOptions, options);\n plugin.options = finalOptions;\n directive.options = finalOptions;\n Vue.directive('tooltip', directive);\n Vue.directive('close-popover', vclosepopover);\n Vue.component('VPopover', __vue_component__);\n}\nvar VTooltip = directive;\nvar VClosePopover = vclosepopover;\nvar VPopover = __vue_component__;\nvar plugin = {\n install: install,\n\n get enabled() {\n return state.enabled;\n },\n\n set enabled(value) {\n state.enabled = value;\n }\n\n}; // Auto-install\n\nvar GlobalVue = null;\n\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n GlobalVue.use(plugin);\n}\n\nexport default plugin;\nexport { VClosePopover, VPopover, VTooltip, createTooltip, destroyTooltip, install };\n","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcContent,{attrs:{\"app-name\":\"settings\"}},[_c('router-view',{attrs:{\"name\":\"navigation\"}}),_vm._v(\" \"),_c('router-view'),_vm._v(\" \"),_c('router-view',{attrs:{\"name\":\"sidebar\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./SettingsApp.vue?vue&type=template&id=288003b1\"\nimport script from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { loadState } from '@nextcloud/initial-state';\nconst appstoreEnabled = loadState('settings', 'appstoreEnabled', true);\n// Dynamic loading\nconst AppStore = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStore.vue');\nconst AppStoreNavigation = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreNavigation.vue');\nconst AppStoreSidebar = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreSidebar.vue');\nconst UserManagement = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagement.vue');\nconst UserManagementNavigation = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagementNavigation.vue');\nconst routes = [\n {\n name: 'users',\n path: '/:index(index.php/)?settings/users',\n components: {\n default: UserManagement,\n navigation: UserManagementNavigation,\n },\n props: true,\n children: [\n {\n path: ':selectedGroup',\n name: 'group',\n },\n ],\n },\n {\n path: '/:index(index.php/)?settings/apps',\n name: 'apps',\n redirect: {\n name: 'apps-category',\n params: {\n category: appstoreEnabled ? 'discover' : 'installed',\n },\n },\n components: {\n default: AppStore,\n navigation: AppStoreNavigation,\n sidebar: AppStoreSidebar,\n },\n children: [\n {\n path: ':category',\n name: 'apps-category',\n children: [\n {\n path: ':id',\n name: 'apps-details',\n },\n ],\n },\n ],\n },\n];\nexport default routes;\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { generateUrl } from '@nextcloud/router';\nimport Vue from 'vue';\nimport Router from 'vue-router';\nimport routes from './routes.ts';\nVue.use(Router);\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl(''),\n linkActiveClass: 'active',\n routes,\n});\nexport default router;\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { n, t } from '@nextcloud/l10n';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport VTooltipPlugin from 'v-tooltip';\nimport Vue from 'vue';\nimport Vuex from 'vuex';\nimport { sync } from 'vuex-router-sync';\nimport SettingsApp from './views/SettingsApp.vue';\nimport router from './router/index.ts';\nimport { useStore } from './store/index.js';\n// CSP config for webpack dynamic chunk loading\n__webpack_nonce__ = getCSPNonce();\n// bind to window\nVue.prototype.t = t;\nVue.prototype.n = n;\nVue.use(PiniaVuePlugin);\nVue.use(VTooltipPlugin, { defaultHtml: false });\nVue.use(Vuex);\nconst store = useStore();\nsync(store, router);\nconst pinia = createPinia();\nexport default new Vue({\n router,\n store,\n pinia,\n render: (h) => h(SettingsApp),\n el: '#content',\n});\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('settings')\n .detectUser()\n .build();\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","exports.sync = function (store, router, options) {\n var moduleName = (options || {}).moduleName || 'route'\n\n store.registerModule(moduleName, {\n namespaced: true,\n state: cloneRoute(router.currentRoute),\n mutations: {\n 'ROUTE_CHANGED': function ROUTE_CHANGED (state, transition) {\n store.state[moduleName] = cloneRoute(transition.to, transition.from)\n }\n }\n })\n\n var isTimeTraveling = false\n var currentPath\n\n // sync router on store change\n var storeUnwatch = store.watch(\n function (state) { return state[moduleName]; },\n function (route) {\n var fullPath = route.fullPath;\n if (fullPath === currentPath) {\n return\n }\n if (currentPath != null) {\n isTimeTraveling = true\n router.push(route)\n }\n currentPath = fullPath\n },\n { sync: true }\n )\n\n // sync store on router navigation\n var afterEachUnHook = router.afterEach(function (to, from) {\n if (isTimeTraveling) {\n isTimeTraveling = false\n return\n }\n currentPath = to.fullPath\n store.commit(moduleName + '/ROUTE_CHANGED', { to: to, from: from })\n })\n\n return function unsync () {\n // On unsync, remove router hook\n if (afterEachUnHook != null) {\n afterEachUnHook()\n }\n\n // On unsync, remove store watch\n if (storeUnwatch != null) {\n storeUnwatch()\n }\n\n // On unsync, unregister Module with store\n store.unregisterModule(moduleName)\n }\n}\n\nfunction cloneRoute (to, from) {\n var clone = {\n name: to.name,\n path: to.path,\n hash: to.hash,\n query: to.query,\n params: to.params,\n fullPath: to.fullPath,\n meta: to.meta\n }\n if (from) {\n clone.from = cloneRoute(from)\n }\n return Object.freeze(clone)\n}\n\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"3239\":\"settings-users\",\"4529\":\"settings-apps-view\"}[chunkId] || chunkId) + \"-\" + chunkId + \".js?v=\" + {\"23\":\"de5d76438bc8be7b2828\",\"249\":\"2e3ea1454441bc8ad0ca\",\"594\":\"42559babdb08cd8462d3\",\"620\":\"9afba54f1bb9c5700ce0\",\"2391\":\"583add71333f4a7828d7\",\"2880\":\"e173b56d1e35791ae43e\",\"3239\":\"eb98239f2d18a34d52cd\",\"4325\":\"6b1845748e1acf68c63b\",\"4529\":\"ac7d9640434b5a8a4e0f\",\"5862\":\"89bf17a66ae45dcd0971\",\"7145\":\"8a0ec35632f81f53660b\",\"7471\":\"e4533847625f31a740b2\",\"7591\":\"2406514b7ce03d6c7ca8\",\"8339\":\"fa979d926218e7f6f617\",\"9381\":\"1e5cd6afa2665f6a78fe\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2689;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2689: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud_ui_legacy\"] = self[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(31960)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","baseIsEqual","module","exports","value","other","sanitize","url","replace","requireAdmin","confirmPassword","get","options","axios","post","data","patch","put","delete","params","state","apps","bundles","loadState","categories","updateCount","loading","gettingCategoriesPromise","appApiEnabled","mutations","APPS_API_FAILURE","error","showError","t","response","message","isHTML","logger","initCategories","updateCategories","categoriesPromise","setUpdateCount","addCategory","category","push","appendCategories","categoriesArray","setAllApps","setError","appId","Array","isArray","forEach","_id","find","app","id","clearError","enableApp","groups","active","setInstallState","canInstall","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","updateApp","version","update","resetApps","reset","startLoading","Vue","stopLoading","actions","context","api","then","commit","generateUrl","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","catch","dispatch","forceEnableApp","finally","getAllApps","getCategories","shouldRefetchCategories","categoriesPromiseResponse","length","getters","isAppApiEnabled","getAppBundles","getUpdateCount","getCategoryById","selectedCategoryId","setAppConfig","key","generateOcsUrl","serverData","setServerData","getServerData","naturalCollator","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","usersSettings","localStorage","getBuilder","persist","build","defaults","name","usercount","disabled","canAdd","canRemove","users","getSubAdminGroups","systemGroups","orderBy","sortGroups","GroupSorting","UserCount","minPasswordLength","usersOffset","usersLimit","disabledUsersOffset","disabledUsersLimit","userCount","showConfig","showStoragePath","getItem","showUserBackend","showFirstLogin","showLastLogin","showNewUserForm","showLanguages","appendUsers","usersObj","existingUsers","map","newUsers","Object","values","filter","includes","concat","updateDisabledUsers","setPasswordPolicyMinLength","addGroup","newGroup","group","unshift","renameGroup","gid","displayName","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","userid","user","enabled","removeUserGroup","indexOf","addUserSubAdmin","subadmin","removeUserSubAdmin","deleteUser","userIndex","this","actionType","addUserData","ocs","enableDisableUser","updateUserCounts","recentGroup","disabledGroup","userGroup","warn","setUserData","humanValue","parseFileSize","resetUsers","resetGroups","setShowConfig","setItem","JSON","stringify","setGroupSorting","sorting","oldValue","String","getUsers","getGroups","subAdminGroups","getSortedGroups","sort","a","b","numA","numB","compare","getGroupSorting","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getDisabledUsersOffset","getDisabledUsersLimit","getUserCount","getShowConfig","CancelToken","searchRequestCancelSource","searchUsers","offset","limit","search","getUser","userId","cancel","source","trim","encodeURIComponent","cancelToken","token","usersCount","keys","getRecentUsers","getDisabledUsers","limitParam","getUsersFromList","getUsersFromGroup","groupid","groupId","getCapabilities","password_policy","minLength","wipeUserDevices","Promise","reject","Error","addUser","password","email","quota","language","manager","userStatus","sendWelcomeMail","API_FAILURE","meta","store","useStore","Store","modules","settings","oc","strict","object","baseRest","isIterateeCall","assigner","sources","index","customizer","undefined","guard","_typeof","o","Symbol","iterator","constructor","prototype","toPropertyKey","i","e","toPrimitive","call","r","TypeError","_defineProperty","defineProperty","enumerable","configurable","writable","_defineProperties","isBrowser","document","navigator","timeoutDuration","longerTimeoutBrowsers","userAgent","debounce","fn","called","resolve","scheduled","isFunction","functionToCheck","toString","getStyleComputedProperty","element","property","nodeType","css","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","test","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","documentElement","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","firstElementChild","element1root","getScroll","upperSide","arguments","html","scrollingElement","getBordersSize","styles","axis","sideA","sideB","parseFloat","getSize","computedStyle","Math","max","parseInt","getWindowSizes","height","width","createClass","defineProperties","target","props","descriptor","Constructor","protoProps","staticProps","obj","_extends","assign","hasOwnProperty","getClientRect","offsets","right","left","bottom","top","getBoundingClientRect","rect","scrollTop","scrollLeft","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","fixedPosition","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","subtract","modifier","includeScroll","isFixed","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","padding","boundariesElement","boundaries","excludeScroll","relativeOffset","innerWidth","innerHeight","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","_getWindowSizes","isPaddingNumber","computeAutoPlacement","placement","refRect","rects","sortedAreas","area","_ref","filteredAreas","_ref2","computedPlacement","variation","split","getReferenceOffsets","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","arr","check","runModifiers","modifiers","ends","slice","prop","cur","match","console","isDestroyed","instance","arrowStyles","attributes","flipped","positionFixed","flip","originalPlacement","position","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","some","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","destroy","removeAttribute","willChange","disableEventListeners","removeOnDestroy","removeChild","getWindow","attachToScrollParents","event","callback","scrollParents","isBody","addEventListener","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","removeEventListener","removeEventListeners","isNumeric","n","isNaN","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","reverse","shift","basePlacement","shiftvariation","_data$offsets","isVertical","side","shiftOffsets","useHeight","fragments","frag","divider","splitRegex","ops","op","mergeWithPrevious","reduce","str","toValue","index2","parseOffset","preventOverflow","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","min","keepTogether","floor","opSide","arrow","_data$offsets$arrow","arrowElement","querySelector","len","sideCapitalized","toLowerCase","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","round","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","hide","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","v","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","applyStyle","setAttribute","onLoad","modifierOptions","Defaults","Popper","_this","classCallCheck","requestAnimationFrame","bind","jquery","Utils","g","PopperUtils","initCompat","init","ua","msie","substring","rv","edge","getInternetExplorerVersion","normalizeComponent","template","script","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","render","staticRenderFns","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","originalRender","h","existing","beforeCreate","__vue_script__","emitOnMount","type","Boolean","default","ignoreWidth","ignoreHeight","mounted","$nextTick","_w","$el","_h","emitSize","createElement","_resizeObject","onload","addResizeHandlers","appendChild","beforeDestroy","removeResizeHandlers","methods","compareAndNotify","$emit","contentDocument","__vue_render__","$createElement","_self","_c","staticClass","attrs","tabindex","_withStripped","__vue_component__","install","component","GlobalVue","use","SVGAnimatedString","convertToArray","addClasses","classes","classList","newClasses","className","baseVal","newClass","SVGElement","join","removeClasses","supportsPassive","opts","ownKeys$2","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","apply","_objectSpread$2","getOwnPropertyDescriptors","DEFAULT_OPTIONS","container","delay","title","trigger","openTooltips","Tooltip","_reference","_options","_classCallCheck","evt","relatedreference","toElement","relatedTarget","_tooltipNode","evt2","relatedreference2","_scheduleHide","show","_isOpen","_init","_show","_hide","_dispose","_classes","content","_setContent","classesUpdated","directive","defaultClass","isEqual","setClasses","getOptions","needPopperUpdate","needRestart","isOpen","dispose","popperInstance","events","_isDisposed","_enableDocumentTouch","_setEventListeners","$_originalTitle","getAttribute","_this2","tooltipGenerator","innerHTML","tooltipNode","childNodes","ariaId","random","substr","autoHide","_this3","asyncContent","_applyContent","_this4","allowHtml","rootNode","titleNode","innerSelector","firstChild","loadingClass","loadingContent","asyncResult","innerText","clearTimeout","_disposeTimer","updateClasses","_ensureShown","_this5","display","_create","_findContainer","_append","popperOptions","arrowSelector","_this6","_noLongerOpen","disposeTime","disposeTimeout","_removeTooltipNode","_this7","_events","func","_this8","directEvents","oppositeEvents","hideOnTargetClick","usedByTooltip","_scheduleShow","_this9","computedDelay","_scheduleTimer","_this10","_setTooltipNodeEvent","ownKeys$1","_objectSpread$1","_onDocumentTouch","capture","positions","defaultOptions","defaultPlacement","defaultTargetClass","defaultHtml","defaultTemplate","defaultArrowSelector","defaultInnerSelector","defaultDelay","defaultTrigger","defaultOffset","defaultContainer","defaultBoundariesElement","defaultPopperOptions","defaultLoadingClass","defaultLoadingContent","defaultHideOnTargetClick","popover","defaultBaseClass","defaultWrapperClass","defaultInnerClass","defaultArrowClass","defaultOpenClass","defaultAutoHide","defaultHandleResize","typeofOffset","getPlacement","pos","getContent","destroyTooltip","_tooltip","_tooltipOldShow","_tooltipTargetClasses","tooltip","setContent","setOptions","_vueEl","targetClasses","createTooltip","unbind","addListeners","onTouchStart","removeListeners","onTouchEnd","onTouchCancel","currentTarget","closePopover","$_vclosepopover_touch","closeAllPopover","$_closePopoverModifiers","all","changedTouches","touch","$_vclosepopover_touchPoint","firstTouch","abs","screenY","screenX","vclosepopover","ownKeys","_objectSpread","getDefault","isIOS","MSStream","openPopovers","Element","components","ResizeObserver","open","Number","popoverClass","popoverBaseClass","popoverInnerClass","popoverWrapperClass","popoverArrowClass","handleResize","openGroup","openClass","computed","cssClass","popoverId","watch","val","oldVal","popoverNode","$refs","$_findContainer","$_removeEventListeners","$_addEventListeners","$_updatePopper","handler","deep","created","$_isDisposed","$_mounted","$_events","$_preventOpen","$_init","deactivated","skipDelay","_ref2$force","force","$_scheduleShow","$_beingShowed","_ref3","$_scheduleHide","$_show","$_disposeTimer","hidden","$_getOffset","$_hide","$_scheduleTimer","$_setTooltipNodeEvent","event2","_ref4","cb","$_restartPopper","$_handleGlobalClose","$_handleResize","handleGlobalClose","_loop","_vm","class","ref","staticStyle","_t","_v","visibility","on","keyup","$event","_k","keyCode","notify","_e","insertAt","head","getElementsByTagName","insertBefore","styleSheet","cssText","createTextNode","styleInject","plugin","finalOptions","merge","global","_defineComponent","__name","setup","__props","__sfc","NcContent","_setupProxy","path","UserManagement","navigation","UserManagementNavigation","redirect","AppStore","AppStoreNavigation","sidebar","AppStoreSidebar","Router","mode","base","linkActiveClass","routes","__webpack_nonce__","getCSPNonce","PiniaVuePlugin","VTooltipPlugin","Vuex","sync","router","pinia","createPinia","SettingsApp","getLoggerBuilder","setApp","detectUser","assignMergeValue","cloneBuffer","cloneTypedArray","copyArray","initCloneObject","isArguments","isArrayLikeObject","isBuffer","isObject","isPlainObject","isTypedArray","safeGet","toPlainObject","srcIndex","mergeFunc","stack","objValue","srcValue","stacked","newValue","isCommon","isArr","isBuff","isTyped","set","baseMerge","createAssigner","cloneRoute","to","from","clone","query","fullPath","freeze","moduleName","registerModule","namespaced","currentRoute","transition","currentPath","isTimeTraveling","storeUnwatch","route","afterEachUnHook","afterEach","unregisterModule","copyObject","keysIn","isArrayLike","isObjectLike","Stack","baseFor","baseMergeDeep","baseAssignValue","eq","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","m","O","chunkIds","notFulfilled","Infinity","fulfilled","j","every","getter","__esModule","d","definition","f","chunkId","promises","u","globalThis","Function","l","done","needAttach","scripts","s","charset","nc","src","onScriptComplete","prev","onerror","timeout","doneFns","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","tagName","p","baseURI","self","href","installedChunks","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=c1b68dfd2fedae9023b1","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/lodash/isEqual.js","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/users-settings.js","webpack:///nextcloud/apps/settings/src/utils/sorting.ts","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/node_modules/lodash/_safeGet.js","webpack:///nextcloud/apps/settings/src/constants/GroupManagement.ts","webpack:///nextcloud/node_modules/lodash/_createAssigner.js","webpack:///nextcloud/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///nextcloud/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack:///nextcloud/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack:///nextcloud/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///nextcloud/node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///nextcloud/node_modules/popper.js/dist/esm/popper.js","webpack:///nextcloud/node_modules/vue-resize/dist/vue-resize.esm.js","webpack:///nextcloud/node_modules/v-tooltip/dist/v-tooltip.esm.js","webpack:///nextcloud/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/SettingsApp.vue?3a67","webpack:///nextcloud/apps/settings/src/router/routes.ts","webpack:///nextcloud/apps/settings/src/router/index.ts","webpack:///nextcloud/apps/settings/src/main-apps-users-management.ts","webpack:///nextcloud/apps/settings/src/logger.ts","webpack:///nextcloud/node_modules/lodash/_baseMergeDeep.js","webpack:///nextcloud/node_modules/lodash/merge.js","webpack:///nextcloud/node_modules/vuex-router-sync/index.js","webpack:///nextcloud/node_modules/lodash/toPlainObject.js","webpack:///nextcloud/node_modules/lodash/isArrayLikeObject.js","webpack:///nextcloud/node_modules/lodash/_baseMerge.js","webpack:///nextcloud/node_modules/lodash/_assignMergeValue.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\n\n/**\n * @param {string} url - The url to sanitize\n */\nfunction sanitize(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateUrl } from '@nextcloud/router'\nimport Vue from 'vue'\nimport logger from '../logger.ts'\nimport api from './api.js'\n\nconst state = {\n\tapps: [],\n\tbundles: loadState('settings', 'appstoreBundles', []),\n\tcategories: [],\n\tupdateCount: loadState('settings', 'appstoreUpdateCount', 0),\n\tloading: {},\n\tgettingCategoriesPromise: null,\n\tappApiEnabled: loadState('settings', 'appApiEnabled', false),\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '
' + error.error.response.data.data.message, { isHTML: true })\n\t\tlogger.error('An error occurred during the request. Unable to proceed.', { state, error })\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tupdateCategories(state, categoriesPromise) {\n\t\tstate.gettingCategoriesPromise = categoriesPromise\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find((app) => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId }) {\n\t\tconst app = state.apps.find((app) => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find((app) => app.id === appId)\n\t\tapp.active = true\n\t\tapp.groups = groups\n\t\tif (app.id === 'app_api') {\n\t\t\tstate.appApiEnabled = true\n\t\t}\n\t},\n\n\tsetInstallState(state, { appId, canInstall }) {\n\t\tconst app = state.apps.find((app) => app.id === appId)\n\t\tif (app) {\n\t\t\tapp.canInstall = canInstall === true\n\t\t}\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find((app) => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t\tif (app.id === 'app_api') {\n\t\t\tstate.appApiEnabled = false\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find((app) => app.id === appId).active = false\n\t\tstate.apps.find((app) => app.id === appId).groups = []\n\t\tstate.apps.find((app) => app.id === appId).needsDownload = true\n\t\tstate.apps.find((app) => app.id === appId).installed = false\n\t\tstate.apps.find((app) => app.id === appId).canUnInstall = false\n\t\tstate.apps.find((app) => app.id === appId).canInstall = true\n\t\tif (appId === 'app_api') {\n\t\t\tstate.appApiEnabled = false\n\t\t}\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find((app) => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tisAppApiEnabled(state) {\n\t\treturn state.appApiEnabled\n\t},\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetAppBundles(state) {\n\t\treturn state.bundles\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n\tgetCategoryById: (state) => (selectedCategoryId) => {\n\t\treturn state.categories.find((category) => category.id === selectedCategoryId)\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach((_appId) => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn axios.get(generateUrl('apps/files/'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.',\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tshowError(t('settings', 'Error: This app cannot be enabled because it makes the server unstable'))\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tcontext.dispatch('disableApp', { appId })\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then(() => {\n\t\t\t\t\tcontext.commit('setInstallState', { appId, canInstall: true })\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then(() => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach((_appId) => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then(() => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then(() => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tasync getCategories(context, { shouldRefetchCategories = false } = {}) {\n\t\tif (shouldRefetchCategories || !context.state.gettingCategoriesPromise) {\n\t\t\tcontext.commit('startLoading', 'categories')\n\t\t\ttry {\n\t\t\t\tconst categoriesPromise = api.get(generateUrl('settings/apps/categories'))\n\t\t\t\tcontext.commit('updateCategories', categoriesPromise)\n\t\t\t\tconst categoriesPromiseResponse = await categoriesPromise\n\t\t\t\tif (categoriesPromiseResponse.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', categoriesPromiseResponse.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\treturn false\n\t\t\t} catch (error) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t}\n\t\treturn context.state.gettingCategoriesPromise\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport api from './api.js'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tserverData: loadState('settings', 'usersSettings', {}),\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCanonicalLocale, getLanguage } from '@nextcloud/l10n';\nexport const naturalCollator = Intl.Collator([getLanguage(), getCanonicalLocale()], {\n numeric: true,\n usage: 'sort',\n});\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { getBuilder } from '@nextcloud/browser-storage'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { showError } from '@nextcloud/dialogs'\nimport { parseFileSize } from '@nextcloud/files'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl, generateUrl } from '@nextcloud/router'\nimport { GroupSorting } from '../constants/GroupManagement.ts'\nimport logger from '../logger.ts'\nimport { naturalCollator } from '../utils/sorting.ts'\nimport api from './api.js'\n\nconst usersSettings = loadState('settings', 'usersSettings', {})\n\nconst localStorage = getBuilder('settings').persist(true).build()\n\nconst defaults = {\n\t/**\n\t * @type {import('../views/user-types').IGroup}\n\t */\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [\n\t\t...(usersSettings.getSubAdminGroups ?? []),\n\t\t...(usersSettings.systemGroups ?? []),\n\t],\n\torderBy: usersSettings.sortGroups ?? GroupSorting.UserCount,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tdisabledUsersOffset: 0,\n\tdisabledUsersLimit: 25,\n\tuserCount: usersSettings.userCount ?? 0,\n\tshowConfig: {\n\t\tshowStoragePath: localStorage.getItem('account_settings__showStoragePath') === 'true',\n\t\tshowUserBackend: localStorage.getItem('account_settings__showUserBackend') === 'true',\n\t\tshowFirstLogin: localStorage.getItem('account_settings__showFirstLogin') === 'true',\n\t\tshowLastLogin: localStorage.getItem('account_settings__showLastLogin') === 'true',\n\t\tshowNewUserForm: localStorage.getItem('account_settings__showNewUserForm') === 'true',\n\t\tshowLanguages: localStorage.getItem('account_settings__showLanguages') === 'true',\n\t},\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\tconst existingUsers = state.users.map(({ id }) => id)\n\t\tconst newUsers = Object.values(usersObj)\n\t\t\t.filter(({ id }) => !existingUsers.includes(id))\n\n\t\tconst users = state.users.concat(newUsers)\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tupdateDisabledUsers(state) {\n\t\tstate.disabledUsersOffset += state.disabledUsersLimit\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\t/**\n\t * @param {object} state store state\n\t * @param {import('../views/user-types.js').IGroup} newGroup new group\n\t */\n\taddGroup(state, newGroup) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === newGroup.id) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = { ...defaults.group, ...newGroup }\n\t\t\tstate.groups.unshift(group)\n\t\t} catch (error) {\n\t\t\tlogger.error('Cannt create group', { error })\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex((groupSearch) => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex((groupSearch) => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find((groupSearch) => groupSearch.id === gid)\n\t\tconst user = state.users.find((user) => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find((groupSearch) => groupSearch.id === gid)\n\t\tconst user = state.users.find((user) => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find((user) => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find((user) => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex((user) => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.unshift(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find((user) => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\t// 0 is a special value\n\t\tif (state.userCount === 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst recentGroup = state.groups.find((group) => group.id === '__nc_internal_recent')\n\t\tconst disabledGroup = state.groups.find((group) => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\t\tcase 'enable':\n\t\t\tcase 'disable':\n\t\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\t\trecentGroup.usercount += user.enabled ? 1 : -1\n\t\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\t\tuser.groups.forEach((userGroup) => {\n\t\t\t\t\tconst group = state.groups.find((groupSearch) => groupSearch.id === userGroup)\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'create':\n\t\t\t\trecentGroup.usercount++\n\t\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\t\tuser.groups.forEach((userGroup) => {\n\t\t\t\t\tconst group = state.groups.find((groupSearch) => groupSearch.id === userGroup)\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tgroup.usercount++ // increment group total count\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'remove':\n\t\t\t\tif (user.enabled) {\n\t\t\t\t\trecentGroup.usercount--\n\t\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\t\tuser.groups.forEach((userGroup) => {\n\t\t\t\t\t\tconst group = state.groups.find((groupSearch) => groupSearch.id === userGroup)\n\t\t\t\t\t\tif (!group) {\n\t\t\t\t\t\t\tlogger.warn('User group ' + userGroup + ' does not exist during user removal')\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\t\tuser.groups.forEach((userGroup) => {\n\t\t\t\t\t\tconst group = state.groups.find((groupSearch) => groupSearch.id === userGroup)\n\t\t\t\t\t\tif (!group) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interrupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = parseFileSize(value, true)\n\t\t\tstate.users.find((user) => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find((user) => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t\tstate.disabledUsersOffset = 0\n\t},\n\n\t/**\n\t * Reset group list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetGroups(state) {\n\t\tstate.groups = [\n\t\t\t...(usersSettings.getSubAdminGroups ?? []),\n\t\t\t...(usersSettings.systemGroups ?? []),\n\t\t]\n\t},\n\n\tsetShowConfig(state, { key, value }) {\n\t\tlocalStorage.setItem(`account_settings__${key}`, JSON.stringify(value))\n\t\tstate.showConfig[key] = value\n\t},\n\n\tsetGroupSorting(state, sorting) {\n\t\tconst oldValue = state.orderBy\n\t\tstate.orderBy = sorting\n\n\t\t// Persist the value on the server\n\t\taxios.post(\n\t\t\tgenerateUrl('/settings/users/preferences/group.sortBy'),\n\t\t\t{\n\t\t\t\tvalue: String(sorting),\n\t\t\t},\n\t\t).catch((error) => {\n\t\t\tstate.orderBy = oldValue\n\t\t\tshowError(t('settings', 'Could not set group sorting'))\n\t\t\tlogger.error(error)\n\t\t})\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubAdminGroups() {\n\t\treturn usersSettings.subAdminGroups ?? []\n\t},\n\n\tgetSortedGroups(state) {\n\t\tconst groups = [...state.groups]\n\t\tif (state.orderBy === GroupSorting.UserCount) {\n\t\t\treturn groups.sort((a, b) => {\n\t\t\t\tconst numA = a.usercount - a.disabled\n\t\t\t\tconst numB = b.usercount - b.disabled\n\t\t\t\treturn (numA < numB) ? 1 : (numB < numA ? -1 : naturalCollator.compare(a.name, b.name))\n\t\t\t})\n\t\t} else {\n\t\t\treturn groups.sort((a, b) => naturalCollator.compare(a.name, b.name))\n\t\t}\n\t},\n\tgetGroupSorting(state) {\n\t\treturn state.orderBy\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetDisabledUsersOffset(state) {\n\t\treturn state.disabledUsersOffset\n\t},\n\tgetDisabledUsersLimit(state) {\n\t\treturn state.disabledUsersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n\tgetShowConfig(state) {\n\t\treturn state.showConfig\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * search users\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @return {Promise}\n\t */\n\tsearchUsers(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search })).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get user details\n\t *\n\t * @param {object} context store context\n\t * @param {string} userId user id\n\t * @return {Promise}\n\t */\n\tgetUser(context, userId) {\n\t\treturn api.get(generateOcsUrl(`cloud/users/${userId}`)).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\t/**\n\t\t * Adding filters in the search bar such as in:files, in:users, etc.\n\t\t * collides with this particular search, so we need to remove them\n\t\t * here and leave only the original search query\n\t\t */\n\t\tsearch = search.replace(/in:[^\\s]+/g, '').trim()\n\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\t/**\n\t * Get recent users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search query\n\t * @return {Promise}\n\t */\n\tasync getRecentUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/recent?offset={offset}&limit={limit}&search={search}', { offset, limit, search })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\t\t}\n\t},\n\n\t/**\n\t * Get disabled users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param options.search\n\t * @return {Promise}\n\t */\n\tasync getDisabledUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/disabled?offset={offset}&limit={limit}&search={search}', { offset, limit, search })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\tcontext.commit('updateDisabledUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\t\t}\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { id: group, name: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (getCapabilities().password_policy && getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', getCapabilities().password_policy.minLength)\n\t\t\treturn getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then(() => {\n\t\t\t\t\tcontext.commit('addGroup', { id: gid, name: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then(() => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then(() => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then(() => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then(() => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then(() => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then(() => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tasync wipeUserDevices(context, userid) {\n\t\ttry {\n\t\t\tawait api.requireAdmin()\n\t\t\treturn await api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\treturn Promise.reject(new Error('Failed to wipe user devices'))\n\t\t}\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then(() => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @param {string} options.manager User manager\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language, manager }) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language, manager })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then(() => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tasync setUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname', 'manager']\n\t\tconst validKeys = ['email', 'language', 'quota', 'displayname', 'password', 'manager']\n\n\t\tif (!validKeys.includes(key)) {\n\t\t\tthrow new Error('Invalid request data')\n\t\t}\n\n\t\t// If value is empty and the key doesn't allow empty values, throw error\n\t\tif (value === '' && !allowedEmpty.includes(key)) {\n\t\t\tthrow new Error('Value cannot be empty for this field')\n\t\t}\n\n\t\ttry {\n\t\t\tawait api.requireAdmin()\n\t\t\tawait api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\treturn context.commit('setUserData', { userid, key, value })\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t}\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then(() => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(() => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport { Store } from 'vuex'\nimport logger from '../logger.js'\nimport apps from './apps.js'\nimport oc from './oc.js'\nimport settings from './users-settings.js'\nimport users from './users.js'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '
' + message, { isHTML: true })\n\t\t} catch {\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t\tlogger.error('An error occurred during the request.', { state, error })\n\t},\n}\n\nlet store = null\n\n/**\n *\n */\nexport function useStore() {\n\tif (store === null) {\n\t\tstore = new Store({\n\t\t\tmodules: {\n\t\t\t\tusers,\n\t\t\t\tapps,\n\t\t\t\tsettings,\n\t\t\t\toc,\n\t\t\t},\n\t\t\tstrict: !PRODUCTION,\n\t\t\tmutations,\n\t\t})\n\t}\n\treturn store\n}\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n */\nexport var GroupSorting;\n(function (GroupSorting) {\n GroupSorting[GroupSorting[\"UserCount\"] = 1] = \"UserCount\";\n GroupSorting[GroupSorting[\"GroupName\"] = 2] = \"GroupName\";\n})(GroupSorting || (GroupSorting = {}));\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overridden using the `options` argument of Popper.js.
\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","function getInternetExplorerVersion() {\n var ua = window.navigator.userAgent;\n var msie = ua.indexOf('MSIE ');\n\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n }\n\n var trident = ua.indexOf('Trident/');\n\n if (trident > 0) {\n // IE 11 => return version number\n var rv = ua.indexOf('rv:');\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n }\n\n var edge = ua.indexOf('Edge/');\n\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n } // other browser\n\n\n return -1;\n}\n\n//\nvar isIE;\n\nfunction initCompat() {\n if (!initCompat.init) {\n initCompat.init = true;\n isIE = getInternetExplorerVersion() !== -1;\n }\n}\n\nvar script = {\n name: 'ResizeObserver',\n props: {\n emitOnMount: {\n type: Boolean,\n default: false\n },\n ignoreWidth: {\n type: Boolean,\n default: false\n },\n ignoreHeight: {\n type: Boolean,\n default: false\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n initCompat();\n this.$nextTick(function () {\n _this._w = _this.$el.offsetWidth;\n _this._h = _this.$el.offsetHeight;\n\n if (_this.emitOnMount) {\n _this.emitSize();\n }\n });\n var object = document.createElement('object');\n this._resizeObject = object;\n object.setAttribute('aria-hidden', 'true');\n object.setAttribute('tabindex', -1);\n object.onload = this.addResizeHandlers;\n object.type = 'text/html';\n\n if (isIE) {\n this.$el.appendChild(object);\n }\n\n object.data = 'about:blank';\n\n if (!isIE) {\n this.$el.appendChild(object);\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.removeResizeHandlers();\n },\n methods: {\n compareAndNotify: function compareAndNotify() {\n if (!this.ignoreWidth && this._w !== this.$el.offsetWidth || !this.ignoreHeight && this._h !== this.$el.offsetHeight) {\n this._w = this.$el.offsetWidth;\n this._h = this.$el.offsetHeight;\n this.emitSize();\n }\n },\n emitSize: function emitSize() {\n this.$emit('notify', {\n width: this._w,\n height: this._h\n });\n },\n addResizeHandlers: function addResizeHandlers() {\n this._resizeObject.contentDocument.defaultView.addEventListener('resize', this.compareAndNotify);\n\n this.compareAndNotify();\n },\n removeResizeHandlers: function removeResizeHandlers() {\n if (this._resizeObject && this._resizeObject.onload) {\n if (!isIE && this._resizeObject.contentDocument) {\n this._resizeObject.contentDocument.defaultView.removeEventListener('resize', this.compareAndNotify);\n }\n\n this.$el.removeChild(this._resizeObject);\n this._resizeObject.onload = null;\n this._resizeObject = null;\n }\n }\n }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\n/* server only */\n, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n if (typeof shadowMode !== 'boolean') {\n createInjectorSSR = createInjector;\n createInjector = shadowMode;\n shadowMode = false;\n } // Vue.extend constructor export interop.\n\n\n var options = typeof script === 'function' ? script.options : script; // render functions\n\n if (template && template.render) {\n options.render = template.render;\n options.staticRenderFns = template.staticRenderFns;\n options._compiled = true; // functional template\n\n if (isFunctionalTemplate) {\n options.functional = true;\n }\n } // scopedId\n\n\n if (scopeId) {\n options._scopeId = scopeId;\n }\n\n var hook;\n\n if (moduleIdentifier) {\n // server build\n hook = function hook(context) {\n // 2.3 injection\n context = context || // cached call\n this.$vnode && this.$vnode.ssrContext || // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n // 2.2 with runInNewContext: true\n\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__;\n } // inject component styles\n\n\n if (style) {\n style.call(this, createInjectorSSR(context));\n } // register component module identifier for async chunk inference\n\n\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n }; // used by ssr in case component is cached and beforeCreate\n // never gets called\n\n\n options._ssrRegister = hook;\n } else if (style) {\n hook = shadowMode ? function (context) {\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\n } : function (context) {\n style.call(this, createInjector(context));\n };\n }\n\n if (hook) {\n if (options.functional) {\n // register for functional component in vue file\n var originalRender = options.render;\n\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n\n return script;\n}\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c(\"div\", {\n staticClass: \"resize-observer\",\n attrs: {\n tabindex: \"-1\"\n }\n });\n};\n\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = \"data-v-8859cc6c\";\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__ = /*#__PURE__*/normalizeComponent({\n render: __vue_render__,\n staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);\n\nfunction install(Vue) {\n // eslint-disable-next-line vue/component-definition-name-casing\n Vue.component('resize-observer', __vue_component__);\n Vue.component('ResizeObserver', __vue_component__);\n}\n\nvar plugin = {\n // eslint-disable-next-line no-undef\n version: \"1.0.1\",\n install: install\n};\n\nvar GlobalVue = null;\n\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n GlobalVue.use(plugin);\n}\n\nexport default plugin;\nexport { __vue_component__ as ResizeObserver, install };\n//# sourceMappingURL=vue-resize.esm.js.map\n","import _typeof from '@babel/runtime/helpers/typeof';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport _classCallCheck from '@babel/runtime/helpers/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/createClass';\nimport Popper from 'popper.js';\nimport isEqual from 'lodash/isEqual';\nimport { ResizeObserver } from 'vue-resize';\nimport merge from 'lodash/merge';\n\nvar SVGAnimatedString = function SVGAnimatedString() {};\n\nif (typeof window !== 'undefined') {\n SVGAnimatedString = window.SVGAnimatedString;\n}\n\nfunction convertToArray(value) {\n if (typeof value === 'string') {\n value = value.split(' ');\n }\n\n return value;\n}\n/**\n * Add classes to an element.\n * This method checks to ensure that the classes don't already exist before adding them.\n * It uses el.className rather than classList in order to be IE friendly.\n * @param {object} el - The element to add the classes to.\n * @param {classes} string - List of space separated classes to be added to the element.\n */\n\nfunction addClasses(el, classes) {\n var newClasses = convertToArray(classes);\n var classList;\n\n if (el.className instanceof SVGAnimatedString) {\n classList = convertToArray(el.className.baseVal);\n } else {\n classList = convertToArray(el.className);\n }\n\n newClasses.forEach(function (newClass) {\n if (classList.indexOf(newClass) === -1) {\n classList.push(newClass);\n }\n });\n\n if (el instanceof SVGElement) {\n el.setAttribute('class', classList.join(' '));\n } else {\n el.className = classList.join(' ');\n }\n}\n/**\n * Remove classes from an element.\n * It uses el.className rather than classList in order to be IE friendly.\n * @export\n * @param {any} el The element to remove the classes from.\n * @param {any} classes List of space separated classes to be removed from the element.\n */\n\nfunction removeClasses(el, classes) {\n var newClasses = convertToArray(classes);\n var classList;\n\n if (el.className instanceof SVGAnimatedString) {\n classList = convertToArray(el.className.baseVal);\n } else {\n classList = convertToArray(el.className);\n }\n\n newClasses.forEach(function (newClass) {\n var index = classList.indexOf(newClass);\n\n if (index !== -1) {\n classList.splice(index, 1);\n }\n });\n\n if (el instanceof SVGElement) {\n el.setAttribute('class', classList.join(' '));\n } else {\n el.className = classList.join(' ');\n }\n}\nvar supportsPassive = false;\n\nif (typeof window !== 'undefined') {\n supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n}\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar DEFAULT_OPTIONS = {\n container: false,\n delay: 0,\n html: false,\n placement: 'top',\n title: '',\n template: '
',\n trigger: 'hover focus',\n offset: 0\n};\nvar openTooltips = [];\n\nvar Tooltip = /*#__PURE__*/function () {\n /**\n * Create a new Tooltip.js instance\n * @class Tooltip\n * @param {HTMLElement} reference - The DOM node used as reference of the tooltip (it can be a jQuery element).\n * @param {Object} options\n * @param {String} options.placement=bottom\n * Placement of the popper accepted values: `top(-start, -end), right(-start, -end), bottom(-start, -end),\n * left(-start, -end)`\n * @param {HTMLElement|String|false} options.container=false - Append the tooltip to a specific element.\n * @param {Number|Object} options.delay=0\n * Delay showing and hiding the tooltip (ms) - does not apply to manual trigger type.\n * If a number is supplied, delay is applied to both hide/show.\n * Object structure is: `{ show: 500, hide: 100 }`\n * @param {Boolean} options.html=false - Insert HTML into the tooltip. If false, the content will inserted with `innerText`.\n * @param {String|PlacementFunction} options.placement='top' - One of the allowed placements, or a function returning one of them.\n * @param {String} [options.template='
']\n * Base HTML to used when creating the tooltip.\n * The tooltip's `title` will be injected into the `.tooltip-inner` or `.tooltip__inner`.\n * `.tooltip-arrow` or `.tooltip__arrow` will become the tooltip's arrow.\n * The outermost wrapper element should have the `.tooltip` class.\n * @param {String|HTMLElement|TitleFunction} options.title='' - Default title value if `title` attribute isn't present.\n * @param {String} [options.trigger='hover focus']\n * How tooltip is triggered - click, hover, focus, manual.\n * You may pass multiple triggers; separate them with a space. `manual` cannot be combined with any other trigger.\n * @param {HTMLElement} options.boundariesElement\n * The element used as boundaries for the tooltip. For more information refer to Popper.js'\n * [boundariesElement docs](https://popper.js.org/popper-documentation.html)\n * @param {Number|String} options.offset=0 - Offset of the tooltip relative to its reference. For more information refer to Popper.js'\n * [offset docs](https://popper.js.org/popper-documentation.html)\n * @param {Object} options.popperOptions={} - Popper options, will be passed directly to popper instance. For more information refer to Popper.js'\n * [options docs](https://popper.js.org/popper-documentation.html)\n * @param {string} [options.ariaId] Id used for accessibility\n * @return {Object} instance - The generated tooltip instance\n */\n function Tooltip(_reference, _options) {\n var _this = this;\n\n _classCallCheck(this, Tooltip);\n\n _defineProperty(this, \"_events\", []);\n\n _defineProperty(this, \"_setTooltipNodeEvent\", function (evt, reference, delay, options) {\n var relatedreference = evt.relatedreference || evt.toElement || evt.relatedTarget;\n\n var callback = function callback(evt2) {\n var relatedreference2 = evt2.relatedreference || evt2.toElement || evt2.relatedTarget; // Remove event listener after call\n\n _this._tooltipNode.removeEventListener(evt.type, callback); // If the new reference is not the reference element\n\n\n if (!reference.contains(relatedreference2)) {\n // Schedule to hide tooltip\n _this._scheduleHide(reference, options.delay, options, evt2);\n }\n };\n\n if (_this._tooltipNode.contains(relatedreference)) {\n // listen to mouseleave on the tooltip element to be able to hide the tooltip\n _this._tooltipNode.addEventListener(evt.type, callback);\n\n return true;\n }\n\n return false;\n });\n\n // apply user options over default ones\n _options = _objectSpread$2(_objectSpread$2({}, DEFAULT_OPTIONS), _options);\n _reference.jquery && (_reference = _reference[0]);\n this.show = this.show.bind(this);\n this.hide = this.hide.bind(this); // cache reference and options\n\n this.reference = _reference;\n this.options = _options; // set initial state\n\n this._isOpen = false;\n\n this._init();\n } //\n // Public methods\n //\n\n /**\n * Reveals an element's tooltip. This is considered a \"manual\" triggering of the tooltip.\n * Tooltips with zero-length titles are never displayed.\n * @method Tooltip#show\n * @memberof Tooltip\n */\n\n\n _createClass(Tooltip, [{\n key: \"show\",\n value: function show() {\n this._show(this.reference, this.options);\n }\n /**\n * Hides an element’s tooltip. This is considered a “manual” triggering of the tooltip.\n * @method Tooltip#hide\n * @memberof Tooltip\n */\n\n }, {\n key: \"hide\",\n value: function hide() {\n this._hide();\n }\n /**\n * Hides and destroys an element’s tooltip.\n * @method Tooltip#dispose\n * @memberof Tooltip\n */\n\n }, {\n key: \"dispose\",\n value: function dispose() {\n this._dispose();\n }\n /**\n * Toggles an element’s tooltip. This is considered a “manual” triggering of the tooltip.\n * @method Tooltip#toggle\n * @memberof Tooltip\n */\n\n }, {\n key: \"toggle\",\n value: function toggle() {\n if (this._isOpen) {\n return this.hide();\n } else {\n return this.show();\n }\n }\n }, {\n key: \"setClasses\",\n value: function setClasses(classes) {\n this._classes = classes;\n }\n }, {\n key: \"setContent\",\n value: function setContent(content) {\n this.options.title = content;\n\n if (this._tooltipNode) {\n this._setContent(content, this.options);\n }\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options) {\n var classesUpdated = false;\n var classes = options && options.classes || directive.options.defaultClass;\n\n if (!isEqual(this._classes, classes)) {\n this.setClasses(classes);\n classesUpdated = true;\n }\n\n options = getOptions(options);\n var needPopperUpdate = false;\n var needRestart = false;\n\n if (this.options.offset !== options.offset || this.options.placement !== options.placement) {\n needPopperUpdate = true;\n }\n\n if (this.options.template !== options.template || this.options.trigger !== options.trigger || this.options.container !== options.container || classesUpdated) {\n needRestart = true;\n }\n\n for (var key in options) {\n this.options[key] = options[key];\n }\n\n if (this._tooltipNode) {\n if (needRestart) {\n var isOpen = this._isOpen;\n this.dispose();\n\n this._init();\n\n if (isOpen) {\n this.show();\n }\n } else if (needPopperUpdate) {\n this.popperInstance.update();\n }\n }\n } //\n // Private methods\n //\n\n }, {\n key: \"_init\",\n value: function _init() {\n // get events list\n var events = typeof this.options.trigger === 'string' ? this.options.trigger.split(' ') : [];\n this._isDisposed = false;\n this._enableDocumentTouch = events.indexOf('manual') === -1;\n events = events.filter(function (trigger) {\n return ['click', 'hover', 'focus'].indexOf(trigger) !== -1;\n }); // set event listeners\n\n this._setEventListeners(this.reference, events, this.options); // title attribute\n\n\n this.$_originalTitle = this.reference.getAttribute('title');\n this.reference.removeAttribute('title');\n this.reference.setAttribute('data-original-title', this.$_originalTitle);\n }\n /**\n * Creates a new tooltip node\n * @memberof Tooltip\n * @private\n * @param {HTMLElement} reference\n * @param {String} template\n * @param {String|HTMLElement|TitleFunction} title\n * @param {Boolean} allowHtml\n * @return {HTMLelement} tooltipNode\n */\n\n }, {\n key: \"_create\",\n value: function _create(reference, template) {\n var _this2 = this;\n\n // create tooltip element\n var tooltipGenerator = window.document.createElement('div');\n tooltipGenerator.innerHTML = template.trim();\n var tooltipNode = tooltipGenerator.childNodes[0]; // add unique ID to our tooltip (needed for accessibility reasons)\n\n tooltipNode.id = this.options.ariaId || \"tooltip_\".concat(Math.random().toString(36).substr(2, 10)); // Initially hide the tooltip\n // The attribute will be switched in a next frame so\n // CSS transitions can play\n\n tooltipNode.setAttribute('aria-hidden', 'true');\n\n if (this.options.autoHide && this.options.trigger.indexOf('hover') !== -1) {\n tooltipNode.addEventListener('mouseenter', function (evt) {\n return _this2._scheduleHide(reference, _this2.options.delay, _this2.options, evt);\n });\n tooltipNode.addEventListener('click', function (evt) {\n return _this2._scheduleHide(reference, _this2.options.delay, _this2.options, evt);\n });\n } // return the generated tooltip node\n\n\n return tooltipNode;\n }\n }, {\n key: \"_setContent\",\n value: function _setContent(content, options) {\n var _this3 = this;\n\n this.asyncContent = false;\n\n this._applyContent(content, options).then(function () {\n if (!_this3.popperInstance) return;\n\n _this3.popperInstance.update();\n });\n }\n }, {\n key: \"_applyContent\",\n value: function _applyContent(title, options) {\n var _this4 = this;\n\n return new Promise(function (resolve, reject) {\n var allowHtml = options.html;\n var rootNode = _this4._tooltipNode;\n if (!rootNode) return;\n var titleNode = rootNode.querySelector(_this4.options.innerSelector);\n\n if (title.nodeType === 1) {\n // if title is a node, append it only if allowHtml is true\n if (allowHtml) {\n while (titleNode.firstChild) {\n titleNode.removeChild(titleNode.firstChild);\n }\n\n titleNode.appendChild(title);\n }\n } else if (typeof title === 'function') {\n // if title is a function, call it and set innerText or innerHtml depending by `allowHtml` value\n var result = title();\n\n if (result && typeof result.then === 'function') {\n _this4.asyncContent = true;\n options.loadingClass && addClasses(rootNode, options.loadingClass);\n\n if (options.loadingContent) {\n _this4._applyContent(options.loadingContent, options);\n }\n\n result.then(function (asyncResult) {\n options.loadingClass && removeClasses(rootNode, options.loadingClass);\n return _this4._applyContent(asyncResult, options);\n }).then(resolve).catch(reject);\n } else {\n _this4._applyContent(result, options).then(resolve).catch(reject);\n }\n\n return;\n } else {\n // if it's just a simple text, set innerText or innerHtml depending by `allowHtml` value\n allowHtml ? titleNode.innerHTML = title : titleNode.innerText = title;\n }\n\n resolve();\n });\n }\n }, {\n key: \"_show\",\n value: function _show(reference, options) {\n if (options && typeof options.container === 'string') {\n var container = document.querySelector(options.container);\n if (!container) return;\n }\n\n clearTimeout(this._disposeTimer);\n options = Object.assign({}, options);\n delete options.offset;\n var updateClasses = true;\n\n if (this._tooltipNode) {\n addClasses(this._tooltipNode, this._classes);\n updateClasses = false;\n }\n\n var result = this._ensureShown(reference, options);\n\n if (updateClasses && this._tooltipNode) {\n addClasses(this._tooltipNode, this._classes);\n }\n\n addClasses(reference, ['v-tooltip-open']);\n return result;\n }\n }, {\n key: \"_ensureShown\",\n value: function _ensureShown(reference, options) {\n var _this5 = this;\n\n // don't show if it's already visible\n if (this._isOpen) {\n return this;\n }\n\n this._isOpen = true;\n openTooltips.push(this); // if the tooltipNode already exists, just show it\n\n if (this._tooltipNode) {\n this._tooltipNode.style.display = '';\n\n this._tooltipNode.setAttribute('aria-hidden', 'false');\n\n this.popperInstance.enableEventListeners();\n this.popperInstance.update();\n\n if (this.asyncContent) {\n this._setContent(options.title, options);\n }\n\n return this;\n } // get title\n\n\n var title = reference.getAttribute('title') || options.title; // don't show tooltip if no title is defined\n\n if (!title) {\n return this;\n } // create tooltip node\n\n\n var tooltipNode = this._create(reference, options.template);\n\n this._tooltipNode = tooltipNode; // Add `aria-describedby` to our reference element for accessibility reasons\n\n reference.setAttribute('aria-describedby', tooltipNode.id); // append tooltip to container\n\n var container = this._findContainer(options.container, reference);\n\n this._append(tooltipNode, container);\n\n var popperOptions = _objectSpread$2(_objectSpread$2({}, options.popperOptions), {}, {\n placement: options.placement\n });\n\n popperOptions.modifiers = _objectSpread$2(_objectSpread$2({}, popperOptions.modifiers), {}, {\n arrow: {\n element: this.options.arrowSelector\n }\n });\n\n if (options.boundariesElement) {\n popperOptions.modifiers.preventOverflow = {\n boundariesElement: options.boundariesElement\n };\n }\n\n this.popperInstance = new Popper(reference, tooltipNode, popperOptions);\n\n this._setContent(title, options); // Fix position\n\n\n requestAnimationFrame(function () {\n if (!_this5._isDisposed && _this5.popperInstance) {\n _this5.popperInstance.update(); // Show the tooltip\n\n\n requestAnimationFrame(function () {\n if (!_this5._isDisposed) {\n _this5._isOpen && tooltipNode.setAttribute('aria-hidden', 'false');\n } else {\n _this5.dispose();\n }\n });\n } else {\n _this5.dispose();\n }\n });\n return this;\n }\n }, {\n key: \"_noLongerOpen\",\n value: function _noLongerOpen() {\n var index = openTooltips.indexOf(this);\n\n if (index !== -1) {\n openTooltips.splice(index, 1);\n }\n }\n }, {\n key: \"_hide\",\n value: function _hide()\n /* reference, options */\n {\n var _this6 = this;\n\n // don't hide if it's already hidden\n if (!this._isOpen) {\n return this;\n }\n\n this._isOpen = false;\n\n this._noLongerOpen(); // hide tooltipNode\n\n\n this._tooltipNode.style.display = 'none';\n\n this._tooltipNode.setAttribute('aria-hidden', 'true');\n\n if (this.popperInstance) {\n this.popperInstance.disableEventListeners();\n }\n\n clearTimeout(this._disposeTimer);\n var disposeTime = directive.options.disposeTimeout;\n\n if (disposeTime !== null) {\n this._disposeTimer = setTimeout(function () {\n if (_this6._tooltipNode) {\n _this6._tooltipNode.removeEventListener('mouseenter', _this6.hide);\n\n _this6._tooltipNode.removeEventListener('click', _this6.hide); // Don't remove popper instance, just the HTML element\n\n\n _this6._removeTooltipNode();\n }\n }, disposeTime);\n }\n\n removeClasses(this.reference, ['v-tooltip-open']);\n return this;\n }\n }, {\n key: \"_removeTooltipNode\",\n value: function _removeTooltipNode() {\n if (!this._tooltipNode) return;\n var parentNode = this._tooltipNode.parentNode;\n\n if (parentNode) {\n parentNode.removeChild(this._tooltipNode);\n this.reference.removeAttribute('aria-describedby');\n }\n\n this._tooltipNode = null;\n }\n }, {\n key: \"_dispose\",\n value: function _dispose() {\n var _this7 = this;\n\n this._isDisposed = true;\n this.reference.removeAttribute('data-original-title');\n\n if (this.$_originalTitle) {\n this.reference.setAttribute('title', this.$_originalTitle);\n } // remove event listeners first to prevent any unexpected behaviour\n\n\n this._events.forEach(function (_ref) {\n var func = _ref.func,\n event = _ref.event;\n\n _this7.reference.removeEventListener(event, func);\n });\n\n this._events = [];\n\n if (this._tooltipNode) {\n this._hide();\n\n this._tooltipNode.removeEventListener('mouseenter', this.hide);\n\n this._tooltipNode.removeEventListener('click', this.hide); // destroy instance\n\n\n this.popperInstance.destroy(); // destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element\n\n if (!this.popperInstance.options.removeOnDestroy) {\n this._removeTooltipNode();\n }\n } else {\n this._noLongerOpen();\n }\n\n return this;\n }\n }, {\n key: \"_findContainer\",\n value: function _findContainer(container, reference) {\n // if container is a query, get the relative element\n if (typeof container === 'string') {\n container = window.document.querySelector(container);\n } else if (container === false) {\n // if container is `false`, set it to reference parent\n container = reference.parentNode;\n }\n\n return container;\n }\n /**\n * Append tooltip to container\n * @memberof Tooltip\n * @private\n * @param {HTMLElement} tooltip\n * @param {HTMLElement|String|false} container\n */\n\n }, {\n key: \"_append\",\n value: function _append(tooltipNode, container) {\n container.appendChild(tooltipNode);\n }\n }, {\n key: \"_setEventListeners\",\n value: function _setEventListeners(reference, events, options) {\n var _this8 = this;\n\n var directEvents = [];\n var oppositeEvents = [];\n events.forEach(function (event) {\n switch (event) {\n case 'hover':\n directEvents.push('mouseenter');\n oppositeEvents.push('mouseleave');\n if (_this8.options.hideOnTargetClick) oppositeEvents.push('click');\n break;\n\n case 'focus':\n directEvents.push('focus');\n oppositeEvents.push('blur');\n if (_this8.options.hideOnTargetClick) oppositeEvents.push('click');\n break;\n\n case 'click':\n directEvents.push('click');\n oppositeEvents.push('click');\n break;\n }\n }); // schedule show tooltip\n\n directEvents.forEach(function (event) {\n var func = function func(evt) {\n if (_this8._isOpen === true) {\n return;\n }\n\n evt.usedByTooltip = true;\n\n _this8._scheduleShow(reference, options.delay, options, evt);\n };\n\n _this8._events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n }); // schedule hide tooltip\n\n oppositeEvents.forEach(function (event) {\n var func = function func(evt) {\n if (evt.usedByTooltip === true) {\n return;\n }\n\n _this8._scheduleHide(reference, options.delay, options, evt);\n };\n\n _this8._events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n });\n }\n }, {\n key: \"_onDocumentTouch\",\n value: function _onDocumentTouch(event) {\n if (this._enableDocumentTouch) {\n this._scheduleHide(this.reference, this.options.delay, this.options, event);\n }\n }\n }, {\n key: \"_scheduleShow\",\n value: function _scheduleShow(reference, delay, options\n /*, evt */\n ) {\n var _this9 = this;\n\n // defaults to 0\n var computedDelay = delay && delay.show || delay || 0;\n clearTimeout(this._scheduleTimer);\n this._scheduleTimer = window.setTimeout(function () {\n return _this9._show(reference, options);\n }, computedDelay);\n }\n }, {\n key: \"_scheduleHide\",\n value: function _scheduleHide(reference, delay, options, evt) {\n var _this10 = this;\n\n // defaults to 0\n var computedDelay = delay && delay.hide || delay || 0;\n clearTimeout(this._scheduleTimer);\n this._scheduleTimer = window.setTimeout(function () {\n if (_this10._isOpen === false) {\n return;\n }\n\n if (!_this10._tooltipNode.ownerDocument.body.contains(_this10._tooltipNode)) {\n return;\n } // if we are hiding because of a mouseleave, we must check that the new\n // reference isn't the tooltip, because in this case we don't want to hide it\n\n\n if (evt.type === 'mouseleave') {\n var isSet = _this10._setTooltipNodeEvent(evt, reference, delay, options); // if we set the new event, don't hide the tooltip yet\n // the new event will take care to hide it if necessary\n\n\n if (isSet) {\n return;\n }\n }\n\n _this10._hide(reference, options);\n }, computedDelay);\n }\n }]);\n\n return Tooltip;\n}(); // Hide tooltips on touch devices\n\nif (typeof document !== 'undefined') {\n document.addEventListener('touchstart', function (event) {\n for (var i = 0; i < openTooltips.length; i++) {\n openTooltips[i]._onDocumentTouch(event);\n }\n }, supportsPassive ? {\n passive: true,\n capture: true\n } : true);\n}\n/**\n * Placement function, its context is the Tooltip instance.\n * @memberof Tooltip\n * @callback PlacementFunction\n * @param {HTMLElement} tooltip - tooltip DOM node.\n * @param {HTMLElement} reference - reference DOM node.\n * @return {String} placement - One of the allowed placement options.\n */\n\n/**\n * Title function, its context is the Tooltip instance.\n * @memberof Tooltip\n * @callback TitleFunction\n * @return {String} placement - The desired title.\n */\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar state = {\n enabled: true\n};\nvar positions = ['top', 'top-start', 'top-end', 'right', 'right-start', 'right-end', 'bottom', 'bottom-start', 'bottom-end', 'left', 'left-start', 'left-end'];\nvar defaultOptions = {\n // Default tooltip placement relative to target element\n defaultPlacement: 'top',\n // Default CSS classes applied to the tooltip element\n defaultClass: 'vue-tooltip-theme',\n // Default CSS classes applied to the target element of the tooltip\n defaultTargetClass: 'has-tooltip',\n // Is the content HTML by default?\n defaultHtml: true,\n // Default HTML template of the tooltip element\n // It must include `tooltip-arrow` & `tooltip-inner` CSS classes (can be configured, see below)\n // Change if the classes conflict with other libraries (for example bootstrap)\n defaultTemplate: '
',\n // Selector used to get the arrow element in the tooltip template\n defaultArrowSelector: '.tooltip-arrow, .tooltip__arrow',\n // Selector used to get the inner content element in the tooltip template\n defaultInnerSelector: '.tooltip-inner, .tooltip__inner',\n // Delay (ms)\n defaultDelay: 0,\n // Default events that trigger the tooltip\n defaultTrigger: 'hover focus',\n // Default position offset (px)\n defaultOffset: 0,\n // Default container where the tooltip will be appended\n defaultContainer: 'body',\n defaultBoundariesElement: undefined,\n defaultPopperOptions: {},\n // Class added when content is loading\n defaultLoadingClass: 'tooltip-loading',\n // Displayed when tooltip content is loading\n defaultLoadingContent: '...',\n // Hide on mouseover tooltip\n autoHide: true,\n // Close tooltip on click on tooltip target?\n defaultHideOnTargetClick: true,\n // Auto destroy tooltip DOM nodes (ms)\n disposeTimeout: 5000,\n // Options for popover\n popover: {\n defaultPlacement: 'bottom',\n // Use the `popoverClass` prop for theming\n defaultClass: 'vue-popover-theme',\n // Base class (change if conflicts with other libraries)\n defaultBaseClass: 'tooltip popover',\n // Wrapper class (contains arrow and inner)\n defaultWrapperClass: 'wrapper',\n // Inner content class\n defaultInnerClass: 'tooltip-inner popover-inner',\n // Arrow class\n defaultArrowClass: 'tooltip-arrow popover-arrow',\n // Class added when popover is open\n defaultOpenClass: 'open',\n defaultDelay: 0,\n defaultTrigger: 'click',\n defaultOffset: 0,\n defaultContainer: 'body',\n defaultBoundariesElement: undefined,\n defaultPopperOptions: {},\n // Hides if clicked outside of popover\n defaultAutoHide: true,\n // Update popper on content resize\n defaultHandleResize: true\n }\n};\nfunction getOptions(options) {\n var result = {\n placement: typeof options.placement !== 'undefined' ? options.placement : directive.options.defaultPlacement,\n delay: typeof options.delay !== 'undefined' ? options.delay : directive.options.defaultDelay,\n html: typeof options.html !== 'undefined' ? options.html : directive.options.defaultHtml,\n template: typeof options.template !== 'undefined' ? options.template : directive.options.defaultTemplate,\n arrowSelector: typeof options.arrowSelector !== 'undefined' ? options.arrowSelector : directive.options.defaultArrowSelector,\n innerSelector: typeof options.innerSelector !== 'undefined' ? options.innerSelector : directive.options.defaultInnerSelector,\n trigger: typeof options.trigger !== 'undefined' ? options.trigger : directive.options.defaultTrigger,\n offset: typeof options.offset !== 'undefined' ? options.offset : directive.options.defaultOffset,\n container: typeof options.container !== 'undefined' ? options.container : directive.options.defaultContainer,\n boundariesElement: typeof options.boundariesElement !== 'undefined' ? options.boundariesElement : directive.options.defaultBoundariesElement,\n autoHide: typeof options.autoHide !== 'undefined' ? options.autoHide : directive.options.autoHide,\n hideOnTargetClick: typeof options.hideOnTargetClick !== 'undefined' ? options.hideOnTargetClick : directive.options.defaultHideOnTargetClick,\n loadingClass: typeof options.loadingClass !== 'undefined' ? options.loadingClass : directive.options.defaultLoadingClass,\n loadingContent: typeof options.loadingContent !== 'undefined' ? options.loadingContent : directive.options.defaultLoadingContent,\n popperOptions: _objectSpread$1({}, typeof options.popperOptions !== 'undefined' ? options.popperOptions : directive.options.defaultPopperOptions)\n };\n\n if (result.offset) {\n var typeofOffset = _typeof(result.offset);\n\n var offset = result.offset; // One value -> switch\n\n if (typeofOffset === 'number' || typeofOffset === 'string' && offset.indexOf(',') === -1) {\n offset = \"0, \".concat(offset);\n }\n\n if (!result.popperOptions.modifiers) {\n result.popperOptions.modifiers = {};\n }\n\n result.popperOptions.modifiers.offset = {\n offset: offset\n };\n }\n\n if (result.trigger && result.trigger.indexOf('click') !== -1) {\n result.hideOnTargetClick = false;\n }\n\n return result;\n}\nfunction getPlacement(value, modifiers) {\n var placement = value.placement;\n\n for (var i = 0; i < positions.length; i++) {\n var pos = positions[i];\n\n if (modifiers[pos]) {\n placement = pos;\n }\n }\n\n return placement;\n}\nfunction getContent(value) {\n var type = _typeof(value);\n\n if (type === 'string') {\n return value;\n } else if (value && type === 'object') {\n return value.content;\n } else {\n return false;\n }\n}\nfunction createTooltip(el, value) {\n var modifiers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var content = getContent(value);\n var classes = typeof value.classes !== 'undefined' ? value.classes : directive.options.defaultClass;\n\n var opts = _objectSpread$1({\n title: content\n }, getOptions(_objectSpread$1(_objectSpread$1({}, _typeof(value) === 'object' ? value : {}), {}, {\n placement: getPlacement(value, modifiers)\n })));\n\n var tooltip = el._tooltip = new Tooltip(el, opts);\n tooltip.setClasses(classes);\n tooltip._vueEl = el; // Class on target\n\n var targetClasses = typeof value.targetClasses !== 'undefined' ? value.targetClasses : directive.options.defaultTargetClass;\n el._tooltipTargetClasses = targetClasses;\n addClasses(el, targetClasses);\n return tooltip;\n}\nfunction destroyTooltip(el) {\n if (el._tooltip) {\n el._tooltip.dispose();\n\n delete el._tooltip;\n delete el._tooltipOldShow;\n }\n\n if (el._tooltipTargetClasses) {\n removeClasses(el, el._tooltipTargetClasses);\n delete el._tooltipTargetClasses;\n }\n}\nfunction bind(el, _ref) {\n var value = _ref.value;\n _ref.oldValue;\n var modifiers = _ref.modifiers;\n var content = getContent(value);\n\n if (!content || !state.enabled) {\n destroyTooltip(el);\n } else {\n var tooltip;\n\n if (el._tooltip) {\n tooltip = el._tooltip; // Content\n\n tooltip.setContent(content); // Options\n\n tooltip.setOptions(_objectSpread$1(_objectSpread$1({}, value), {}, {\n placement: getPlacement(value, modifiers)\n }));\n } else {\n tooltip = createTooltip(el, value, modifiers);\n } // Manual show\n\n\n if (typeof value.show !== 'undefined' && value.show !== el._tooltipOldShow) {\n el._tooltipOldShow = value.show;\n value.show ? tooltip.show() : tooltip.hide();\n }\n }\n}\nvar directive = {\n options: defaultOptions,\n bind: bind,\n update: bind,\n unbind: function unbind(el) {\n destroyTooltip(el);\n }\n};\n\nfunction addListeners(el) {\n el.addEventListener('click', onClick);\n el.addEventListener('touchstart', onTouchStart, supportsPassive ? {\n passive: true\n } : false);\n}\n\nfunction removeListeners(el) {\n el.removeEventListener('click', onClick);\n el.removeEventListener('touchstart', onTouchStart);\n el.removeEventListener('touchend', onTouchEnd);\n el.removeEventListener('touchcancel', onTouchCancel);\n}\n\nfunction onClick(event) {\n var el = event.currentTarget;\n event.closePopover = !el.$_vclosepopover_touch;\n event.closeAllPopover = el.$_closePopoverModifiers && !!el.$_closePopoverModifiers.all;\n}\n\nfunction onTouchStart(event) {\n if (event.changedTouches.length === 1) {\n var el = event.currentTarget;\n el.$_vclosepopover_touch = true;\n var touch = event.changedTouches[0];\n el.$_vclosepopover_touchPoint = touch;\n el.addEventListener('touchend', onTouchEnd);\n el.addEventListener('touchcancel', onTouchCancel);\n }\n}\n\nfunction onTouchEnd(event) {\n var el = event.currentTarget;\n el.$_vclosepopover_touch = false;\n\n if (event.changedTouches.length === 1) {\n var touch = event.changedTouches[0];\n var firstTouch = el.$_vclosepopover_touchPoint;\n event.closePopover = Math.abs(touch.screenY - firstTouch.screenY) < 20 && Math.abs(touch.screenX - firstTouch.screenX) < 20;\n event.closeAllPopover = el.$_closePopoverModifiers && !!el.$_closePopoverModifiers.all;\n }\n}\n\nfunction onTouchCancel(event) {\n var el = event.currentTarget;\n el.$_vclosepopover_touch = false;\n}\n\nvar vclosepopover = {\n bind: function bind(el, _ref) {\n var value = _ref.value,\n modifiers = _ref.modifiers;\n el.$_closePopoverModifiers = modifiers;\n\n if (typeof value === 'undefined' || value) {\n addListeners(el);\n }\n },\n update: function update(el, _ref2) {\n var value = _ref2.value,\n oldValue = _ref2.oldValue,\n modifiers = _ref2.modifiers;\n el.$_closePopoverModifiers = modifiers;\n\n if (value !== oldValue) {\n if (typeof value === 'undefined' || value) {\n addListeners(el);\n } else {\n removeListeners(el);\n }\n }\n },\n unbind: function unbind(el) {\n removeListeners(el);\n }\n};\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction getDefault(key) {\n var value = directive.options.popover[key];\n\n if (typeof value === 'undefined') {\n return directive.options[key];\n }\n\n return value;\n}\n\nvar isIOS = false;\n\nif (typeof window !== 'undefined' && typeof navigator !== 'undefined') {\n isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n}\n\nvar openPopovers = [];\n\nvar Element = function Element() {};\n\nif (typeof window !== 'undefined') {\n Element = window.Element;\n}\n\nvar script = {\n name: 'VPopover',\n components: {\n ResizeObserver: ResizeObserver\n },\n props: {\n open: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n placement: {\n type: String,\n default: function _default() {\n return getDefault('defaultPlacement');\n }\n },\n delay: {\n type: [String, Number, Object],\n default: function _default() {\n return getDefault('defaultDelay');\n }\n },\n offset: {\n type: [String, Number],\n default: function _default() {\n return getDefault('defaultOffset');\n }\n },\n trigger: {\n type: String,\n default: function _default() {\n return getDefault('defaultTrigger');\n }\n },\n container: {\n type: [String, Object, Element, Boolean],\n default: function _default() {\n return getDefault('defaultContainer');\n }\n },\n boundariesElement: {\n type: [String, Element],\n default: function _default() {\n return getDefault('defaultBoundariesElement');\n }\n },\n popperOptions: {\n type: Object,\n default: function _default() {\n return getDefault('defaultPopperOptions');\n }\n },\n popoverClass: {\n type: [String, Array],\n default: function _default() {\n return getDefault('defaultClass');\n }\n },\n popoverBaseClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultBaseClass;\n }\n },\n popoverInnerClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultInnerClass;\n }\n },\n popoverWrapperClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultWrapperClass;\n }\n },\n popoverArrowClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultArrowClass;\n }\n },\n autoHide: {\n type: Boolean,\n default: function _default() {\n return directive.options.popover.defaultAutoHide;\n }\n },\n handleResize: {\n type: Boolean,\n default: function _default() {\n return directive.options.popover.defaultHandleResize;\n }\n },\n openGroup: {\n type: String,\n default: null\n },\n openClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultOpenClass;\n }\n },\n ariaId: {\n default: null\n }\n },\n data: function data() {\n return {\n isOpen: false,\n id: Math.random().toString(36).substr(2, 10)\n };\n },\n computed: {\n cssClass: function cssClass() {\n return _defineProperty({}, this.openClass, this.isOpen);\n },\n popoverId: function popoverId() {\n return \"popover_\".concat(this.ariaId != null ? this.ariaId : this.id);\n }\n },\n watch: {\n open: function open(val) {\n if (val) {\n this.show();\n } else {\n this.hide();\n }\n },\n disabled: function disabled(val, oldVal) {\n if (val !== oldVal) {\n if (val) {\n this.hide();\n } else if (this.open) {\n this.show();\n }\n }\n },\n container: function container(val) {\n if (this.isOpen && this.popperInstance) {\n var popoverNode = this.$refs.popover;\n var reference = this.$refs.trigger;\n var container = this.$_findContainer(this.container, reference);\n\n if (!container) {\n console.warn('No container for popover', this);\n return;\n }\n\n container.appendChild(popoverNode);\n this.popperInstance.scheduleUpdate();\n }\n },\n trigger: function trigger(val) {\n this.$_removeEventListeners();\n this.$_addEventListeners();\n },\n placement: function placement(val) {\n var _this = this;\n\n this.$_updatePopper(function () {\n _this.popperInstance.options.placement = val;\n });\n },\n offset: '$_restartPopper',\n boundariesElement: '$_restartPopper',\n popperOptions: {\n handler: '$_restartPopper',\n deep: true\n }\n },\n created: function created() {\n this.$_isDisposed = false;\n this.$_mounted = false;\n this.$_events = [];\n this.$_preventOpen = false;\n },\n mounted: function mounted() {\n var popoverNode = this.$refs.popover;\n popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n this.$_init();\n\n if (this.open) {\n this.show();\n }\n },\n deactivated: function deactivated() {\n this.hide();\n },\n beforeDestroy: function beforeDestroy() {\n this.dispose();\n },\n methods: {\n show: function show() {\n var _this2 = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n event = _ref2.event;\n _ref2.skipDelay;\n var _ref2$force = _ref2.force,\n force = _ref2$force === void 0 ? false : _ref2$force;\n\n if (force || !this.disabled) {\n this.$_scheduleShow(event);\n this.$emit('show');\n }\n\n this.$emit('update:open', true);\n this.$_beingShowed = true;\n requestAnimationFrame(function () {\n _this2.$_beingShowed = false;\n });\n },\n hide: function hide() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n event = _ref3.event;\n _ref3.skipDelay;\n\n this.$_scheduleHide(event);\n this.$emit('hide');\n this.$emit('update:open', false);\n },\n dispose: function dispose() {\n this.$_isDisposed = true;\n this.$_removeEventListeners();\n this.hide({\n skipDelay: true\n });\n\n if (this.popperInstance) {\n this.popperInstance.destroy(); // destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element\n\n if (!this.popperInstance.options.removeOnDestroy) {\n var popoverNode = this.$refs.popover;\n popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n }\n }\n\n this.$_mounted = false;\n this.popperInstance = null;\n this.isOpen = false;\n this.$emit('dispose');\n },\n $_init: function $_init() {\n if (this.trigger.indexOf('manual') === -1) {\n this.$_addEventListeners();\n }\n },\n $_show: function $_show() {\n var _this3 = this;\n\n var reference = this.$refs.trigger;\n var popoverNode = this.$refs.popover;\n clearTimeout(this.$_disposeTimer); // Already open\n\n if (this.isOpen) {\n return;\n } // Popper is already initialized\n\n\n if (this.popperInstance) {\n this.isOpen = true;\n this.popperInstance.enableEventListeners();\n this.popperInstance.scheduleUpdate();\n }\n\n if (!this.$_mounted) {\n var container = this.$_findContainer(this.container, reference);\n\n if (!container) {\n console.warn('No container for popover', this);\n return;\n }\n\n container.appendChild(popoverNode);\n this.$_mounted = true;\n this.isOpen = false;\n\n if (this.popperInstance) {\n requestAnimationFrame(function () {\n if (!_this3.hidden) {\n _this3.isOpen = true;\n }\n });\n }\n }\n\n if (!this.popperInstance) {\n var popperOptions = _objectSpread(_objectSpread({}, this.popperOptions), {}, {\n placement: this.placement\n });\n\n popperOptions.modifiers = _objectSpread(_objectSpread({}, popperOptions.modifiers), {}, {\n arrow: _objectSpread(_objectSpread({}, popperOptions.modifiers && popperOptions.modifiers.arrow), {}, {\n element: this.$refs.arrow\n })\n });\n\n if (this.offset) {\n var offset = this.$_getOffset();\n popperOptions.modifiers.offset = _objectSpread(_objectSpread({}, popperOptions.modifiers && popperOptions.modifiers.offset), {}, {\n offset: offset\n });\n }\n\n if (this.boundariesElement) {\n popperOptions.modifiers.preventOverflow = _objectSpread(_objectSpread({}, popperOptions.modifiers && popperOptions.modifiers.preventOverflow), {}, {\n boundariesElement: this.boundariesElement\n });\n }\n\n this.popperInstance = new Popper(reference, popoverNode, popperOptions); // Fix position\n\n requestAnimationFrame(function () {\n if (_this3.hidden) {\n _this3.hidden = false;\n\n _this3.$_hide();\n\n return;\n }\n\n if (!_this3.$_isDisposed && _this3.popperInstance) {\n _this3.popperInstance.scheduleUpdate(); // Show the tooltip\n\n\n requestAnimationFrame(function () {\n if (_this3.hidden) {\n _this3.hidden = false;\n\n _this3.$_hide();\n\n return;\n }\n\n if (!_this3.$_isDisposed) {\n _this3.isOpen = true;\n } else {\n _this3.dispose();\n }\n });\n } else {\n _this3.dispose();\n }\n });\n }\n\n var openGroup = this.openGroup;\n\n if (openGroup) {\n var popover;\n\n for (var i = 0; i < openPopovers.length; i++) {\n popover = openPopovers[i];\n\n if (popover.openGroup !== openGroup) {\n popover.hide();\n popover.$emit('close-group');\n }\n }\n }\n\n openPopovers.push(this);\n this.$emit('apply-show');\n },\n $_hide: function $_hide() {\n var _this4 = this;\n\n // Already hidden\n if (!this.isOpen) {\n return;\n }\n\n var index = openPopovers.indexOf(this);\n\n if (index !== -1) {\n openPopovers.splice(index, 1);\n }\n\n this.isOpen = false;\n\n if (this.popperInstance) {\n this.popperInstance.disableEventListeners();\n }\n\n clearTimeout(this.$_disposeTimer);\n var disposeTime = directive.options.popover.disposeTimeout || directive.options.disposeTimeout;\n\n if (disposeTime !== null) {\n this.$_disposeTimer = setTimeout(function () {\n var popoverNode = _this4.$refs.popover;\n\n if (popoverNode) {\n // Don't remove popper instance, just the HTML element\n popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n _this4.$_mounted = false;\n }\n }, disposeTime);\n }\n\n this.$emit('apply-hide');\n },\n $_findContainer: function $_findContainer(container, reference) {\n // if container is a query, get the relative element\n if (typeof container === 'string') {\n container = window.document.querySelector(container);\n } else if (container === false) {\n // if container is `false`, set it to reference parent\n container = reference.parentNode;\n }\n\n return container;\n },\n $_getOffset: function $_getOffset() {\n var typeofOffset = _typeof(this.offset);\n\n var offset = this.offset; // One value -> switch\n\n if (typeofOffset === 'number' || typeofOffset === 'string' && offset.indexOf(',') === -1) {\n offset = \"0, \".concat(offset);\n }\n\n return offset;\n },\n $_addEventListeners: function $_addEventListeners() {\n var _this5 = this;\n\n var reference = this.$refs.trigger;\n var directEvents = [];\n var oppositeEvents = [];\n var events = typeof this.trigger === 'string' ? this.trigger.split(' ').filter(function (trigger) {\n return ['click', 'hover', 'focus'].indexOf(trigger) !== -1;\n }) : [];\n events.forEach(function (event) {\n switch (event) {\n case 'hover':\n directEvents.push('mouseenter');\n oppositeEvents.push('mouseleave');\n break;\n\n case 'focus':\n directEvents.push('focus');\n oppositeEvents.push('blur');\n break;\n\n case 'click':\n directEvents.push('click');\n oppositeEvents.push('click');\n break;\n }\n }); // schedule show tooltip\n\n directEvents.forEach(function (event) {\n var func = function func(event) {\n if (_this5.isOpen) {\n return;\n }\n\n event.usedByTooltip = true;\n !_this5.$_preventOpen && _this5.show({\n event: event\n });\n _this5.hidden = false;\n };\n\n _this5.$_events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n }); // schedule hide tooltip\n\n oppositeEvents.forEach(function (event) {\n var func = function func(event) {\n if (event.usedByTooltip) {\n return;\n }\n\n _this5.hide({\n event: event\n });\n\n _this5.hidden = true;\n };\n\n _this5.$_events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n });\n },\n $_scheduleShow: function $_scheduleShow() {\n var skipDelay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n clearTimeout(this.$_scheduleTimer);\n\n if (skipDelay) {\n this.$_show();\n } else {\n // defaults to 0\n var computedDelay = parseInt(this.delay && this.delay.show || this.delay || 0);\n this.$_scheduleTimer = setTimeout(this.$_show.bind(this), computedDelay);\n }\n },\n $_scheduleHide: function $_scheduleHide() {\n var _this6 = this;\n\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var skipDelay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n clearTimeout(this.$_scheduleTimer);\n\n if (skipDelay) {\n this.$_hide();\n } else {\n // defaults to 0\n var computedDelay = parseInt(this.delay && this.delay.hide || this.delay || 0);\n this.$_scheduleTimer = setTimeout(function () {\n if (!_this6.isOpen) {\n return;\n } // if we are hiding because of a mouseleave, we must check that the new\n // reference isn't the tooltip, because in this case we don't want to hide it\n\n\n if (event && event.type === 'mouseleave') {\n var isSet = _this6.$_setTooltipNodeEvent(event); // if we set the new event, don't hide the tooltip yet\n // the new event will take care to hide it if necessary\n\n\n if (isSet) {\n return;\n }\n }\n\n _this6.$_hide();\n }, computedDelay);\n }\n },\n $_setTooltipNodeEvent: function $_setTooltipNodeEvent(event) {\n var _this7 = this;\n\n var reference = this.$refs.trigger;\n var popoverNode = this.$refs.popover;\n var relatedreference = event.relatedreference || event.toElement || event.relatedTarget;\n\n var callback = function callback(event2) {\n var relatedreference2 = event2.relatedreference || event2.toElement || event2.relatedTarget; // Remove event listener after call\n\n popoverNode.removeEventListener(event.type, callback); // If the new reference is not the reference element\n\n if (!reference.contains(relatedreference2)) {\n // Schedule to hide tooltip\n _this7.hide({\n event: event2\n });\n }\n };\n\n if (popoverNode.contains(relatedreference)) {\n // listen to mouseleave on the tooltip element to be able to hide the tooltip\n popoverNode.addEventListener(event.type, callback);\n return true;\n }\n\n return false;\n },\n $_removeEventListeners: function $_removeEventListeners() {\n var reference = this.$refs.trigger;\n this.$_events.forEach(function (_ref4) {\n var func = _ref4.func,\n event = _ref4.event;\n reference.removeEventListener(event, func);\n });\n this.$_events = [];\n },\n $_updatePopper: function $_updatePopper(cb) {\n if (this.popperInstance) {\n cb();\n if (this.isOpen) this.popperInstance.scheduleUpdate();\n }\n },\n $_restartPopper: function $_restartPopper() {\n if (this.popperInstance) {\n var isOpen = this.isOpen;\n this.dispose();\n this.$_isDisposed = false;\n this.$_init();\n\n if (isOpen) {\n this.show({\n skipDelay: true,\n force: true\n });\n }\n }\n },\n $_handleGlobalClose: function $_handleGlobalClose(event) {\n var _this8 = this;\n\n var touch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (this.$_beingShowed) return;\n this.hide({\n event: event\n });\n\n if (event.closePopover) {\n this.$emit('close-directive');\n } else {\n this.$emit('auto-hide');\n }\n\n if (touch) {\n this.$_preventOpen = true;\n setTimeout(function () {\n _this8.$_preventOpen = false;\n }, 300);\n }\n },\n $_handleResize: function $_handleResize() {\n if (this.isOpen && this.popperInstance) {\n this.popperInstance.scheduleUpdate();\n this.$emit('resize');\n }\n }\n }\n};\n\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n if (isIOS) {\n document.addEventListener('touchend', handleGlobalTouchend, supportsPassive ? {\n passive: true,\n capture: true\n } : true);\n } else {\n window.addEventListener('click', handleGlobalClick, true);\n }\n}\n\nfunction handleGlobalClick(event) {\n handleGlobalClose(event);\n}\n\nfunction handleGlobalTouchend(event) {\n handleGlobalClose(event, true);\n}\n\nfunction handleGlobalClose(event) {\n var touch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var _loop = function _loop(i) {\n var popover = openPopovers[i];\n\n if (popover.$refs.popover) {\n var contains = popover.$refs.popover.contains(event.target);\n requestAnimationFrame(function () {\n if (event.closeAllPopover || event.closePopover && contains || popover.autoHide && !contains) {\n popover.$_handleGlobalClose(event, touch);\n }\n });\n }\n };\n\n // Delay so that close directive has time to set values\n for (var i = 0; i < openPopovers.length; i++) {\n _loop(i);\n }\n}\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n const options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n let hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n const originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n const existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c(\"div\", {\n staticClass: \"v-popover\",\n class: _vm.cssClass\n }, [_c(\"div\", {\n ref: \"trigger\",\n staticClass: \"trigger\",\n staticStyle: {\n display: \"inline-block\"\n },\n attrs: {\n \"aria-describedby\": _vm.isOpen ? _vm.popoverId : undefined,\n tabindex: _vm.trigger.indexOf(\"focus\") !== -1 ? 0 : undefined\n }\n }, [_vm._t(\"default\")], 2), _vm._v(\" \"), _c(\"div\", {\n ref: \"popover\",\n class: [_vm.popoverBaseClass, _vm.popoverClass, _vm.cssClass],\n style: {\n visibility: _vm.isOpen ? \"visible\" : \"hidden\"\n },\n attrs: {\n id: _vm.popoverId,\n \"aria-hidden\": _vm.isOpen ? \"false\" : \"true\",\n tabindex: _vm.autoHide ? 0 : undefined\n },\n on: {\n keyup: function keyup($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) {\n return null;\n }\n\n _vm.autoHide && _vm.hide();\n }\n }\n }, [_c(\"div\", {\n class: _vm.popoverWrapperClass\n }, [_c(\"div\", {\n ref: \"inner\",\n class: _vm.popoverInnerClass,\n staticStyle: {\n position: \"relative\"\n }\n }, [_c(\"div\", [_vm._t(\"popover\", null, {\n isOpen: _vm.isOpen\n })], 2), _vm._v(\" \"), _vm.handleResize ? _c(\"ResizeObserver\", {\n on: {\n notify: _vm.$_handleResize\n }\n }) : _vm._e()], 1), _vm._v(\" \"), _c(\"div\", {\n ref: \"arrow\",\n class: _vm.popoverArrowClass\n })])])]);\n};\n\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__ = /*#__PURE__*/normalizeComponent({\n render: __vue_render__,\n staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css_248z = \".resize-observer[data-v-8859cc6c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-8859cc6c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}\";\nstyleInject(css_248z);\n\nfunction install(Vue) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (install.installed) return;\n install.installed = true;\n var finalOptions = {};\n merge(finalOptions, defaultOptions, options);\n plugin.options = finalOptions;\n directive.options = finalOptions;\n Vue.directive('tooltip', directive);\n Vue.directive('close-popover', vclosepopover);\n Vue.component('VPopover', __vue_component__);\n}\nvar VTooltip = directive;\nvar VClosePopover = vclosepopover;\nvar VPopover = __vue_component__;\nvar plugin = {\n install: install,\n\n get enabled() {\n return state.enabled;\n },\n\n set enabled(value) {\n state.enabled = value;\n }\n\n}; // Auto-install\n\nvar GlobalVue = null;\n\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n GlobalVue.use(plugin);\n}\n\nexport default plugin;\nexport { VClosePopover, VPopover, VTooltip, createTooltip, destroyTooltip, install };\n","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcContent,{attrs:{\"app-name\":\"settings\"}},[_c('router-view',{attrs:{\"name\":\"navigation\"}}),_vm._v(\" \"),_c('router-view'),_vm._v(\" \"),_c('router-view',{attrs:{\"name\":\"sidebar\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./SettingsApp.vue?vue&type=template&id=288003b1\"\nimport script from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { loadState } from '@nextcloud/initial-state';\nconst appstoreEnabled = loadState('settings', 'appstoreEnabled', true);\n// Dynamic loading\nconst AppStore = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStore.vue');\nconst AppStoreNavigation = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreNavigation.vue');\nconst AppStoreSidebar = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreSidebar.vue');\nconst UserManagement = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagement.vue');\nconst UserManagementNavigation = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagementNavigation.vue');\nconst routes = [\n {\n name: 'users',\n path: '/:index(index.php/)?settings/users',\n components: {\n default: UserManagement,\n navigation: UserManagementNavigation,\n },\n props: true,\n children: [\n {\n path: ':selectedGroup',\n name: 'group',\n },\n ],\n },\n {\n path: '/:index(index.php/)?settings/apps',\n name: 'apps',\n redirect: {\n name: 'apps-category',\n params: {\n category: appstoreEnabled ? 'discover' : 'installed',\n },\n },\n components: {\n default: AppStore,\n navigation: AppStoreNavigation,\n sidebar: AppStoreSidebar,\n },\n children: [\n {\n path: ':category',\n name: 'apps-category',\n children: [\n {\n path: ':id',\n name: 'apps-details',\n },\n ],\n },\n ],\n },\n];\nexport default routes;\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { generateUrl } from '@nextcloud/router';\nimport Vue from 'vue';\nimport Router from 'vue-router';\nimport routes from './routes.ts';\nVue.use(Router);\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl(''),\n linkActiveClass: 'active',\n routes,\n});\nexport default router;\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { n, t } from '@nextcloud/l10n';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport VTooltipPlugin from 'v-tooltip';\nimport Vue from 'vue';\nimport Vuex from 'vuex';\nimport { sync } from 'vuex-router-sync';\nimport SettingsApp from './views/SettingsApp.vue';\nimport router from './router/index.ts';\nimport { useStore } from './store/index.js';\n// CSP config for webpack dynamic chunk loading\n__webpack_nonce__ = getCSPNonce();\n// bind to window\nVue.prototype.t = t;\nVue.prototype.n = n;\nVue.use(PiniaVuePlugin);\nVue.use(VTooltipPlugin, { defaultHtml: false });\nVue.use(Vuex);\nconst store = useStore();\nsync(store, router);\nconst pinia = createPinia();\nexport default new Vue({\n router,\n store,\n pinia,\n render: (h) => h(SettingsApp),\n el: '#content',\n});\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('settings')\n .detectUser()\n .build();\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","exports.sync = function (store, router, options) {\n var moduleName = (options || {}).moduleName || 'route'\n\n store.registerModule(moduleName, {\n namespaced: true,\n state: cloneRoute(router.currentRoute),\n mutations: {\n 'ROUTE_CHANGED': function ROUTE_CHANGED (state, transition) {\n store.state[moduleName] = cloneRoute(transition.to, transition.from)\n }\n }\n })\n\n var isTimeTraveling = false\n var currentPath\n\n // sync router on store change\n var storeUnwatch = store.watch(\n function (state) { return state[moduleName]; },\n function (route) {\n var fullPath = route.fullPath;\n if (fullPath === currentPath) {\n return\n }\n if (currentPath != null) {\n isTimeTraveling = true\n router.push(route)\n }\n currentPath = fullPath\n },\n { sync: true }\n )\n\n // sync store on router navigation\n var afterEachUnHook = router.afterEach(function (to, from) {\n if (isTimeTraveling) {\n isTimeTraveling = false\n return\n }\n currentPath = to.fullPath\n store.commit(moduleName + '/ROUTE_CHANGED', { to: to, from: from })\n })\n\n return function unsync () {\n // On unsync, remove router hook\n if (afterEachUnHook != null) {\n afterEachUnHook()\n }\n\n // On unsync, remove store watch\n if (storeUnwatch != null) {\n storeUnwatch()\n }\n\n // On unsync, unregister Module with store\n store.unregisterModule(moduleName)\n }\n}\n\nfunction cloneRoute (to, from) {\n var clone = {\n name: to.name,\n path: to.path,\n hash: to.hash,\n query: to.query,\n params: to.params,\n fullPath: to.fullPath,\n meta: to.meta\n }\n if (from) {\n clone.from = cloneRoute(from)\n }\n return Object.freeze(clone)\n}\n\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"3239\":\"settings-users\",\"4529\":\"settings-apps-view\"}[chunkId] || chunkId) + \"-\" + chunkId + \".js?v=\" + {\"23\":\"de5d76438bc8be7b2828\",\"249\":\"2e3ea1454441bc8ad0ca\",\"594\":\"42559babdb08cd8462d3\",\"620\":\"9afba54f1bb9c5700ce0\",\"2391\":\"583add71333f4a7828d7\",\"2880\":\"e173b56d1e35791ae43e\",\"3239\":\"eb98239f2d18a34d52cd\",\"4325\":\"6b1845748e1acf68c63b\",\"4529\":\"ef8cdc3030bbaec722df\",\"5862\":\"89bf17a66ae45dcd0971\",\"7145\":\"8a0ec35632f81f53660b\",\"7471\":\"e4533847625f31a740b2\",\"7591\":\"2406514b7ce03d6c7ca8\",\"8339\":\"fa979d926218e7f6f617\",\"9381\":\"1e5cd6afa2665f6a78fe\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2689;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2689: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud_ui_legacy\"] = self[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(31960)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","baseIsEqual","module","exports","value","other","sanitize","url","replace","requireAdmin","confirmPassword","get","options","axios","post","data","patch","put","delete","params","state","apps","bundles","loadState","categories","updateCount","loading","gettingCategoriesPromise","appApiEnabled","mutations","APPS_API_FAILURE","error","showError","t","response","message","isHTML","logger","initCategories","updateCategories","categoriesPromise","setUpdateCount","addCategory","category","push","appendCategories","categoriesArray","setAllApps","setError","appId","Array","isArray","forEach","_id","find","app","id","clearError","enableApp","groups","active","setInstallState","canInstall","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","updateApp","version","update","resetApps","reset","startLoading","Vue","stopLoading","actions","context","api","then","commit","generateUrl","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","catch","dispatch","forceEnableApp","finally","getAllApps","getCategories","shouldRefetchCategories","categoriesPromiseResponse","length","getters","isAppApiEnabled","getAppBundles","getUpdateCount","getCategoryById","selectedCategoryId","setAppConfig","key","generateOcsUrl","serverData","setServerData","getServerData","naturalCollator","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","usersSettings","localStorage","getBuilder","persist","build","defaults","name","usercount","disabled","canAdd","canRemove","users","getSubAdminGroups","systemGroups","orderBy","sortGroups","GroupSorting","UserCount","minPasswordLength","usersOffset","usersLimit","disabledUsersOffset","disabledUsersLimit","userCount","showConfig","showStoragePath","getItem","showUserBackend","showFirstLogin","showLastLogin","showNewUserForm","showLanguages","appendUsers","usersObj","existingUsers","map","newUsers","Object","values","filter","includes","concat","updateDisabledUsers","setPasswordPolicyMinLength","addGroup","newGroup","group","unshift","renameGroup","gid","displayName","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","userid","user","enabled","removeUserGroup","indexOf","addUserSubAdmin","subadmin","removeUserSubAdmin","deleteUser","userIndex","this","actionType","addUserData","ocs","enableDisableUser","updateUserCounts","recentGroup","disabledGroup","userGroup","warn","setUserData","humanValue","parseFileSize","resetUsers","resetGroups","setShowConfig","setItem","JSON","stringify","setGroupSorting","sorting","oldValue","String","getUsers","getGroups","subAdminGroups","getSortedGroups","sort","a","b","numA","numB","compare","getGroupSorting","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getDisabledUsersOffset","getDisabledUsersLimit","getUserCount","getShowConfig","CancelToken","searchRequestCancelSource","searchUsers","offset","limit","search","getUser","userId","cancel","source","trim","encodeURIComponent","cancelToken","token","usersCount","keys","getRecentUsers","getDisabledUsers","limitParam","getUsersFromList","getUsersFromGroup","groupid","groupId","getCapabilities","password_policy","minLength","wipeUserDevices","Promise","reject","Error","addUser","password","email","quota","language","manager","userStatus","sendWelcomeMail","API_FAILURE","meta","store","useStore","Store","modules","settings","oc","strict","object","baseRest","isIterateeCall","assigner","sources","index","customizer","undefined","guard","_typeof","o","Symbol","iterator","constructor","prototype","toPropertyKey","i","e","toPrimitive","call","r","TypeError","_defineProperty","defineProperty","enumerable","configurable","writable","_defineProperties","isBrowser","document","navigator","timeoutDuration","longerTimeoutBrowsers","userAgent","debounce","fn","called","resolve","scheduled","isFunction","functionToCheck","toString","getStyleComputedProperty","element","property","nodeType","css","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","test","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","documentElement","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","firstElementChild","element1root","getScroll","upperSide","arguments","html","scrollingElement","getBordersSize","styles","axis","sideA","sideB","parseFloat","getSize","computedStyle","Math","max","parseInt","getWindowSizes","height","width","createClass","defineProperties","target","props","descriptor","Constructor","protoProps","staticProps","obj","_extends","assign","hasOwnProperty","getClientRect","offsets","right","left","bottom","top","getBoundingClientRect","rect","scrollTop","scrollLeft","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","fixedPosition","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","subtract","modifier","includeScroll","isFixed","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","padding","boundariesElement","boundaries","excludeScroll","relativeOffset","innerWidth","innerHeight","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","_getWindowSizes","isPaddingNumber","computeAutoPlacement","placement","refRect","rects","sortedAreas","area","_ref","filteredAreas","_ref2","computedPlacement","variation","split","getReferenceOffsets","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","arr","check","runModifiers","modifiers","ends","slice","prop","cur","match","console","isDestroyed","instance","arrowStyles","attributes","flipped","positionFixed","flip","originalPlacement","position","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","some","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","destroy","removeAttribute","willChange","disableEventListeners","removeOnDestroy","removeChild","getWindow","attachToScrollParents","event","callback","scrollParents","isBody","addEventListener","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","removeEventListener","removeEventListeners","isNumeric","n","isNaN","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","reverse","shift","basePlacement","shiftvariation","_data$offsets","isVertical","side","shiftOffsets","useHeight","fragments","frag","divider","splitRegex","ops","op","mergeWithPrevious","reduce","str","toValue","index2","parseOffset","preventOverflow","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","min","keepTogether","floor","opSide","arrow","_data$offsets$arrow","arrowElement","querySelector","len","sideCapitalized","toLowerCase","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","round","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","hide","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","v","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","applyStyle","setAttribute","onLoad","modifierOptions","Defaults","Popper","_this","classCallCheck","requestAnimationFrame","bind","jquery","Utils","g","PopperUtils","initCompat","init","ua","msie","substring","rv","edge","getInternetExplorerVersion","normalizeComponent","template","script","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","render","staticRenderFns","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","originalRender","h","existing","beforeCreate","__vue_script__","emitOnMount","type","Boolean","default","ignoreWidth","ignoreHeight","mounted","$nextTick","_w","$el","_h","emitSize","createElement","_resizeObject","onload","addResizeHandlers","appendChild","beforeDestroy","removeResizeHandlers","methods","compareAndNotify","$emit","contentDocument","__vue_render__","$createElement","_self","_c","staticClass","attrs","tabindex","_withStripped","__vue_component__","install","component","GlobalVue","use","SVGAnimatedString","convertToArray","addClasses","classes","classList","newClasses","className","baseVal","newClass","SVGElement","join","removeClasses","supportsPassive","opts","ownKeys$2","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","apply","_objectSpread$2","getOwnPropertyDescriptors","DEFAULT_OPTIONS","container","delay","title","trigger","openTooltips","Tooltip","_reference","_options","_classCallCheck","evt","relatedreference","toElement","relatedTarget","_tooltipNode","evt2","relatedreference2","_scheduleHide","show","_isOpen","_init","_show","_hide","_dispose","_classes","content","_setContent","classesUpdated","directive","defaultClass","isEqual","setClasses","getOptions","needPopperUpdate","needRestart","isOpen","dispose","popperInstance","events","_isDisposed","_enableDocumentTouch","_setEventListeners","$_originalTitle","getAttribute","_this2","tooltipGenerator","innerHTML","tooltipNode","childNodes","ariaId","random","substr","autoHide","_this3","asyncContent","_applyContent","_this4","allowHtml","rootNode","titleNode","innerSelector","firstChild","loadingClass","loadingContent","asyncResult","innerText","clearTimeout","_disposeTimer","updateClasses","_ensureShown","_this5","display","_create","_findContainer","_append","popperOptions","arrowSelector","_this6","_noLongerOpen","disposeTime","disposeTimeout","_removeTooltipNode","_this7","_events","func","_this8","directEvents","oppositeEvents","hideOnTargetClick","usedByTooltip","_scheduleShow","_this9","computedDelay","_scheduleTimer","_this10","_setTooltipNodeEvent","ownKeys$1","_objectSpread$1","_onDocumentTouch","capture","positions","defaultOptions","defaultPlacement","defaultTargetClass","defaultHtml","defaultTemplate","defaultArrowSelector","defaultInnerSelector","defaultDelay","defaultTrigger","defaultOffset","defaultContainer","defaultBoundariesElement","defaultPopperOptions","defaultLoadingClass","defaultLoadingContent","defaultHideOnTargetClick","popover","defaultBaseClass","defaultWrapperClass","defaultInnerClass","defaultArrowClass","defaultOpenClass","defaultAutoHide","defaultHandleResize","typeofOffset","getPlacement","pos","getContent","destroyTooltip","_tooltip","_tooltipOldShow","_tooltipTargetClasses","tooltip","setContent","setOptions","_vueEl","targetClasses","createTooltip","unbind","addListeners","onTouchStart","removeListeners","onTouchEnd","onTouchCancel","currentTarget","closePopover","$_vclosepopover_touch","closeAllPopover","$_closePopoverModifiers","all","changedTouches","touch","$_vclosepopover_touchPoint","firstTouch","abs","screenY","screenX","vclosepopover","ownKeys","_objectSpread","getDefault","isIOS","MSStream","openPopovers","Element","components","ResizeObserver","open","Number","popoverClass","popoverBaseClass","popoverInnerClass","popoverWrapperClass","popoverArrowClass","handleResize","openGroup","openClass","computed","cssClass","popoverId","watch","val","oldVal","popoverNode","$refs","$_findContainer","$_removeEventListeners","$_addEventListeners","$_updatePopper","handler","deep","created","$_isDisposed","$_mounted","$_events","$_preventOpen","$_init","deactivated","skipDelay","_ref2$force","force","$_scheduleShow","$_beingShowed","_ref3","$_scheduleHide","$_show","$_disposeTimer","hidden","$_getOffset","$_hide","$_scheduleTimer","$_setTooltipNodeEvent","event2","_ref4","cb","$_restartPopper","$_handleGlobalClose","$_handleResize","handleGlobalClose","_loop","_vm","class","ref","staticStyle","_t","_v","visibility","on","keyup","$event","_k","keyCode","notify","_e","insertAt","head","getElementsByTagName","insertBefore","styleSheet","cssText","createTextNode","styleInject","plugin","finalOptions","merge","global","_defineComponent","__name","setup","__props","__sfc","NcContent","_setupProxy","path","UserManagement","navigation","UserManagementNavigation","redirect","AppStore","AppStoreNavigation","sidebar","AppStoreSidebar","Router","mode","base","linkActiveClass","routes","__webpack_nonce__","getCSPNonce","PiniaVuePlugin","VTooltipPlugin","Vuex","sync","router","pinia","createPinia","SettingsApp","getLoggerBuilder","setApp","detectUser","assignMergeValue","cloneBuffer","cloneTypedArray","copyArray","initCloneObject","isArguments","isArrayLikeObject","isBuffer","isObject","isPlainObject","isTypedArray","safeGet","toPlainObject","srcIndex","mergeFunc","stack","objValue","srcValue","stacked","newValue","isCommon","isArr","isBuff","isTyped","set","baseMerge","createAssigner","cloneRoute","to","from","clone","query","fullPath","freeze","moduleName","registerModule","namespaced","currentRoute","transition","currentPath","isTimeTraveling","storeUnwatch","route","afterEachUnHook","afterEach","unregisterModule","copyObject","keysIn","isArrayLike","isObjectLike","Stack","baseFor","baseMergeDeep","baseAssignValue","eq","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","m","O","chunkIds","notFulfilled","Infinity","fulfilled","j","every","getter","__esModule","d","definition","f","chunkId","promises","u","globalThis","Function","l","done","needAttach","scripts","s","charset","nc","src","onScriptComplete","prev","onerror","timeout","doneFns","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","tagName","p","baseURI","self","href","installedChunks","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file